Memly MCP連携の仕組みと使い方
ClaudeやChatGPTで作ったカードをMemlyへ保存し、FSRSの復習につなぐ全体像を解説します。
ChatGPTやClaudeにMemlyをつなぐと、会話の流れのままカードを作ったり、探したり、編集したりできます。つなぐのに使うMCPは、AIから外部サービスを操作するための共通の仕組みです。覚えたい内容が出てきたその場で頼めるので、あとでアプリを開き直す必要がありません。無料ユーザーは検索と表示まで、Plus / Proユーザーは作成と編集まで使えます。
AIにURLを登録する
Memlyで承認する
会話からカードを操作する
https://app.memly.ai/mcp入力するURL
ChatGPTやClaudeの設定画面で、接続先サーバーのURLを入れる欄に「https://app.memly.ai/mcp」と入力します。欄の名前は、Claudeでは「リモートMCPサーバーURL」、ChatGPTでは「サーバーのURL」です。
無料は参照、有料は編集
デッキやカードを見るだけなら無料ユーザーでも使えます。作成・編集・削除・復元などMemlyを変更する操作はPlus / Pro限定です。
自分のアカウントだけ
認証したMemlyアカウントのデッキとカードだけを扱います。他の人のデータを見たり変更したりすることはできません。
01接続手順
使うAIを選ぶと、その手順だけを表示します。ClaudeとChatGPTの両方を設定する必要はありません。どこを押して、どうなれば成功かを1ステップずつ確認できます。
接続するときは、Memlyの画面で自分のアカウントにログインし、許可を出します(OAuthという仕組みです)。APIキーのような文字列を自分で発行したり貼り付けたりする必要はありません。ClaudeでもChatGPTでも、始める前の準備は同じです。
必要な環境claude.aiのWeb版。入力するのは名前とURLの2項目だけです。無料プランでもカスタムコネクタを1つまで追加できます。TeamやEnterpriseでは、管理者が組織設定から追加し、そのあとで各メンバーが接続します。
左のサイドバーで「カスタマイズ」を開くか、アカウントメニューの「設定」から「カスタマイズ」の中の「コネクタ」を選びます。以前のコネクタ設定ページを直接開いても、「コネクタはカスタマイズに移動しました」という案内が出るだけで、その画面からは追加できません。
こうなれば成功これまでに追加したコネクタの一覧と、右上の「追加」ボタンが表示されます。

画面の下ではなく、一覧の右上にある「追加」を押します。開いたメニューの2つ目が「カスタムコネクタを追加」です。
こうなれば成功「名前」と「リモートMCPサーバーURL」の入力欄があるダイアログが開きます。

入力するのは上の2つ、「名前」と「リモートMCPサーバーURL」だけです。その下の「詳細設定」にあるOAuthクライアントIDとシークレットは任意項目なので、空のままで構いません。
こうなれば成功2つの入力欄が空のまま並んでいる状態です。

名前は「Memly」など分かるものにします。URLの欄には下の値をそのまま貼り付けてから「追加」を押します。
https://app.memly.ai/mcpこうなれば成功コネクタ一覧にMemlyが増えます。まだ未接続なので、その行の「連携」を押すと認証画面に進みます。

「連携」を押すとMemlyの認証画面に移ります。承認する前に3点を確かめてください。接続を求めているのがClaudeであること、表示されているMemlyアカウントが自分のものであること、要求されている権限が「メール確認」「プロフィール確認」だけであること。この3つが合っていれば承認します。
こうなれば成功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カード1枚の表面・裏面・タグを取り出します。
searchChatGPTのdeep researchなどが使う、決まった名前の検索ツールです。対応するクライアントからの検索要求を受け付けます。
fetchsearchと対になる取得用のツールです。検索でヒットした対象の中身を返します。
get_account_status認証中のアカウントで書き込み操作ができるかを返します。
Plus / Proが必要です。多くのAIクライアントは、実行前に内容を表示して確認を求めます。
create_deck新しいデッキを作ります。
update_deckデッキ名などを更新します。
import_flashcardsAIが作ったカードをまとめて追加します。1回の呼び出しで最大100枚です。
update_flashcard既存カードの表面・裏面・タグ・所属デッキを書き換えます。
Plus / Proが必要です。削除してもデータはすぐには消えない(論理削除)ので、IDが分かれば元に戻せます。
delete_deckデッキと中の有効なカードをまとめて論理削除します。
delete_flashcards指定したカードを論理削除します。
restore_deck削除したデッキをIDで復元します。
restore_flashcards削除したカードをIDで復元します。
04流れ
普段の会話の延長で、AIにカード整理を任せられます。Memly側では認証、プラン確認、所有者確認、保存前のチェックを行います。
ChatGPT、Claude、その他のMCP対応AIにMemlyの接続URLを追加します。
表示されたMemlyアカウントを確認し、AIクライアントからの接続を承認します。
「この説明を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開発者向け
通常の利用ではここを読む必要はありません。AIクライアントや開発者が、Memlyにカードを追加する時の細かい形式を確認するための詳細です。
カード追加
AIが新しいカードをMemlyへ追加する時はimport_flashcardsを使います。
保存先
既存デッキを指定するか、デッキ名から新しく作成・再利用できます。
結果の返却
保存先デッキ、作成枚数、スキップ枚数、注意事項をAIクライアントへ返します。
安全性
認証、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接続の実装者は、以下の一次情報も確認してください。サービス側の仕様が更新される可能性があります。
08FAQ
Memly MCPの利用にあたって、よくいただく質問をまとめました。
接続と参照は使えます。デッキやカードの検索・表示は無料ユーザーでも利用でき、追加・編集・削除・復元などの書き込み操作はPlus/Pro限定です。
Remote MCPに対応したAIであれば接続できます。ChatGPT(開発者モード)とClaude(カスタムコネクタ)で動作を確認しています。
いいえ。Memlyに届くのは、AIクライアントが呼び出したツールの入力(カードの内容や検索語など)だけです。会話全体が送信されることはありません。
削除してもデータはすぐには消えないので、元に戻せます。ただしAIは削除済みのデッキやカードを一覧できないため、復元にはIDが必要です。同じ会話の中なら削除したときのIDが残っているので、「さっき消したデッキを戻して」と頼めば復元できます。会話が変わるとIDが分からなくなるので、その場合はMemlyの画面から復元してください。
ありません。OAuthで認証した本人のアカウントのデッキとカードだけが操作対象で、リクエストごとにサーバー側で所有権を確認します。
「うまくいかないとき」の項目を上から確認し、コネクタの削除と再追加を試してください。解決しない場合は、エラー画面に表示される「ofid」で始まる識別子と発生時刻を添えてお問い合わせください。