Memly
ChatGPT, Claude 등 MCP 호환 AI용

AI 대화에서Memly 카드를바로 정리하기

Memly MCP를 연결하면 AI에게 카드를 저장하고, 찾고, 수정하고, 삭제하도록 요청할 수 있습니다. 무료 사용자는 deck과 card 조회를 사용할 수 있고, Plus/Pro 사용자는 생성·수정·삭제·복원까지 사용할 수 있습니다.

Remote MCP

엔드포인트

https://app.memly.ai/mcp

입력할 URL

AI 클라이언트의 Remote MCP server URL에는 https://app.memly.ai/mcp 를 입력합니다.

무료는 조회, 유료는 편집

deck과 card를 보는 작업은 무료 사용자도 사용할 수 있습니다. 생성, 수정, 삭제, 복원처럼 Memly를 변경하는 작업은 Plus/Pro 전용입니다.

내 계정만 접근

커넥터는 승인한 Memly 계정의 deck과 card만 다룹니다. 다른 사용자의 데이터를 보거나 변경할 수 없습니다.

설정 절차

AI 클라이언트 설정 절차

사용할 AI 클라이언트를 선택하면 해당 연결 절차만 표시됩니다. Claude와 ChatGPT를 모두 설정할 필요는 없습니다.

공통 준비

Memly 계정 준비

Memly MCP는 사용자별 OAuth 인증으로 연결됩니다. 공유 키나 고정 계정은 사용하지 않습니다.

  • Plus 또는 Pro가 활성화된 Memly 계정으로 로그인합니다.
  • 기존 덱에 저장하려면 Memly에서 덱 이름을 먼저 확인합니다.
  • AI 클라이언트에는 https://app.memly.ai/mcp 를 remote MCP server URL로 입력합니다.

선택됨

Claude에 추가하기

Claude의 커스텀 커넥터에서는 이름과 remote MCP server URL만 입력하면 됩니다.

  1. 1Claude의 설정 또는 Customize에서 Connectors를 엽니다.
  2. 2Add custom connector를 선택하고 이름에 Memly를 입력합니다.
  3. 3Remote MCP server URL에 https://app.memly.ai/mcp 를 입력합니다.
  4. 4OAuth Client ID와 OAuth Client Secret은 비워 둡니다.
  5. 5Memly 동의 화면에서 표시된 Memly 계정을 확인하고 연결을 승인합니다.

연결 후 list_decks와 import_flashcards가 보이면 성공입니다.

문제가 생기면: 인증 실패 시 확인할 것

오래된 커넥터 등록 정보가 남아 있으면 서버 수정 후에도 같은 인증 오류가 반복될 수 있습니다.

  1. 1Memly 커넥터를 삭제한 뒤 같은 URL로 다시 추가합니다.
  2. 2URL은 가능하면 끝에 슬래시가 없는 https://app.memly.ai/mcp 를 사용합니다.
  3. 3동의 화면의 OAuth scopes가 email과 profile만인지 확인합니다.
  4. 4승인 후 Connected 상태 또는 도구 목록이 표시되는지 확인합니다.

Authorization with the MCP server failed가 계속되면 표시된 ofid와 발생 시각을 함께 공유해 주세요.

흐름

사용 흐름

일반 대화처럼 요청하면 됩니다. Memly는 변경 전마다 인증, 플랜, 소유권, 콘텐츠 안전성을 확인합니다.

  1. 01

    1. Memly 연결

    ChatGPT, Claude 또는 다른 MCP 호환 AI 클라이언트에 Memly Remote MCP URL을 추가합니다.

  2. 02

    2. 내 계정 승인

    동의 화면에 표시된 Memly 계정을 확인하고 연결을 승인합니다.

  3. 03

    3. 자연어로 요청

    「이 설명을 카드 5장으로 만들어줘」, 「에도 시대 deck에 추가해줘」처럼 요청합니다.

  4. 04

    4. Memly에 반영

    AI가 Memly tool을 호출하면 Memly가 서버에서 확인한 뒤 저장, 수정, 삭제, 복원을 실행합니다.

MCP

Memly MCP로 할 수 있는 일

이번 구현으로 새 카드 추가뿐 아니라 deck과 card의 조회, 편집, 삭제, 복원까지 사용할 수 있습니다.

deck 찾기와 보기

AI가 Memly deck 목록을 확인하고 이름으로 저장할 deck을 찾을 수 있습니다.

card 검색과 표시

카드 텍스트를 검색하고, 앞면·뒷면·태그를 확인할 수 있습니다. 무료 사용자도 조회할 수 있습니다.

card 추가와 수정

Plus/Pro 사용자는 새 카드를 추가하고 기존 카드의 문장, 태그, 저장 deck을 수정할 수 있습니다.

삭제와 복원

Plus/Pro 사용자는 card와 deck을 삭제할 수 있습니다. 필요할 때 삭제된 card와 deck을 복원하는 tool도 제공됩니다.

안전성

안전성과 제한

AI 클라이언트가 보낸 요청이라도 Memly는 신뢰되지 않은 입력으로 보고, 누가 무엇을 변경할 수 있는지와 콘텐츠가 안전한지 확인합니다.

인증과 권한

OAuth 2.1 bearer token, Plus/Pro 구독, deck 소유권을 확인합니다.

입력 내용 확인

필수 항목, 글자 수, 카드 수, 태그 수, 기본 카드 형식을 저장 전에 확인합니다.

HTML 정제

rich HTML은 허용 태그만 남깁니다. script, iframe, style, 이벤트 속성은 저장하지 않습니다.

쓰기 전 동의

카드 생성은 쓰기 작업이므로 AI 클라이언트가 실행 내용을 표시하고 사용자 확인을 받도록 안내합니다.

요청 예시

AI에게 이렇게 요청하세요

전문 용어 없이 평소처럼 말해도 됩니다. 저장 전에 확인하고 싶다면 그 내용도 함께 요청하세요.

새 카드 만들기

「이 설명을 카드 5장으로 만들고 에도 시대 deck에 추가해줘」

기존 카드 수정

「도쿠가와 이에나리 카드를 찾아서 답변을 조금 짧게 고쳐줘」

테스트 내용 삭제

「Test deck을 삭제하고 안에 있는 카드도 함께 지워줘」

좋은 Memly 카드 규칙

  • 카드 한 장에는 하나의 개념, 정의, 판단 기준, 절차, 비교만 담습니다.
  • 답변은 원본을 다시 열지 않아도 이해될 만큼 독립적으로 작성합니다.
  • 용어뿐 아니라 이유, 차이, 예시, 흔한 오해도 카드로 만듭니다.
  • 같은 사실을 표현만 바꾼 중복 카드는 만들지 않습니다.
  • 전문 용어와 고유명사는 정확히 유지하고 설명은 지정 언어로 작성합니다.

주요 오류

401 Unauthorized

인증 필요

Memly에 로그인하고 MCP 연결을 승인하세요.

403 Subscription required

Plus/Pro 전용

활성 Plus 또는 Pro 구독이 필요합니다.

400 Invalid cards

형식 오류

빈 cards, 필수 필드 누락, 길이 초과, 허용되지 않는 HTML을 수정하세요.

404 Deck not found

Deck 불일치

deckId가 없거나 인증된 사용자의 deck이 아닙니다.

JSON-RPC protocol error

연결/인증 오류

인증 누락, scope 부족, 세션 문제처럼 MCP 요청 자체를 처리할 수 없을 때 반환합니다.

Tool result isError: true

Tool 실행 오류

tool 호출은 도착했지만 잘못된 카드나 deck 소유권 불일치 때문에 가져오기에 실패했을 때 반환합니다.

개발자용 상세

AI 클라이언트용 상세 사양

일반 사용자는 이 섹션을 읽을 필요가 없습니다. MCP 클라이언트나 개발자가 새 카드를 추가할 때 사용하는 세부 형식을 확인하기 위한 내용입니다.

{}MCP tool schema

card 추가

새 카드는 import_flashcards를 통해 추가됩니다.

저장 위치

기존 deck을 지정하거나 deck 이름으로 새로 만들고 재사용할 수 있습니다.

결과

Memly는 저장 위치, 생성 수, 건너뛴 수, 치명적이지 않은 주의 사항을 반환합니다.

안전성

인증, Plus/Pro 권한, 소유권, HTML 정제를 Memly 서버에서 매번 확인합니다.

전체 JSON Schema 열기
{
  "name": "import_flashcards",
  "description": "Import flashcards generated by the AI client into a Memly deck. Use this only after the user asks to save cards to Memly.",
  "inputSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "deckId": {
        "type": "integer",
        "description": "Existing Memly deck ID owned by the authenticated user."
      },
      "deckTitle": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120,
        "description": "Deck title to create or reuse when deckId is not provided."
      },
      "sourceTitle": {
        "type": "string",
        "maxLength": 160,
        "description": "Optional source title, document name, URL title, or conversation topic."
      },
      "language": {
        "type": "string",
        "enum": ["ja", "en", "ko"],
        "description": "Main language used for the card explanations."
      },
      "cards": {
        "type": "array",
        "minItems": 1,
        "maxItems": 100,
        "items": {
          "type": "object",
          "additionalProperties": false,
          "required": ["front", "back"],
          "properties": {
            "front": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000,
              "description": "Question or prompt side of the flashcard. Ask one clear recall target; do not send FSRS, user_id, due, stability, or difficulty fields."
            },
            "back": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4000,
              "description": "Answer or explanation side of the flashcard. Keep it compact but self-contained."
            },
            "frontRich": {
              "type": "string",
              "maxLength": 4000,
              "description": "Optional sanitized HTML. Allowed tags: p, strong, em, mark, ul, ol, li, blockquote, h4, h5, br, code."
            },
            "backRich": {
              "type": "string",
              "maxLength": 8000,
              "description": "Optional sanitized HTML using the same allowed tag set."
            },
            "tags": {
              "type": "array",
              "description": "Short organization labels created by the AI client. Do not include private account identifiers.",
              "maxItems": 12,
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 40
              }
            }
          }
        }
      }
    },
    "required": ["cards"],
    "oneOf": [
      { "required": ["deckId"] },
      { "required": ["deckTitle"] }
    ]
  },
  "outputSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "deckId": {
        "type": "integer",
        "description": "Memly deck ID used for the import."
      },
      "deckTitle": {
        "type": "string",
        "description": "Memly deck title used for the import."
      },
      "importedCount": {
        "type": "integer",
        "minimum": 0,
        "description": "Number of cards created."
      },
      "skippedCount": {
        "type": "integer",
        "minimum": 0,
        "description": "Number of cards skipped as duplicates or invalid after validation."
      },
      "warnings": {
        "type": "array",
        "description": "Non-fatal import notes, such as sanitized HTML or duplicate tags.",
        "items": {
          "type": "string"
        }
      }
    },
    "required": ["deckId", "deckTitle", "importedCount"]
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "openWorldHint": false
  }
}

Memly MCP 연결 준비

Memly를 AI 클라이언트에 연결하세요. 무료 사용자는 조회를, Plus/Pro 사용자는 deck과 card 정리를 대화에서 바로 사용할 수 있습니다.