mmm-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mmm-mcp-serverMatryoshkaのマップ一覧を見せて"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mmm-mcp-server
日本語 | English
Matryoshka Mind Map(マトリョシカ、マインドマップ/TODOアプリ)の自分のマップを、 AIエージェントとの会話から直接読み書きできるようにするツールです。MCP (Model Context Protocol)という共通規格に対応したツールなので、Claude Desktop・Claude Codeに限らず、MCPに対応したAIエージェントであれば基本的に 同じ手順で使えます(動作確認はClaude Desktop / Claude Codeで実施しています。 他のクライアントでの登録方法はそれぞれのドキュメントを参照してください)。
「今のマップ一覧を見せて」と話しかけるとマップ一覧を教えてくれる
会話の中で考えた内容を、そのままマインドマップの階層構造として追加できる
「〇〇のタスク終わったよ」と伝えるだけでTODOにチェックが付く
長いメモやMarkdownをそのままマップに流し込める
パソコンの中だけで動くツールで、常時起動しているサーバーはありません。使うときだけ 起動し、あなた自身のログイン情報であなた自身のマップにアクセスします(開発者側は あなたのデータを見ることができません)。
2026年9月30日より前に
git cloneで導入した方へ: アプリ側のデータ形式の 切り替えに伴い、古い版ではマップへの書き込みが失敗するようになります。下の手順5の 登録をnpx -y mmm-mcp-serverに置き換えてください(ログインし直す必要はありません)。 clone したまま使い続ける場合は、mmm_mcpフォルダでgit pull && npm install && npm run buildを実行してからAIエージェントを再起動してください。
このページは、ある程度パソコン操作に慣れていない方でも迷わず進められるよう、 ターミナル(コマンドを打つ画面)の開き方から順に説明しています。
対応OS: macOS・Windowsの両方で動作するはずです。Node.jsだけで動く ツールで、OS固有の機能には依存していません。ただし実機での動作 確認はmacOSでのみ行っています。 Windowsで試して気づいた点があれば、 このリポジトリのIssueで教えてください。手順のうち、操作方法がOSで 異なる箇所(ターミナルの開き方・Node.jsのインストール)はmacOS/Windows それぞれ記載しています。それ以外のコマンドはどちらのOSでも同じです。
1. 事前に必要なもの
Matryoshka Mind Mapのアカウント(匿名利用のみのアカウントは使えません。 Google・Apple・メールアドレスのいずれかでログインできる状態にしてください。 アプリ内の「メールアドレスを連携」機能で後から連携することもできます)
MCPに対応したAIエージェント(Claude Desktop / Claude Codeで動作確認済み。 他のMCP対応クライアントでも基本的に使えるはずです)
Node.js(プログラムを動かすための土台。次の手順でインストールします)
Related MCP server: xmind-mcp
2. ターミナルを開く
macOSの場合
キーボードで
commandキーを押しながらスペースキーを押す(Spotlight検索が開く)「ターミナル」と入力する
一覧に出てきた「ターミナル」を左クリック、またはEnterキーを押す
Windowsの場合
キーボードで
Windowsキーを押す(スタートメニューの検索が開く)「PowerShell」と入力する
一覧に出てきた「Windows PowerShell」を左クリック、またはEnterキーを押す
黒っぽい(または白い)ウィンドウが開けば準備完了です。以降の手順は、この ウィンドウに1行ずつコマンドを貼り付けてEnterキーを押していきます(コマンド 自体はmacOS・Windowsで共通です)。
3. Node.jsをインストールする
すでにインストール済みか、次のコマンドで確認できます。
node --versionv18 以上のバージョン番号(例: v20.11.0)が表示されればインストール済みです。
「command not found」のようなエラーが出た場合は、下記からインストーラーを
ダウンロードしてください。
サイトを開くと大きなボタンが2つ出ます。「LTS」と書かれている方を左クリックして
ダウンロードしてください(使っているOSに合わせて、macOSなら.pkg、Windowsなら
.msiのインストーラーが自動でダウンロードされます)。ダウンロードしたファイルを
ダブルクリックし、画面の指示に従って進めてください
(macOSは「続ける」→「同意する」→「インストール」、Windowsは
「Next」→「I accept...」→「Install」のように、案内される通りに次へ進めば
インストールできます)。
インストールが終わったら、ターミナルに戻ってもう一度確認します。
node --version4. ログインする
Matryoshka Mind Mapアプリで普段どのログイン方法を使っているかに合わせて、 次の3つから選んでください。いずれの方法も、あなた自身が事前に何かを準備する 必要はありません。 初回はツールのダウンロードが入るので、少し時間がかかります。
Googleでログインしている場合
npx -y -p mmm-mcp-server mmm-login login --method googleブラウザが自動で開くので、いつも使っているGoogleアカウントでログインします。
Appleでログインしている場合
npx -y -p mmm-mcp-server mmm-login login --method appleこちらもブラウザが自動で開くので、Apple IDでログインします。
メールアドレスとパスワードでログインしている場合
npx -y -p mmm-mcp-server mmm-login login --method emailメールアドレスとパスワードを聞かれるので入力してください(パスワードは 画面に表示されません)。
「パスワードが違います」というエラーが出た場合、実際にパスワードを 間違えているとは限りません。そのアカウントがアプリ内でGoogle・Appleの どちらかでログインしていて、そもそもメールアドレス+パスワードでの ログイン情報を持っていない場合も同じエラーになります。心当たりが あれば、上の「Googleでログインしている場合」または「Appleでログイン している場合」の手順を試してください。
ログインに成功すると、以後は毎回ログインし直す必要はありません(ログイン情報は あなたのパソコンの中だけに、あなた以外読めない形で保存されます)。
npx -y -p mmm-mcp-server mmm-login statusでログイン状態を確認できます。ログアウトしたい場合は次のコマンドです。
npx -y -p mmm-mcp-server mmm-login logout5. AIエージェントにMatryoshkaを教える
ここでは動作確認済みのClaude Desktop / Claude Codeへの登録方法を示します。
他のMCP対応クライアント(例: Codexなど)を使っている場合も、多くは同じように
「サーバーを起動するコマンド」(npx -y mmm-mcp-server)をそのクライアントの
MCPサーバー設定に登録するだけで使えるはずです。具体的な登録方法はお使いの
クライアントのドキュメントを確認してください。
Claude Codeを使っている場合
claude mcp add mmm -- npx -y mmm-mcp-serverClaude Desktopを使っている場合
Claude Desktopの設定ファイル(claude_desktop_config.json)を開き、
mcpServersの中に次を追記します。
{
"mcpServers": {
"mmm": {
"command": "npx",
"args": ["-y", "mmm-mcp-server"]
}
}
}保存したらClaude Desktopを再起動してください。
6. 使ってみる
AIエージェントとの会話で、次のように話しかけてみてください。
「Matryoshkaのマップ一覧を見せて」
「〇〇マップに、××というタスクを追加して」
「〇〇マップの、△△っていうタスク終わったよ」
「このメモをMarkdownで貼るので〇〇マップに取り込んで」
マップの中身(要素の文字列)を初めて読むときだけ、実際の中身を返す前に 必ず本人の許可を求める仕組みになっています。中身に個人的な内容が含まれる 可能性に配慮したものです。
ツールは中身を返す代わりに、「ユーザー本人に直接確認してからconfirmed: true
を付けて呼び直せ」という指示だけを返します。実際に確認したかどうかをこちら側で
検証する手段は無いベストエフォートの経路です。使っているAIエージェントが指示
通りきちんと確認してくれるかは、そのエージェント次第になります。同じマップは、
そのサーバーが起動している間(概ね1回の会話)は再確認されません。
(以前はMCP標準の確認ダイアログ機能「elicitation」で強制する経路も 併用していましたが、対応を広告していながら実際にはダイアログを出さない クライアントがあり、本人が一度も確認画面を見ないまま読み取れなくなる 不具合があったため、2026-09-03に廃止し、上記の方式に一本化しました)
書き方を安定させる
AIエージェントに任せると楽な反面、そのままだと読みにくいマップになりがちです。
次の文言を、AIエージェントが毎回読み込む指示ファイル(Claude Codeなら
~/.claude/CLAUDE.md)に貼っておくと、書き方が安定します。
## mmmへの書き方
- 1つの要素は1行で読み切れる長さにする。説明を詰め込まない。
理由や補足を残したいときは、子要素として1段下に置く
- URLは単独の要素にする。「資料はこちら https://...」のように
説明文と混ぜてはいけない。「資料」という要素を作り、その子に
URLだけを置く
- やり忘れを防ぐための項目は時系列で並べる。「リリース直後」
「2週間後」「〇〇になったら」のように、いつやるかを項目名にするそれぞれの理由は次のとおりです。
1行にする … Matryoshkaは要素を入れ子で表示するので、1つが長いと 一覧性が落ちて、階層をたどる良さが消えてしまいます
URLを混ぜない … 説明文と同じ要素に入れるとアプリでリンクとして 扱われず、タップしても開けません
時系列で並べる … 作業の名前で並べるより、順に消していく形になるぶん、 抜けに気づきやすくなります
よくあるトラブル
症状 | 原因・対処 |
| 手順3のNode.jsインストールがまだ。インストール後、ターミナルを一度閉じて開き直す |
ログイン時に「パスワードが違います」と出る | 手順4の補足を参照。Google/Appleでログインし直してみる |
話しかけてもマップ操作をしてくれない | 手順5の登録が正しいか確認する。Claude Desktopは登録後に再起動が必要 |
マップの中身を教えてくれない・確認だけで止まる | 「読んでいいですか」の確認に「はい」と答えているか確認する |
大きなマップをAIが読み込めない | 要素が数百を超えると |
活用例(応用編): フォルダ単位でタスクを自動記録する
ここから先は一つの使い方の例です。全員にすすめる標準的な使い方という わけではなく、「こういう設定をすればこんなことができる」という可能性を 示すものなので、自分に合わないと思えば無視してかまいません。
やりたいこと: Claude Codeで作業しているフォルダ(プロジェクト)ごとに 同名のマップを1つ対応させ、作業中に出てきたタスクをAIエージェントが確認なしで そのマップへリアルタイムに記録・更新していく。
ここで示す(2)の設定はClaude Codeの「グローバルCLAUDE.md」という、常に 読み込ませる指示ファイルの仕組みを使った例です。他のAIエージェントでも、 同じように「毎回読み込ませる指示」を設定できる機能があれば、同じ考え方を 応用できるはずです。
必要な設定
(1) mmmサーバーを全フォルダ共通で使えるように登録し直す
手順5でClaude Codeに登録するとき、そのままだと今いるフォルダでしか
mmmツールが使えません。どのフォルダでclaudeを起動しても使えるように
するには、--scope userを付けて登録します。
claude mcp add mmm --scope user -- npx -y mmm-mcp-server(2) グローバルのCLAUDE.md(~/.claude/CLAUDE.md)に運用ルールを書く
例えば次のような文言を追記します。
## mmmでのタスク管理
作業フォルダで発生したタスクは、mmm(Matryoshka Mind Map連携)に
記録してリアルタイムで管理する。
- 作業フォルダ名をそのままマップのタイトルとして扱う
- list_mapsで同名のマップが既にあるか確認する。無ければ、
タイトルの確認を挟まずそのままcreate_map(title=フォルダ名,
isTodo=true)で作成してよい(この運用に限り事前確認は不要とする)
- 既存タスクを把握するためlist_elementsを呼ぶと、そのマップを
そのプロセスで初めて読むときだけ確認が入る。それ以降は
auto_structure_thought/update_task_statusでリアルタイムに
追記・更新する動きの理由
create_mapはタイトルを直接引数で受け取るツールで、「呼ぶ前に会話で 確認を取る」というのはツールの説明文に書かれたAIエージェント向けの 推奨動作にすぎません。より具体的なCLAUDE.mdの指示を優先させることで、 確認なしの自動作成にできますマップの中身を読む
list_elementsだけは、秘匿情報への配慮として サーバー側で確認を強制しています(上の「使ってみる」節を参照)。 これはフォルダ単位の運用にしても変わらず、同じマップをその プロセスで初めて読むときに1回だけ確認が入ります
注意点
全フォルダで自動的にマップが増えていくため、普段使っている厳選された マインドマップの中に、作業ログ的なマップが混ざります。人によっては 雑多に感じるかもしれません。専用のアカウントを分ける、対象フォルダを 限定するなど、自分に合う形に調整してください
ここで示した
create_mapの確認省略は、あくまでこの運用を自分のCLAUDE.mdで 明示した場合の話です。何も設定しなければ、これまで通り会話内で確認を 取ってから作成されます
このツールについて
あなたのログイン情報(更新トークン)はあなたのパソコンの中 (macOSは
~/.config/mmm-mcp/credentials.json、WindowsはC:\Users\<ユーザー名>\.config\mmm-mcp\credentials.json)にのみ保存され、 他の場所には送信されませんマップの内容はあなたのFirebaseアカウントに直接読み書きされ、開発者を含む 第三者のサーバーを経由しません(Appleでログインする場合のみ、ログインの 最後の一手続きで署名専用の中継サーバーを経由しますが、あなたのマップの 中身は一切通りません)
常時起動しているプロセスはなく、AIエージェントとの会話中だけ動作します
Available Tools
9 toolsauto_structure_thoughtA
会話中にClaudeが考えた階層構造を、既存のマップに追加する。深さは3階層固定ではなく任意。構造化のロジック(何をどう分解するか)はClaude側の判断で行い、このツールはFirestoreへの書き込みだけを行う。追加先(parentElementId)はlist_elementsの結果を見て判断すること。対象は既存マップのみ(新規作成が必要ならcreate_mapを先に呼ぶ)。
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | list_mapsで得たマップのID | |
| nodes | Yes | 追加する階層構造(ルートの配列) | |
| parentElementId | No | この要素の内側(子)として追加する。マップの最上位に追加する場合はnullまたは省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose meaningful traits: it is write-only ('Firestoreへの書き込みだけを行う'), the structuring logic is Claude's responsibility, depth is arbitrary rather than fixed at 3, and only existing maps are valid targets. However, it omits permissions/auth requirements, error or failure behavior, and reversibility of the write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, followed by the depth-flexibility note, the division-of-labor clarification, and prerequisites. Every sentence contributes, though the density makes it slightly harder to parse than an ideal definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter write tool with no output schema and no annotations, the description covers purpose, prerequisites, parameter sourcing, and the non-obvious division of labor. It lacks only return/error behavior, which is a minor gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine decision guidance beyond the schema: parentElementId should be derived by inspecting list_elements output, and mapId comes from list_maps. These are procedural instructions the schema alone does not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear verb+resource — adding Claude's hierarchical thought structure into an existing map — and explicitly distinguishes itself from create_map ('対象は既存マップのみ...新規作成が必要ならcreate_mapを先に呼ぶ'). It is less clear about how it differs from other write-oriented siblings like edit_element or import_markdown_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete routing guidance: look at list_elements results to decide parentElementId, and call create_map first if a new map is needed. That is an explicit alternative and prerequisite. It stops short of stating when NOT to use this tool versus sibling write tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mapA
新しいマインドマップ(マップ)を1つ作成する。list_mapsで確認して該当するマップが無いときだけ呼ぶこと。呼ぶ前に、会話でタイトル案をユーザーに提示し、明示的な確認を得ること(自動判断で勝手に作成しない)。
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | マップのタイトル | |
| isTodo | Yes | TODOマップ(要素にチェックボックスを付ける)にするかどうか |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add real behavioral context: a mandatory user-confirmation step and an explicit prohibition on autonomous creation. It does not describe the success/duplicate/error behavior of the create itself, so it falls short of fully covering the write semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place, with the primary action stated first and the guardrails (list_maps check, user confirmation) following in priority order. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-required-parameter create tool with no output schema, the definition covers the purpose, precondition, and confirmation workflow. It is nearly complete, though it could note what happens on success or when a duplicate title is used.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'title' and 'isTodo' are already documented in the schema, and the description adds no additional syntax or format detail beyond them. Per the baseline rule for high coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('新しいマインドマップを1つ作成する'), specifying cardinality ('1つ'). It is immediately distinguishable from siblings like list_maps, edit_element, or delete_elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing rules: call only after list_maps confirms no matching map exists, and require a user-confirmed title proposal first. The alternative (list_maps) and the precondition are both named, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_elementsA
既存マップから要素を削除する。指定した要素とその配下(子孫)を丸ごと削除する。削除は取り返しがつかないため、まずconfirmedを省略(またはfalse)で呼び、返ってくる削除対象の一覧(パスと配下件数)をユーザーに提示して明示的な同意を得てから、confirmed: trueで呼び直すこと。
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | list_mapsで得たマップのID | |
| confirmed | No | true以外(省略時false)は削除対象の確認情報だけを返し、実際には削除しない | |
| elementIds | Yes | list_elementsで得た要素のID(複数可) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses irreversibility (削除は取り返しがつかない), cascade deletion of descendants, and the dry-run semantics of confirmed, including that the dry run returns the paths and descendant counts. It stops short of stating permission requirements or limits on how many elements may be deleted at once.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the destructive action and cascade scope, then the safety workflow. Every sentence carries required information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, annotation-free tool with no output schema, the description supplies the missing safety profile and explains what the dry-run returns (paths and descendant counts). An agent has everything needed to call it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents mapId, elementIds and the dry-run meaning of confirmed. The description restates the confirmed workflow rather than adding syntax, format, or edge-case detail beyond it, so the baseline 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('既存マップから要素を削除する') and immediately clarifies scope via the cascade rule (指定した要素とその配下(子孫)を丸ごと削除する). This clearly separates it from siblings like edit_element and move_element, which touch the same resources without removing them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Prescribes an explicit two-call workflow: first call with confirmed omitted/false to obtain the target list, present it to the user for explicit consent, then re-call with confirmed: true. The when-not condition (do not delete before consent) and the alternative call mode are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_elementA
既存マップの要素1件の本文(detail)を書き換える。要素の追加はauto_structure_thought・import_markdown_contextを、チェック状態の変更はupdate_task_statusを使うこと。
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | list_mapsで得たマップのID | |
| detail | Yes | 書き換え後の本文 | |
| elementId | Yes | list_elementsで得た要素のID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully scopes the mutation to the detail field only and implies check state and element count are untouched, but it says nothing about required permissions, whether the previous detail is recoverable, or failure behavior on a missing mapId/elementId. Adequate scoping, incomplete mutation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste: the first states what is changed and at what granularity, the second handles dispatch to siblings. Front-loaded and appropriately sized for a 3-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers scope and sibling routing but leaves permissions, reversibility, and error/response behavior unstated. It is callable without ambiguity because the schema is fully documented, but the behavioral envelope is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – each of the three parameters is documented inline, including the list_maps/list_elements provenance for the IDs and minLength on detail. The description adds no format or constraint detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource in one clause: it rewrites the detail body of a single existing map element. It also names the sibling tools that handle the adjacent operations (adding elements, toggling check state), so the agent can distinguish it from auto_structure_thought, import_markdown_context and update_task_status without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: element creation belongs to auto_structure_thought / import_markdown_context, and check-state changes belong to update_task_status. This gives both when-to-use and when-not-to-use with named alternatives, which is exactly what a crowded sibling set (8 tools) needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_markdown_contextA
任意の深さのMarkdown(インデントで階層を表現したリスト、見出しは#)を組み立てて、既存のマップに流し込む。見出しも1つの要素として取り込む。取り込み先がTODOマップでない場合、- [ ]/- [x]のチェックボックス記法は取り除かれチェック状態も反映されない(アプリ本体の挙動と同じ)。対象は既存マップのみ(新規作成が必要ならcreate_mapを先に呼ぶ)。
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | list_mapsで得たマップのID | |
| markdown | Yes | 取り込むMarkdownテキスト | |
| parentElementId | No | この要素の内側(子)として取り込む。マップの最上位に取り込む場合はnullまたは省略 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose real quirks: headings become elements, and checkbox syntax/state is stripped for non-TODO maps. However, it does not say whether the import appends to or replaces existing map content, whether the operation is idempotent or reversible, or what happens on invalid mapId — notable gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and format expectations are front-loaded in the first sentence, followed by the behavioral exceptions. It is dense but each sentence adds a distinct rule; only minor phrasing could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no annotations and no output schema, the description covers format, tree semantics, and prerequisites well, but omits append-vs-replace semantics and error/return behavior. It is adequate but leaves the agent guessing on state-changing side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so mapId, markdown, and parentElementId are already documented in the schema. The prose adds only the implicit idea that content lands inside parentElementId (or at top level if omitted), matching what the schema already says, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (build/stream Markdown into a map) and resource (an existing map), and immediately clarifies the flattening rule that headings count as elements. It is clearly distinguishable from siblings like create_map and edit_element because it operates on a whole Markdown tree rather than single elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the target must be an existing map and names the alternative ('if you need a new one, call create_map first'), which routes the agent correctly. It also gives the condition under which checkbox notation is dropped, though it does not discuss when to prefer this over editing elements individually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_elementsA
指定したマップ内の全要素と親子関係、チェック状態(checked)を返す。checkedは各要素にFirestoreへ実際に保存されている生の値であり、「祖先がチェック済みなら配下も完了とみなす」という加工は行っていない。そう解釈したい場合は、返ってきたツリーを見てこちら(呼び出す側)で判断すること。マップの中身には秘匿情報が含まれ得るため、初めて読むマップでは呼び出し前にユーザー本人の許可が必要。confirmed: trueを付けずに呼ぶと、このツールは実データを返す代わりに確認を促すメッセージだけを返すので、その指示に従ってユーザーに直接確認してからconfirmed: trueで呼び直すこと。アプリ側での直接の編集はこのツールを呼ぶまで反映されないため、ユーザーから進捗や状態を尋ねられたときは記憶に頼らず必ず呼び直すこと。
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | list_mapsで得たマップのID | |
| confirmed | No | ユーザー本人に直接「中身を確認してよいか」と尋ね、同意を得てからtrueを付けて呼ぶこと。確認前にtrueを付けてはならない。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: it discloses the confirmation gate (calling without confirmed returns a prompt instead of data), the confidentiality risk of map contents, and the staleness behavior that memory shouldn't be trusted. These are exactly the non-obvious traits an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Return values and the raw-checked caveat are front-loaded, and every sentence carries actionable information. It is dense but never padded, though the single long block could be broken up for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately describes the return shape (elements, parent-child structure, checked state) plus the gating and staleness behavior. An agent has everything needed to call it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining the operational semantics of confirmed (must ask the user first, never set true before confirming) and the meaning of mapId's source. This adds real meaning over the field descriptions rather than restating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: returns all elements in a given map along with parent-child relationships and checked state. It further sharpens the deliverable by clarifying that checked is the raw stored value, not an inherited-completion interpretation, so an agent knows exactly what it gets versus related read tools like list_maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions: obtain the user's own consent before reading an unfamiliar map, and re-call this tool (never rely on memory) whenever the user asks about progress or state because app-side edits are not reflected until invoked. It also states the exact invocation protocol (call without confirmed to get a prompt, then re-call with confirmed: true).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mapsA
自分のMatryoshka Mind Mapの全マップ(タイトル・ID・TODOかどうか)を返す。他のツールでmapIdを指定する前に、まずこれで存在するマップとそのIDを確認する。自分が所有するマップに加え、他のユーザーから共有されて見えているマップも含む(共有マップのroleが'viewer'の場合は閲覧のみで、書き込み系ツールは使えない)。アプリ側での直接の編集(新規マップ作成等)はこのツールを呼ぶまで反映されないため、ユーザーから状態を尋ねられたときは記憶に頼らず必ず呼び直すこと。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that results include both owned and shared maps, that 'viewer' role implies read-only with no write tools available, and that app-side edits are not reflected until this tool is re-called. It does not cover return ordering, pagination, or limits, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, entirely front-loaded with what is returned and the prerequisite that a call is needed before using mapId elsewhere. Each subsequent sentence adds a distinct, non-redundant constraint (shared-map visibility, viewer read-only, state freshness).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema and no annotations, the description supplies everything needed: return contents, the prerequisite sequencing relative to other tools, the shared-map permission caveat, and the freshness warning. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description usefully enumerates the fields returned (title, ID, TODO flag) even though they are not inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns all of the user's Matryoshka Mind Maps with title, ID, and TODO status. It is clearly distinguishable from sibling list_elements (which lists elements within a map) and from create_map/delete_elements, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call this first to resolve existing maps and their IDs before passing mapId to other tools, and mandates re-calling whenever the user asks about state rather than relying on memory. It also states the write restriction when the caller's role on a shared map is 'viewer'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_elementB
既存マップの要素1件(配下ごと)を、同じマップ内の別の場所へ移動する。階層をまたいだ移動(昇格・降格)も、同じ階層内の並べ替えも、これ1つで行える。
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | list_mapsで得たマップのID | |
| elementId | Yes | 移動する要素のID | |
| afterElementId | Yes | 移動先の中で、このIDの要素の直後に置く。先頭に置く場合はnull | |
| newParentElementId | Yes | 移動先の親要素のID。マップの最上位へ移動する場合はnull |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose two important behaviors beyond the schema: the moved element's descendants travel with it, and moves are confined to the same map. It says nothing about permissions, what happens to the subtree's internal ordering, or failure conditions for invalid parent/after IDs, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and zero filler. The second sentence adds genuine value by enumerating the two supported move types. Slightly more could be trimmed or reordered, but it is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a hierarchy-mutating tool with no annotations and no output schema, the description covers the essential semantics (subtree moves, same-map restriction, both move kinds) but omits error behavior, idempotency, and any post-move effect. The schema handles parameter detail, so this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters (mapId, elementId, newParentElementId, afterElementId) are already documented in the schema, including the null-for-top-level and null-for-first-position semantics. The description adds no parameter-level detail beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (move) and resource (one element) with clear scope: within the same map, and the moved element carries its subtree with it. It also clarifies that both cross-hierarchy moves (promote/demote) and same-level reordering are covered, which meaningfully separates it from edit_element and delete_elements. It stops short of naming a sibling explicitly, so it lands at a strong 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 「これ1つで行える」 implicitly tells the agent this single tool covers both reordering and hierarchy changes, which is useful context for tool selection. However, there is no explicit when-to-use vs when-not, no named alternative, and no stated prerequisite (e.g., that IDs must come from list_elements). Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_statusA
TODOマップの要素のチェック状態を書き換える。1件でも複数件でもよい。「親をチェックすると配下も完了扱いになる」というアプリ内の表示上の挙動はこのツールでは再現しない(指定した要素だけを書き換える、配下への自動連鎖はしない)。配下も揃えたい場合は、対象の要素をすべてupdatesに列挙すること。
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | list_mapsで得たマップのID | |
| updates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses the single most non-obvious behavior: the tool does NOT reproduce the app's parent-check-cascades-to-children display behavior, only the specified elements are written. It omits error/permission/return behavior, but the key semantic trap is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, all purposeful, with the purpose front-loaded. The cascade clarification and its remedy are a little repetitive but each earns its place by preventing a specific misuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations, but for a simple mutation tool the description covers what is mutated, the scope (single vs batch), and the key filtering/behavioral constraint. Missing only failure and permission semantics, which are minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (the top-level 'updates' array lacks a description), but the prose compensates by explaining that 'updates' is the enumeration of target elements and that all desired elements must be listed. Combined with mapId/elementId descriptions referencing list_maps/list_elements, an agent can call it correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: rewriting the checked state of elements in a TODO map, and explicitly notes it handles one or many elements. It does not name a sibling tool (e.g. edit_element) to differentiate, but the scope statement is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: use it when you want to change check state, and if you want children aligned you must enumerate every target element in 'updates'. It does not compare against alternatives like edit_element, but the cascade caveat is a real usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.2- First observed
auto_structure_thought - First observed
create_map - First observed
delete_elements - First observed
edit_element - First observed
import_markdown_context - First observed
list_elements - First observed
list_maps - First observed
move_element - First observed
update_task_status
TDQS
Scored across 9 tools
Each tool targets a distinct operation: listing maps vs listing elements vs creating a map vs adding structure vs importing markdown vs updating status vs editing detail vs deleting vs moving. The descriptions clearly delineate use cases, so an agent can easily select the right tool.
All tools use snake_case, and most follow a verb_noun pattern (list_maps, create_map, etc.). 'auto_structure_thought' deviates slightly from the verb_noun convention, but overall naming is consistent and predictable.
Nine tools provide a well-scoped set covering the core operations for mind map manipulation without redundancy or bloat.
Element-level operations are complete (create via structure/import, read, update, delete, move). However, map-level operations are missing update and delete (e.g., renaming or deleting a whole map), which are common needs and could force workarounds.
Maintenance
Related MCP Connectors
Create, edit, and organize MindMeister mind maps from your AI assistant.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Markdown workspace for AI agents: read, write, organize, and share markdown documents.
Search, retrieve, create, and update visual knowledge maps in a user's KnowMapped account.
Related MCP Servers
AlicenseBqualityDmaintenanceEnables AI assistants to interact with Maito workspaces for task management, note-taking, and planning.2114 npmAGPL 3.0- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read and write XMind mind map files, allowing generation, editing, and analysis of mind maps directly in XMind.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Todoist tasks and projects with CRUD operations, hierarchical navigation, and completed task retrieval.5 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to build and interact with mind maps on mindmap.io. Agents can create, read, update, and delete maps and nodes, run prompts on nodes, and auto-expand topics into follow-up questions.13MIT