Memly MCP 연동의 구조와 사용법
Claude나 ChatGPT에서 만든 카드를 Memly에 저장하고 FSRS 복습으로 연결하는 전체 흐름을 설명합니다.
ChatGPT나 Claude에 Memly를 연결하면 대화 흐름을 끊지 않고 카드를 만들고, 찾고, 수정할 수 있습니다. 연결에 쓰는 MCP는 AI가 외부 서비스를 다룰 수 있게 해 주는 공통 규격입니다. 외우고 싶은 내용이 나온 그 자리에서 바로 부탁할 수 있어서, 나중에 앱을 다시 열 필요가 없습니다. 무료 사용자는 검색과 조회까지, Plus / Pro 사용자는 생성과 수정까지 사용할 수 있습니다.
AI에 URL 등록하기
Memly에서 승인하기
대화로 카드 다루기
https://app.memly.ai/mcp입력할 URL
ChatGPT나 Claude 설정에서 서버 주소를 입력하는 칸에 https://app.memly.ai/mcp를 넣습니다. 칸 이름은 Claude에서는 Remote MCP server URL, ChatGPT에서는 서버 URL입니다.
무료는 조회, 유료는 편집
덱과 카드를 보는 것은 무료 사용자도 할 수 있습니다. 생성, 수정, 삭제, 복원처럼 Memly를 변경하는 작업은 Plus/Pro 전용입니다.
내 계정만 접근
커넥터는 승인한 Memly 계정의 덱과 카드만 다룹니다. 다른 사용자의 데이터를 보거나 변경할 수 없습니다.
01연결 절차
사용할 AI를 선택하면 그 절차만 표시됩니다. Claude와 ChatGPT를 모두 설정할 필요는 없습니다. 어디를 누르고 어떻게 되면 성공인지 한 단계씩 확인할 수 있습니다.
연결할 때는 Memly 화면에서 본인 계정으로 로그인하고 직접 허용을 누릅니다. 이것이 여기서 말하는 OAuth 방식입니다. API 키 같은 문자열을 직접 발급하거나 붙여넣을 일은 없습니다. Claude든 ChatGPT든 시작하기 전 준비 과정은 같습니다.
필요한 환경claude.ai 웹 버전. 이름과 URL 두 가지만 입력하면 됩니다. 무료 플랜에서도 커스텀 커넥터를 최대 1개까지 추가할 수 있습니다. Team이나 Enterprise에서는 관리자가 조직 설정에서 추가한 뒤, 각 구성원이 그 커넥터에 연결합니다.
왼쪽 사이드바에서 사용자 지정을 열거나, 계정 메뉴의 설정에서 사용자 지정 안의 커넥터를 선택합니다. 예전 커넥터 설정 페이지로 바로 들어가면 커넥터가 사용자 지정으로 옮겨졌다는 안내만 나오고, 그 화면에서는 추가할 수 없습니다.
이렇게 나오면 성공지금까지 추가한 커넥터 목록과 오른쪽 위의 '추가' 버튼이 보이는 화면이 됩니다.

화면 아래가 아니라 목록 오른쪽 위의 '추가'를 누릅니다. 열린 메뉴의 두 번째 항목이 '커스텀 커넥터 추가'입니다.
이렇게 나오면 성공이름과 Remote MCP server URL, 두 개의 입력란이 있는 창이 열립니다.

입력하는 것은 위의 두 가지, 이름과 Remote MCP server URL뿐입니다. 그 아래 고급 설정에 있는 OAuth Client ID와 Client Secret은 선택 항목이므로 비워 두면 됩니다.
이렇게 나오면 성공두 입력란이 비어 있는 상태입니다.

이름은 Memly처럼 알아보기 쉬운 것으로 정합니다. URL 칸에 아래 값을 그대로 붙여넣은 뒤 '추가'를 누릅니다.
https://app.memly.ai/mcp이렇게 나오면 성공커넥터 목록에 Memly가 추가됩니다. 아직 연결 전이므로, 그 줄의 '연결'을 누르면 인증 화면으로 넘어갑니다.

'연결'을 누르면 Memly 인증 화면으로 넘어갑니다. 승인하기 전에 세 가지를 확인하세요. 접근을 요청한 앱이 Claude인지, 표시된 Memly 계정이 본인 것인지, 요청하는 권한이 이메일과 프로필 확인뿐인지입니다. 세 가지가 맞으면 승인합니다.
이렇게 나오면 성공Claude로 돌아오면 Memly가 '연결됨' 상태로 표시됩니다.

커넥터 목록에서 Memly를 열면 AI가 호출할 수 있는 도구 목록이 나옵니다. 읽기 전용 도구와 쓰기·삭제 도구가 나뉘어 보이면 연결된 것입니다. 대화에서 쓸 때는 입력창 옆의 '+'에서 커넥터를 열고 Memly를 켜 주세요.
이렇게 나오면 성공덱 조회부터 카드 추가·수정·삭제·복원까지, 관련 도구가 모두 목록에 나옵니다.

Claude와 ChatGPT의 실제 설정 화면입니다. 개인정보에 해당하는 부분은 가렸습니다.
막히는 지점은 대체로 정해져 있습니다. 위에서부터 확인해 보세요.
전에 추가한 커넥터에 예전 인증 정보가 남아 있을 수 있습니다. Memly 커넥터를 지우고 같은 URL로 다시 추가해 보세요.
빨간 배너로 '커넥터 이름이 이미 존재합니다'가 잠깐 떴다가 사라졌을 수 있습니다. 중복을 확인하는 것은 이름뿐이므로 다른 이름으로 하면 만들어집니다.
목록의 '…'에서 제거하는 것만으로는 이름이 풀리지 않습니다. 완전히 지우려면 그 플러그인의 '…' → '관리'로 상세를 열고, 오른쪽 위의 '…'에서 '삭제'를 선택하세요.
https://app.memly.ai/mcp가 제대로 들어갔는지, 앞뒤에 공백이 섞이지 않았는지 확인하세요. 끝에 슬래시가 붙어 있어도 동작하므로 그것은 원인이 아닙니다.
무료 플랜은 조회만 가능합니다. 쓰기에는 Plus나 Pro가 필요하니, 구독이 있는 계정으로 인증했는지 확인하세요.
ChatGPT나 Claude 화면에서 Memly가 켜져 있는지, 그 대화에서 도구 사용이 허용됐는지 확인하세요. "Memly 덱 목록 보여줘"처럼 Memly를 직접 언급해 요청하면 확실합니다.
오류 화면에 'ofid'로 시작하는 식별자가 표시됩니다. 이 식별자와 실패한 시각을 함께 적어 문의해 주세요. 서버 로그와 대조해 확인하겠습니다.
02플랜별
조회는 무료 플랜에서도 할 수 있습니다. Memly의 내용을 바꾸는 작업만 Plus / Pro 전용입니다.
| 할 수 있는 일 | 사용되는 도구 | 무료 | Plus / Pro |
|---|---|---|---|
| 덱 목록과 ID 확인하기 | list_decks | 가능 | 가능 |
| 카드 전체에서 검색하기 | search_flashcardssearch | 가능 | 가능 |
| 카드의 앞면·뒷면·태그 보기 | get_flashcardfetch | 가능 | 가능 |
| 지금 플랜에서 쓰기가 되는지 확인하기 | get_account_status | 가능 | 가능 |
| 덱 만들기·이름 바꾸기 | create_deckupdate_deck | 불가 | 가능 |
| AI가 만든 카드 추가하기 | import_flashcards | 불가 | 가능 |
| 기존 카드 수정하기 | update_flashcard | 불가 | 가능 |
| 카드나 덱 삭제하기 | delete_flashcardsdelete_deck | 불가 | 가능 |
| 삭제한 것 복원하기 | restore_flashcardsrestore_deck | 불가 | 가능 |
03도구
연결하면 AI 클라이언트에 아래 도구들이 보입니다. 이름을 외울 필요는 없지만, 방금 무슨 일이 일어났는지 알고 싶을 때 참고할 수 있습니다.
무료 플랜에서도 사용할 수 있습니다. Memly의 내용은 바뀌지 않습니다.
list_decks내 덱 목록과 ID를 돌려줍니다. 기존 덱에 저장하기 전 단계로 자주 쓰입니다.
search_flashcards카드 전체에서 단어로 검색합니다. 덱을 좁혀서 찾을 수도 있습니다.
get_flashcard카드 한 장의 앞면·뒷면·태그를 가져옵니다.
searchChatGPT deep research 등이 찾는, 이름이 정해진 검색 도구입니다. 이를 사용하는 클라이언트의 검색 요청을 받습니다.
fetchsearch와 짝을 이루는 조회 도구입니다. 검색에 걸린 대상의 내용을 가져옵니다.
get_account_status인증된 계정이 쓰기를 할 수 있는지 알려줍니다.
Plus / Pro가 필요합니다. 대부분의 AI 클라이언트는 실행 전에 내용을 보여 주고 확인을 요청합니다.
create_deck새 덱을 만듭니다.
update_deck덱 이름 같은 정보를 수정합니다.
import_flashcardsAI가 만든 카드를 한꺼번에 추가합니다. 한 번에 최대 100장입니다.
update_flashcard기존 카드의 앞면·뒷면·태그와 카드가 속한 덱을 수정합니다.
Plus / Pro가 필요합니다. 삭제해도 데이터가 바로 지워지지 않으므로(논리 삭제), ID를 알면 되돌릴 수 있습니다.
delete_deck덱과 그 안의 활성 카드를 함께 논리 삭제합니다.
delete_flashcards지정한 카드를 논리 삭제합니다.
restore_deck삭제한 덱을 ID로 복원합니다.
restore_flashcards삭제한 카드를 ID로 복원합니다.
04흐름
일반 대화처럼 요청하면 됩니다. Memly는 내용을 바꾸기 전에 매번 인증, 플랜, 소유권, 콘텐츠 안전성을 확인합니다.
ChatGPT, Claude 또는 다른 MCP 호환 AI 클라이언트에 Memly Remote MCP URL을 추가합니다.
동의 화면에 표시된 Memly 계정을 확인하고 연결을 승인합니다.
"이 설명을 카드 5장으로 만들어줘", "에도 시대 덱에 추가해줘"처럼 평소 쓰는 말로 요청합니다.
AI가 Memly 도구를 호출하면 Memly가 서버에서 확인한 뒤 저장, 수정, 삭제, 복원을 실행합니다.
05요청 예시
전문 용어 없이 평소처럼 말해도 됩니다. 그 뒤에서는 AI 클라이언트가 Memly 도구를 호출하고 결과를 알려줍니다.
이 설명을 카드 5장으로 만들고 에도 시대 덱에 추가해줘
도구 호출: import_flashcards
카드 5장을 '에도 시대' 덱에 저장했습니다
에도 시대 덱에서 도쿠가와 이에나리 카드를 찾아서 답변을 조금 짧게 고쳐줘
도구 호출: update_flashcard
카드 뒷면을 더 짧은 설명으로 수정했습니다
Test 덱을 삭제하고 안에 있는 카드도 함께 지워줘
도구 호출: delete_deck
'Test' 덱을 삭제했습니다. 나중에 복원할 수도 있습니다
06안전성
AI 클라이언트가 보낸 요청이라도 Memly는 신뢰할 수 없는 입력으로 간주하고, 누가 요청했는지, 무엇을 바꿀 수 있는지, 콘텐츠가 안전한지를 확인합니다.
OAuth 2.1 bearer token, Plus/Pro 구독, 덱 소유권을 확인합니다.
필수 항목, 글자 수, 카드 수, 태그 수, 기본 카드 형식을 저장 전에 확인합니다.
rich HTML은 허용된 12개 태그만 남기고 href와 class를 포함한 모든 속성을 제거합니다. 링크와 이미지는 보존되지 않습니다.
카드 생성은 쓰기 작업이므로 AI 클라이언트가 실행 내용을 표시하고 사용자 확인을 받도록 안내합니다.
07개발자용
일반 사용자는 이 섹션을 읽을 필요가 없습니다. MCP 클라이언트나 개발자가 새 카드를 추가할 때 사용하는 세부 형식을 확인하기 위한 내용입니다.
카드 추가
새 카드는 import_flashcards를 통해 추가됩니다.
저장 위치
기존 덱을 지정하거나 덱 이름으로 새로 만들고 재사용할 수 있습니다.
결과
Memly는 저장 위치, 생성 수, 건너뛴 수, 치명적이지 않은 주의 사항을 반환합니다.
안전성
인증, Plus/Pro 권한, 소유권, HTML 정제를 Memly 서버에서 매번 확인합니다.
{
"name": "import_flashcards",
"title": "Import flashcards",
"description": "Import flashcards generated by an MCP-capable AI client into a Memly deck. Use this write tool only after the user asks to save cards to Memly. The client must provide either deckId or deckTitle and 1-100 front/back cards. If the user refers to an existing deck by name and does not know the ID, call list_decks first and pass the matching deckId. Memly requires Plus or Pro for write actions, validates the payload, sanitizes rich HTML, and saves the cards.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"deckId": {
"type": "integer",
"minimum": 1,
"description": "Existing Memly deck ID owned by the authenticated user. Provide exactly one of deckId or deckTitle (not both, not neither)."
},
"deckTitle": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Deck title to create or reuse when deckId is not provided. Provide exactly one of deckId or deckTitle. If the user names an existing deck but does not know the ID, prefer calling list_decks first and pass the exact deckId when found."
},
"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"]
},
"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,
"idempotentHint": false,
"openWorldHint": false
},
"securitySchemes": [
{ "type": "oauth2", "scopes": ["email", "profile"] }
],
"_meta": {
"securitySchemes": [
{ "type": "oauth2", "scopes": ["email", "profile"] }
]
}
}deckIddeckId 또는 deckTitledeckTitledeckId 또는 deckTitlesourceTitle선택language선택cards[].front필수cards[].back필수cards[].frontRich / backRich선택cards[].tags선택structuredContent.deckId / deckTitle성공 시structuredContent.importedCount / skippedCount성공 시structuredContent.warnings선택HTTP 401 Unauthorized인증 필요
HTTP 400 Bad Request잘못된 요청
HTTP 403 ForbiddenOrigin 거부
HTTP 429 / 413속도 제한 / 크기 초과
JSON-RPC error -32601 / -32602 / -32603프로토콜 오류
Tool result isError: true (HTTP 200)도구 실행 오류
MCP 연동을 직접 구현한다면 아래 1차 문서도 함께 확인하세요. 서비스별 지원 범위는 업데이트될 수 있습니다.
08FAQ
Memly MCP를 사용할 때 자주 받는 질문을 모았습니다.
연결과 조회는 가능합니다. 덱과 카드의 검색·표시는 무료 사용자도 이용할 수 있고, 추가·수정·삭제·복원 같은 쓰기 작업은 Plus/Pro 전용입니다.
Remote MCP를 지원하는 AI라면 연결할 수 있습니다. ChatGPT(개발자 모드)와 Claude(커스텀 커넥터)에서 동작을 확인했습니다.
아니요. Memly에 전달되는 것은 AI 클라이언트가 호출한 tool의 입력(카드 내용이나 검색어 등)뿐입니다. 대화 전체가 전송되는 일은 없습니다.
삭제해도 데이터가 바로 지워지지 않으므로 되돌릴 수 있습니다. 다만 삭제된 덱과 카드를 목록으로 보여 주는 도구가 없어 복원에는 ID가 필요합니다. 같은 대화 안에서는 삭제할 때의 ID가 남아 있어, "방금 지운 덱을 되돌려줘"라고 요청하면 복원됩니다. 대화가 바뀌면 ID를 알 수 없으니 그때는 Memly 앱에서 복원하세요.
없습니다. OAuth로 인증한 본인 계정의 덱과 카드만 다루며, 요청마다 서버에서 소유권을 확인합니다.
'잘 안 될 때' 항목을 위에서부터 확인하고, 커넥터를 지운 뒤 같은 URL로 다시 추가해 보세요. 그래도 해결되지 않으면 오류 화면에 표시되는 'ofid'로 시작하는 식별자와 발생 시각을 함께 문의해 주세요.
Memly를 AI 클라이언트에 연결하세요. 무료 사용자는 조회를, Plus/Pro 사용자는 덱과 카드 정리를 대화에서 바로 사용할 수 있습니다.