mcpField
M
mindlm-mcp

mindlm-mcp

ローカル
qingchejun.github.io生産性02 週間前に更新

mindlm-mcp について

mindlm-mcp は、テキスト、ウェブページ、ローカル PDF を編集可能なアウトラインとインタラクティブな HTML マインドマップに変換する MCP サーバー兼 CLI です。既定では API キーなしでクライアントの LLM が草案を仕上げ、ルールベースや設定済みモデルも利用できます。

主な機能

  1. 01テキスト、ウェブページ、PDF の処理
  2. 02Markdown アウトラインの生成
  3. 03単体 HTML マインドマップへの出力
  4. 04クライアント、ルール、LLM の生成モード
  5. 05MCP サーバーと CLI の提供

活用シーン

  1. 01記事やメモをマインドマップに整理
  2. 02PDF の内容を階層的なアウトラインに変換
  3. 03Markdown アウトラインを編集してオフライン HTML に出力
  4. 04コマンドラインで資料を処理

MCP 対応

テキスト、ウェブページ、PDF のアウトライン化ツール、HTML エクスポートツール、mindmap_outline プロンプトを MCP クライアントに提供します。既定モードでは草案とソーステキストを返し、API キーなしでクライアントの LLM が仕上げます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"qingchejun-mindlm": {
"command": "npx",
"args": [
"-y",
"mindlm-mcp"
],
"env": {
"MINDMAP_OUTPUT_DIR": "<MINDMAP_OUTPUT_DIR>",
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"OPENAI_BASE_URL": "<OPENAI_BASE_URL>",
"MINDMAP_LLM_MODEL": "<MINDMAP_LLM_MODEL>",
"MINDMAP_ALLOW_PRIVATE_HOSTS": "<MINDMAP_ALLOW_PRIVATE_HOSTS>"
}
}
}
}
起動コマンドnpx -y mindlm-mcp
設定が必要な環境変数
MINDMAP_OUTPUT_DIRDirectory for exported HTML mind maps. Defaults to ./mindmaps.
ANTHROPIC_API_KEYシークレットOptional. Set it to let the server write outlines with a model itself instead of handing a draft back to the client.
OPENAI_API_KEYシークレットOptional. Same as ANTHROPIC_API_KEY, for any OpenAI-compatible endpoint.
OPENAI_BASE_URLOptional. OpenAI-compatible endpoint. Defaults to https://api.openai.com/v1.
MINDMAP_LLM_MODELOptional. Model name. Required when using an OpenAI-compatible endpoint.
MINDMAP_ALLOW_PRIVATE_HOSTSOptional. Set to true to let url_to_mindmap reach loopback and private addresses. Off by default.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmindlm-mcp0.1.1

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
modeenumいいえauto(デフォルト):API キーが設定されていればそれを使用し、なければ "client" を使用します。client:草稿とソーステキストを取得し、自分でアウトラインを作成します。llm:サーバーが ANTHROPIC_API_KEY / OPENAI_API_KEY で設定されたモデルを呼び出します。heuristic:ルールベースのみで、モデルは使用しません。auto | client | llm | heuristic
textstringはいマッピングするテキストまたは Markdown。MINDMAP_MAX_INPUT_CHARS による上限があります(デフォルトは 200k)。
titlestringいいえルートノードのタイトル。省略するとソースから生成されます。
exportbooleanいいえアウトラインをスタンドアロン HTML ファイルにもレンダリングし、そのパスを返します。
languagestringいいえノードラベルの言語。例:"English" または "中文"。デフォルトはソースの言語です。
maxDepthintegerいいえルートを含む階層数(デフォルトは 4)。
outputPathstringいいえexport が true の場合に HTML を書き込む場所です。ディレクトリを指定すると、ファイル名が自動生成されます。デフォルトは $MINDMAP_OUTPUT_DIR または ./mindmaps/ です。
maxChildrenintegerいいえ各ノードに残す子ノードの数。超過分は "…(+N)" に折りたたまれます(デフォルトは 8)。

詳細

mindlm-mcp

テキスト、ウェブページ、PDFをインタラクティブなマインドマップに変換します。MCP サーバー であり コマンドラインツールでもあり、API キーは不要です。

mindlm-mcpがアウトラインをマインドマップに変換

npx -y mindlm-mcp demo

組み込みのサンプルを描画して開きます。ビルド手順もアカウントもキーも不要で、HTMLファイル1つだけです。

  • 入力は3種類。 プレーンテキストまたはMarkdown、http(s)ページ、ローカルPDFです。
  • 出力は2種類。 編集可能なMarkdownアウトラインと、オフラインで動作する単独のHTMLマインドマップ(markmap)です。すべてのスクリプトがインライン化されています。
  • キーは不要。 MCP経由では、サーバーが下書きと整形済みのソーステキストをお使いのモデルに渡し、最終的なアウトラインの作成を任せます。サーバー自身にモデルを呼び出させたい場合に限り、ご自身のAPIキーを設定してください。アウトラインの作成方法をご覧ください。

ドキュメントとライブデモ:https://qingchejun.github.io/mindlm-io/ · ソース:https://github.com/qingchejun/mindlm-io


クイックスタート

どのクライアントでも同じコマンド npx -y mindlm-mcp serve を実行します。環境変数は不要です。以下の MINDMAP_OUTPUT_DIR は任意で、エクスポートしたファイルの保存先を指定します。

Claude Code
claude mcp add mindlm -- npx -y mindlm-mcp serve

--scope project を指定すると1つのプロジェクトに適用されます。環境変数は -e で渡します。

claude mcp add mindlm -e MINDMAP_OUTPUT_DIR=~/Documents/mindmaps -- npx -y mindlm-mcp serve

claude mcp list またはセッション内で /mcp を実行して確認します。

Claude Desktop

以下を claude_desktop_config.json に追加し、アプリを再起動します。

{
  "mcpServers": {
    "mindlm": {
      "command": "npx",
      "args": ["-y", "mindlm-mcp", "serve"],
      "env": {
        "MINDMAP_OUTPUT_DIR": "~/Documents/mindmaps"
      }
    }
  }
}
  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
Cursor

同じ設定ブロックを ~/.cursor/mcp.json(すべてのプロジェクト)または .cursor/mcp.json(1つのプロジェクト)に追加します。

{
  "mcpServers": {
    "mindlm": {
      "command": "npx",
      "args": ["-y", "mindlm-mcp", "serve"]
    }
  }
}

3種類すべての設定例は examples/configs/ にあり、そのままコピーできます。

続けて、「このPDFのマインドマップを作って」「https://example.com/article をマップして」のように普通の言葉で依頼すると、クライアントが適切なツールを選びます。


ツール

ツールは4つあり、常にこの順番で公開されます。3つの *_to_mindmap ツールはMarkdownアウトラインを返し、export_mindmap はアウトラインをHTMLファイルに変換します。すべての結果には、読みやすいテキストブロックと structuredContent の両方が含まれます。

text_to_mindmap

すでにあるテキストやMarkdownのアウトラインを処理します。下書き、メモ、文字起こし、貼り付けた章などが対象です。

フィールド型備考
textstring, requiredマッピングする内容です。MINDMAP_MAX_INPUT_CHARS による上限があります。
modeauto | client | llm | heuristicデフォルトは auto です。
titlestringルートノードのタイトルです。省略するとソースから取得します。
maxDepthint 2–6ルートを含む階層数です。デフォルトは4です。
maxChildrenint 3–15ノードごとに保持する子ノードの数です。デフォルトは8です。
languagestring例:"English"、"中文"。デフォルトではソースの言語を使用します。
exportbooleanHTMLファイルもレンダリングし、そのパスを返します。
outputPathstringファイルの保存先です。

入力:

{
  "text": "# Tides\n\nSpring tides are the largest of the month.\n\n## Neap\n\nNeap tides are the smallest.\n"
}

structuredContent(APIキーなしのデフォルトの auto モード、つまり client モード):

{
  "title": "Tides",
  "markdown": "# Tides\n\n## Spring tides are the largest of the month.\n\n### Neap\n- Neap tides are the smallest.\n",
  "mode": "client",
  "stats": { "inputChars": 79, "nodes": 4, "depth": 4, "truncated": false },
  "sourceText": "# Tides\n\nSpring tides are the largest of the month.\n\n## Neap\n\nNeap tides are the smallest.",
  "instructions": "This is a DRAFT outline produced by a rule-based algorithm. …"
}

"mode": "heuristic" を指定した場合(またはAPIキーによって "llm" になった場合)、結果から sourceText と instructions が除かれます。アウトラインは完成済みで、そのままエクスポートできます。

url_to_mindmap

ページを取得し、主な内容をアウトラインにまとめます。記事のテキストは Readability で抽出し、ナビゲーション、フッター、定型文は 除外されます。ページ上の付随要素も除外されます。参照マーカー([1])、「[編集」リンク、記事の上にある注記、画像のキャプション、ナビゲーションボックス、末尾の 関連項目/参考文献/注記/ さらに読む/外部リンク/書誌情報 の各セクションは、内容ではなくリンク一覧のため除外されます。 PDF を配信する URL は、自動的に PDF パイプラインに渡されます。

フィールド型備考
url文字列、必須http(s) のみ。プライベートアドレスとループバックアドレスは拒否されます。
…text_to_mindmap のすべてのオプションも指定できます。

入力:

{ "url": "https://example.com/tide-tables", "mode": "heuristic" }

structuredContent には、テキストの取得元を説明する source ブロックが追加されます。

{
  "title": "Tide tables",
  "markdown": "# Tide tables\n\n## Spring tides …\n\n## Neap tides …\n",
  "mode": "heuristic",
  "stats": { "inputChars": 1042, "nodes": 9, "depth": 3, "truncated": false },
  "source": {
    "url": "https://example.com/tide-tables",
    "finalUrl": "https://example.com/tide-tables",
    "title": "Tide tables",
    "siteName": "Example",
    "fetchedAt": "2026-09-27T10:21:04.512Z",
    "contentType": "text/html"
  }
}
pdf_to_mindmap

ローカル PDF を読み込み、しおりがある場合は、それを骨組みとして使用します。PDF は段落ではなく位置情報付きの行を保存するため、文を分割する前に、段落内で折り返された行を結合します。そうしないと、ブラウザーの「PDF に印刷」で「酸素を 放出する。」のように、文全体ではないノードが生成されます。

フィールド型備考
path文字列、必須ローカル PDF へのパス。~ は展開されます。
pages文字列1 始まりのページ指定:「1-20」、「3」、「1-5,9」。デフォルトではすべてのページが対象です。
…text_to_mindmap のすべてのオプションも指定できます。

入力:

{ "path": "~/papers/attention.pdf", "pages": "1-12", "mode": "heuristic" }

structuredContent:

{
  "title": "mindlm-mcp PDF fixture",
  "markdown": "# mindlm-mcp PDF fixture\n\n## 1. Introduction\n\n### Mind maps turn a wall of prose into something you can scan…\n",
  "mode": "heuristic",
  "stats": { "inputChars": 769, "nodes": 12, "depth": 4, "truncated": false },
  "source": { "path": "/home/you/papers/attention.pdf", "totalPages": 3, "hasOutline": true }
}
export_mindmap

Markdown のアウトラインを、単独で使用できる HTML マインドマップに変換します。あなた(またはモデル)がアウトラインを作成した後に呼び出してください。指定しない限り、既存のファイルは上書きされません。

フィールド型備考
markdown文字列、必須ルートは # を 1 つ、その後に ##/### と - の箇条書きを指定します。
title文字列ページタイトル。デフォルトではアウトラインのルートが使用されます。
outputPath文字列ファイル、またはファイル名を生成するディレクトリ。
offline真偽値すべてのスクリプトをインライン化します。デフォルトは true です。
toolbar真偽値ズーム/全体表示/展開ツールバー。デフォルトは true です。
initialExpandLevel整数 −1–6開いたときに展開するレベル。-1 はすべて展開します。
colorFreezeLevel整数 0–6このレベルより下では枝の色を変更しません。
maxWidth整数 0–2000ノードの最大幅(ピクセル)。0 は無制限です。
overwrite真偽値ファイルが存在する場合に置き換えます。デフォルトは false です。
returnHtml真偽値結果にドキュメント全体を含めます。デフォルトは false です。
branding真偽値小さな「Made with mindlm-mcp」フッターリンクを追加します。デフォルトは false です。

入力:

{
  "markdown": "# Tides\n\n## Spring\n\n- Sun and moon in line\n\n## Neap\n\n- At right angles\n"
}

structuredContent:

{
  "path": "/home/you/mindmaps/tides-20260927-183322.html",
  "fileUrl": "file:///home/you/mindmaps/tides-20260927-183322.html",
  "bytes": 344349,
  "nodes": 5,
  "offline": true
}
プロンプト

サーバーは mindmap_outline というプロンプトも 1 つ公開します。このプロンプトは、(指定された language があればその言語で)アウトラインのルールを返し、その後に export_mindmap を呼び出すよう指示します。


コマンドライン

クライアントを使わずに同じパイプラインを実行します。引数を指定せず、ターミナルにも接続されていない場合、mindlm-mcp は MCP サーバーを起動します。これは MCP クライアントが求める動作です。

mindlm-mcp demo                                   # render a built-in example and open it
mindlm-mcp text notes.md -o notes.html            # a file, or "-" to read stdin
mindlm-mcp url https://example.com/article --open
mindlm-mcp pdf paper.pdf --pages 1-20
mindlm-mcp export outline.md -o map.html          # an outline you wrote yourself
mindlm-mcp serve                                  # MCP server on stdio
mindlm-mcp doctor                                 # runtime, LLM config, output directory
コマンド動作
servestdio で MCP サーバーを起動します。
demo組み込みのサンプルをレンダリングします(ブラウザーを開かない場合は --no-open を指定します)。
text <file>.txt/.md ファイル、または標準入力の場合は - のアウトラインを作成します。
url <url>ページを取得し、主要な内容のアウトラインを作成します。
pdf <file>ローカルの PDF のアウトラインを作成します。
export <outline>既存の Markdown アウトラインをレンダリングします。
doctor設定内容とファイルの書き込み先を表示します。

変換コマンドのオプション:

オプション意味
-o, --output <path>指定した場所に書き込みます。.md パスにはアウトラインを、.html パスにはマインドマップを書き込みます。
--title <title>ルートノードのタイトルとページタイトルを指定します。
--mdMarkdown アウトラインを標準出力に表示します。
--mode <auto|llm|heuristic>アウトラインの作成方法を指定します。
--depth <n> / --max-children <n>ツリーの形状を指定します。
--lang <language>ノードラベルの言語を指定します。
--provider <anthropic|openai> / --model <name>LLM の設定を上書きします。
--no-offlineCDN アセットをインライン化せず、リンクします。
--no-toolbarマインドマップのツールバーを非表示にします。
--open結果をブラウザーで開きます。
--overwrite出力ファイルが存在する場合、置き換えます。
--branding「Made with mindlm-mcp」のフッターリンクを追加します。
-q, --quiet結果のみを表示し、進行状況は表示しません。
--env-file <path>最初にファイルから環境変数を読み込みます。

スクリプトで利用する結果(ファイルパスやアウトラインなど)は標準出力に、進行状況と診断情報は標準エラー出力に送られます。終了コード:0 正常、1 使用方法のエラー、2 入力エラー、3 LLM エラー。

小規模なプログラム用 API もあります。パッケージのルートから textToOutline、urlToOutline、pdfToOutline、renderMindmapHtml、exportMindmap をエクスポートしています。


アウトラインの作成方法

ツリーに何を含めるかを決めるのが難しい部分で、その方法は 3 つあります。どの方法でも、キーを用意する必要はありません。

モード使用される条件動作
clientキーがない場合のMCP のデフォルトサーバーはルールベースの下書き、整形済みのソーステキスト、指示を返します。クライアントのモデル、つまりすでに会話に使っているモデルがアウトラインを書き直し、export_mindmap を呼び出します。クライアントがすでに参照している情報以外は、何もマシンの外に送信されません。
heuristicキーがない場合のCLI のデフォルトルールのみを使い、ネットワークには接続しません。見出しを枝に、スコア付けした文を葉にします。高速で決定的に動作し、オフラインで利用できます。
llmANTHROPIC_API_KEY または OPENAI_API_KEY が設定されている場合サーバー自身が、お客様のキーとお客様のエンドポイントを使い、通常の fetch で該当するモデルを呼び出します。呼び出しに失敗した場合は、ヒューリスティックによる下書きにフォールバックします。

mode: "auto"(すべての場所でのデフォルト)は、該当する行のモードを選択します。MCP では mode、CLI では --mode を指定して、いつでもモードを強制できます。mindlm-mcp doctor を実行すると、現在 auto がどのモードに解決されるかを確認できます。

これらの機能の背後にホスト型サービスはありません。テレメトリー、更新確認、ホームへの通信もありません。

設定

すべての変数は任意です。.env.example を .env にコピーし、--env-file .env を明示的に指定して渡してください。自動的に読み込まれることはありません。または、MCP クライアントの env ブロックに変数を設定してください。

変数デフォルト説明
MINDMAP_OUTPUT_DIR./mindmapsエクスポートした HTML ファイルの保存先です。~ は展開されます。
MINDMAP_LLM_PROVIDER自動検出anthropic または openai です。設定されているキーに基づいて推定されます。
ANTHROPIC_API_KEY—auto を llm モードに切り替えます。
OPENAI_API_KEY—OpenAI 互換エンドポイントの場合も同様です。
OPENAI_BASE_URLhttps://api.openai.com/v1OPENAI_API_KEY とともに使用するエンドポイントです。
MINDMAP_LLM_MODELAnthropic の場合は claude-sonnet-5-5モデル名です。OpenAI 互換エンドポイントでは、汎用的に使えるモデル名がないため、必須です。
MINDMAP_ALLOW_PRIVATE_HOSTSfalseurl_to_mindmap が localhost およびプライベートネットワークにアクセスできるようにします。
MINDMAP_MAX_INPUT_CHARS2000001 つの入力から読み取る文字数の上限です。
MINDMAP_CLIENT_MAX_CHARS60000client モードで返されるソーステキストの文字数の上限です。

エクスポートされる HTML

ダブルクリックで開ける単一のファイルです。デフォルトでは、すべてのスクリプトとスタイルシート(d3、markmap-view、ツールバー)がインライン化されるため、ネットワークに接続できない環境や、CDN が移転した 5 年後でもマップは動作します。ファイル 1 つあたり約 340 KB になります。CDN のコピーをリンクする場合は、offline: false(--no-offline)を指定してください。

KaTeX と highlight.js の markmap プラグインは意図的に無効にしています。どちらも CDN からスタイルシートを読み込むため、「オフライン」エクスポートが気づかないうちに機能しなくなる可能性があります。アウトライン内の生の HTML はレンダリングされません(markdown-it は html: false で実行されるため)。そのため、悪意のあるページから抽出したテキストが、開いたファイルにスクリプトを注入することはできません。

エクスポートには、デフォルトで帰属表示はありません。必要であれば、--branding / branding: true を指定すると、フッターに短い行が追加されます。

制限事項

  • JavaScript のみで表示されるページ。 url_to_mindmap はサーバーから送信された HTML を読み取ります。クライアント側でコンテンツをレンダリングするシングルページアプリは、空またはほぼ空の結果になります。その場合はテキストをコピーして、代わりに text_to_mindmap を使用してください。ヘッドレスブラウザーはありません。
  • スキャンされた PDF。 PDF には実際のテキストレイヤーが必要です。スキャン画像や画像のみのエクスポートは、明確なエラーとともに拒否されます。OCR 機能はありません。
  • 長いドキュメントは分割されず、MINDMAP_MAX_INPUT_CHARS で切り捨てられます。 長い PDF では pages を使用するか、セクションごとにマップを作成してください。
  • ヒューリスティックによる結果は下書きです。 文の位置と用語の頻度に基づいて文を順位付けします。安定していて高速ですが、誤った文を選ぶこともあります。まさにそのために client モードがあります。
  • ペイウォール、ログイン、robots。 フェッチャーは Cookie を送信せず、ログインもしません。

セキュリティ

  • SSRF ガード。 url_to_mindmap は最初にホストを名前解決し、MINDMAP_ALLOW_PRIVATE_HOSTS=true を設定しない限り、ループバック、プライベート、リンクローカル(169.254.169.254 のクラウドメタデータアドレスを含む)、CGNAT、マルチキャストの各範囲へのアクセスを拒否します。http: と https: のみ受け付けます。
  • 制限。 フェッチするレスポンスは最大 5 MB、タイムアウトは 15 秒、リダイレクトは最大 5 回です。PDF は最大 50 MB/300 ページで、すべての入力に文字数上限があります。
  • テレメトリーなし、更新チェックなし、ホスト型バックエンドなし。 ネットワーク通信は、指定した URL と、キーを設定した場合に限り、ご自身の LLM エンドポイントとの通信だけです。
  • エクスポートに生の HTML は含まれず、インライン化された JSON 内の </script> はエスケープされます。
  • 脆弱性の報告と、既知の DNS リバインディングに関する注意事項:SECURITY.md。

公開用素材とディレクトリへの掲載

このセクションは、アウトリーチ責任者が管理するプレースホルダーです。 告知文、awesome-list への掲載項目、MCP ディレクトリへの登録(mcp.so、Glama、Smithery、PulseMCP、公式 MCP Registry)は docs/launch.md で管理しており、このファイルでは意図的に空欄にしています。

コントリビューション

Issue やプルリクエストを歓迎します。CONTRIBUTING.md をご覧ください。Node ≥ 22.12 が必要です。

npm ci && npm run lint && npm run typecheck && npm test && npm run build

フル機能のエディターが必要ですか?

mindlm-mcp は、意図的にシンプルに作られています。アウトラインを入力すると、HTML ファイルが 1 つ出力されます。その後もマップを編集したい場合(ノードの移動、ブランチのスタイル変更、共同作業、マップのライブラリの管理など)は、mindlm.io をご利用ください。このパッケージは単独で完全に動作し、mindlm.io と通信することはありません。

ライセンス

MIT © 2026 青澈君

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。