Memly
ChatGPT・ClaudeなどのMCP対応AI向け

AIとの会話から、Memlyのカードを直接整理

Memly MCPをつなぐと、AIとの会話でカードやデッキを整理できます。無料ユーザーは検索と表示まで。有料ユーザーは追加・編集・削除・復元まで使えます。

Remote MCP

エンドポイント

https://app.memly.ai/mcp

入力するURL

ChatGPTやClaudeなどのURL入力欄には https://app.memly.ai/mcp を入力します。

無料は参照、有料は編集

デッキやカードを見るだけなら無料ユーザーでも使えます。作成・編集・削除などMemlyを変更する操作は有料プラン限定です。

自分のアカウントだけ

認証したMemlyアカウントのデッキとカードだけを扱います。他の人のデータを見たり変更したりすることはできません。

接続手順

接続手順

使うAIを選ぶと、その手順だけを表示します。ClaudeとChatGPTの両方を設定する必要はありません。

共通準備

Memly側を準備する

MCP接続はMemlyアカウントごとのOAuth認証で行います。共有キーや固定ユーザーは使いません。

  • MemlyでPlusまたはProが有効なアカウントにログインします。
  • 既存デッキへ入れたい場合は、Memly内でデッキ名を確認しておきます。
  • ChatGPTやClaudeなどにはURLとして https://app.memly.ai/mcp を入力します。

選択中

Claudeに追加する

Claudeのカスタムコネクタでは、名前とリモートMCPサーバーURLだけを入力します。

  1. 1Claudeの「設定」または「カスタマイズ」から「コネクタ」を開きます。
  2. 2「カスタムコネクタを追加」を選び、名前に「Memly」と入力します。
  3. 3リモートMCPサーバーURLに https://app.memly.ai/mcp を入力します。
  4. 4OAuth Client IDとOAuthクライアントシークレットは空欄のまま追加します。
  5. 5Memlyの同意画面で、表示された自分のMemlyアカウントを確認して承認します。

接続後に list_decks と import_flashcards が表示されれば成功です。

困ったとき: 失敗したときに見る場所

古い接続情報が残っていると、修正後も同じ認証エラーが出ることがあります。

  1. 1Memlyコネクタをいったん削除し、同じURLで追加し直します。
  2. 2URL末尾は基本的にスラッシュなしの https://app.memly.ai/mcp を使います。
  3. 3承認画面のOAuth scopesが「メール確認」「プロフィール確認」だけになっているか確認します。
  4. 4承認後に「Connected to Memly」またはツール一覧が表示されるか確認します。

Authorization with the MCP server failed が続く場合は、表示された ofid と発生時刻を添えてサポートに共有してください。

流れ

使い方の流れ

普段の会話の延長で、AIにカード整理を任せられます。Memly側では認証、プラン確認、所有者確認、保存前のチェックを行います。

  1. 01

    1. Memlyを接続

    ChatGPT、Claude、その他のMCP対応AIにMemlyの接続URLを追加します。

  2. 02

    2. 自分のMemlyで承認

    表示されたMemlyアカウントを確認し、AIクライアントからの接続を承認します。

  3. 03

    3. AIにやりたいことを頼む

    「この説明を3枚のカードにして」「江戸時代デッキに追加して」のように自然文で依頼します。

  4. 04

    4. Memlyに反映

    AIがMemlyのツールを呼び出し、Memlyが安全性を確認してから保存・更新・削除を行います。

MCP

Memly MCPでできること

今回の実装で、カード追加だけでなく、デッキやカードの検索・編集・削除・復元まで扱えるようになりました。

デッキを探す・見る

AIがMemly内のデッキ一覧を確認し、デッキ名から保存先を探せます。既存デッキへの追加が迷いにくくなります。

カードを探す・表示する

デッキ内のカードを検索し、表面・裏面・タグを確認できます。無料ユーザーでも参照できます。

カードを追加・編集する

Plus/Proユーザーは、AIが作ったカードを追加したり、既存カードの文面・タグ・保存先デッキを更新できます。

削除・復元する

Plus/Proユーザーはカードやデッキを削除できます。誤操作に備えて、削除済みのカードやデッキを復元するツールも用意しています。

安全性

安全性と制限

AIからの操作でも、Memlyは毎回サーバー側で権限と内容を確認します。自分のデータだけに限定し、書き込みはPlus/Proに制限します。

認証と権限

OAuth 2.1のBearer token、Plus/Pro購読、デッキ所有権を確認します。

入力内容の確認

必須項目、文字数、カード上限、タグ数などを確認し、壊れたカードが入らないようにします。

HTMLサニタイズ

rich HTMLは許可タグだけを残します。script、iframe、style、イベント属性は保存しません。

実行前の同意

カード作成は書き込み操作のため、AIクライアント側で実行内容を表示し、ユーザー確認を挟む前提で案内します。

頼み方の例

AIへの頼み方

専門用語を使わなくても、普段の会話のまま依頼できます。保存前に内容を確認したい時は、そのように頼んでください。

新しいカードを作る

「この説明を5枚の暗記カードにして、江戸時代デッキに追加して」

既存カードを直す

「江戸時代デッキの徳川家斉のカードを探して、答えを少し短くして」

不要なものを消す

「Testデッキを削除して。中のカードも一緒に消して」

よいMemlyカードのルール

  • 1枚のカードでは1つの概念、定義、判断基準、手順、比較だけを問う。
  • 答えは短くても自立して理解できるようにし、元資料を見ないと意味が分からない表現を避ける。
  • 丸暗記だけでなく、理由、使い分け、例、誤解しやすい点もカード化する。
  • 同じ事実を言い換えただけの重複カードは作らない。
  • 専門用語や固有名詞は正確に残し、説明は指定言語で書く。

主なエラー

401 Unauthorized

認証が必要

MemlyにログインしてMCP接続を承認してください。

403 Subscription required

Plus/Pro限定

有効なPlusまたはPro購読が必要です。

400 Invalid cards

形式エラー

cardsが空、必須フィールド不足、文字数超過、許可されないHTMLなどを修正してください。

404 Deck not found

デッキ不一致

deckIdが存在しないか、認証済みユーザーのデッキではありません。

JSON-RPC protocol error

接続/認証エラー

認証不足、scope不足、セッション不備などMCPリクエスト自体を処理できない場合に返します。

Tool result isError: true

ツール実行エラー

入力検証やデッキ不一致など、ツール呼び出しは届いたがインポートに失敗した場合に返します。

開発者向け詳細

AIクライアント向けの詳しい仕様

通常の利用ではここを読む必要はありません。AIクライアントや開発者が、Memlyにカードを追加する時の細かい形式を確認するための詳細です。

{}MCP tool schema

カード追加

AIが新しいカードをMemlyへ追加する時はimport_flashcardsを使います。

保存先

既存デッキを指定するか、デッキ名から新しく作成・再利用できます。

結果の返却

保存先デッキ、作成枚数、スキップ枚数、注意事項をAIクライアントへ返します。

安全性

認証、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
  }
}

参照

仕様参照

MCP接続の実装者は、以下の一次情報も確認してください。サービス側の仕様が更新される可能性があります。

MCP接続の準備を進める

まずはMemlyをAIに接続してください。無料ユーザーは参照、有料ユーザーはカードとデッキの整理まで使えます。