Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Turn text, web pages and PDFs into interactive mind maps. MCP server + CLI, no API key.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
MINDMAP_OUTPUT_DIR, ANTHROPIC_API_KEY, OPENAI_API_KEY, OPENAI_BASE_URL, MINDMAP_LLM_MODEL, MINDMAP_ALLOW_PRIVATE_HOSTS「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"mindlm": {
"command": "npx",
"args": [
"-y",
"mindlm-mcp",
"serve"
],
"env": {
"MINDMAP_OUTPUT_DIR": "your-value",
"ANTHROPIC_API_KEY": "your-value",
"OPENAI_API_KEY": "your-value",
"OPENAI_BASE_URL": "your-value",
"MINDMAP_LLM_MODEL": "your-value",
"MINDMAP_ALLOW_PRIVATE_HOSTS": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add mindlm --env MINDMAP_OUTPUT_DIR=your-value --env ANTHROPIC_API_KEY=your-value --env OPENAI_API_KEY=your-value --env OPENAI_BASE_URL=your-value --env MINDMAP_LLM_MODEL=your-value --env MINDMAP_ALLOW_PRIVATE_HOSTS=your-value -- npx -y mindlm-mcp serve動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"mindlm": {
"command": "npx",
"args": [
"-y",
"mindlm-mcp",
"serve"
],
"env": {
"MINDMAP_OUTPUT_DIR": "your-value",
"ANTHROPIC_API_KEY": "your-value",
"OPENAI_API_KEY": "your-value",
"OPENAI_BASE_URL": "your-value",
"MINDMAP_LLM_MODEL": "your-value",
"MINDMAP_ALLOW_PRIVATE_HOSTS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"mindlm": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mindlm-mcp",
"serve"
],
"env": {
"MINDMAP_OUTPUT_DIR": "your-value",
"ANTHROPIC_API_KEY": "your-value",
"OPENAI_API_KEY": "your-value",
"OPENAI_BASE_URL": "your-value",
"MINDMAP_LLM_MODEL": "your-value",
"MINDMAP_ALLOW_PRIVATE_HOSTS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
MINDMAP_OUTPUT_DIR envOPENAI_BASE_URL envMINDMAP_LLM_MODEL envMINDMAP_ALLOW_PRIVATE_HOSTS envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント qingchejun で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:ANTHROPIC_API_KEY, OPENAI_API_KEY
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.1)がレジストリに届いたのは23 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Georgia MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
An MCP server for Georgian public data, read from the organizations that publish it.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Turn text, web pages and PDFs into interactive mind maps — an MCP server *and* a command-line tool, with no API key required.
npx -y mindlm-mcp demo
That renders a built-in example and opens it. One HTML file, no build step, no account, no key.
Docs and a live demo: https://qingchejun.github.io/mindlm-io/ · Source: https://github.com/qingchejun/mindlm-io
Every client runs the same command — npx -y mindlm-mcp serve — and needs no environment variables. MINDMAP_OUTPUT_DIR below is optional; it just decides where exported files land.
claude mcp add mindlm -- npx -y mindlm-mcp serve
Scope it to one project with --scope project, and pass environment variables with -e:
claude mcp add mindlm -e MINDMAP_OUTPUT_DIR=~/Documents/mindmaps -- npx -y mindlm-mcp serve
Check it with claude mcp list, or /mcp inside a session.
Add this to claude_desktop_config.json, then restart the app:
{
"mcpServers": { "mindlm": { "command": "npx", "args": ["-y", "mindlm-mcp", "serve"], "env": { "MINDMAP_OUTPUT_DIR": "~/Documents/mindmaps" } } } }
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonThe same block goes in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": { "mindlm": { "command": "npx", "args": ["-y", "mindlm-mcp", "serve"] } } }
Ready-to-copy versions of all three live in examples/configs/.
Then ask for a mind map in plain language — *"make a mind map of this PDF"*, *"map out https://example.com/article"* — and the client picks the right tool.
Four tools, always advertised in this order. The three *_to_mindmap tools return a Markdown outline; export_mindmap turns an outline into an HTML file. Every result carries both a readable text block and structuredContent.
text_to_mindmapOutline text or Markdown you already have — a draft, notes, a transcript, a pasted chapter.
| Field | Type | Notes | |||
|---|---|---|---|---|---|
text | string, required | The content to map. Capped by MINDMAP_MAX_INPUT_CHARS. | |||
mode | auto \ | client \ | llm \ | heuristic | Default auto. |
title | string | Root node title. Derived from the source if omitted. | |||
maxDepth | int 2–6 | Levels including the root. Default 4. | |||
maxChildren | int 3–15 | Children kept per node. Default 8. | |||
language | string | e.g. "English", "中文". Defaults to the source language. | |||
export | boolean | Also render an HTML file and return its path. | |||
outputPath | string | Where that file goes. |
Input:
{
"text": "# Tides\n\nSpring tides are the largest of the month.\n\n## Neap\n\nNeap tides are the smallest.\n" }
structuredContent (default auto mode with no API key, i.e. client mode):
{
"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. …" }
With "mode": "heuristic" (or when an API key makes it "llm") the result is the same minus sourceText and instructions — the outline is final and ready to export.
url_to_mindmapFetch a page and outline its main content. Article text is extracted with Readability; navigation, footers and boilerplate are dropped. Page furniture goes too: reference markers ([1]), "[edit]" links, notes above the article, image captions, navigation boxes, and the trailing *See also* / *References* / *Notes* / *Further reading* / *External links* / *Bibliography* sections, which are link lists rather than content. A URL that serves a PDF is handed to the PDF pipeline automatically.
| Field | Type | Notes |
|---|---|---|
url | string, required | http(s) only. Private and loopback addresses are refused. |
| … | plus every option from text_to_mindmap |
Input:
{ "url": "https://example.com/tide-tables", "mode": "heuristic" }
structuredContent adds a source block describing where the text came from:
{
"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_mindmapRead a local PDF, using its bookmarks as the skeleton when it has them. A PDF stores positioned lines rather than paragraphs, so the soft-wrapped lines of one paragraph are rejoined before sentences are split — otherwise a browser's "print to PDF" would yield nodes like "releases oxygen." instead of whole sentences.
| Field | Type | Notes |
|---|---|---|
path | string, required | Path to a local PDF. ~ is expanded. |
pages | string | 1-based selection: "1-20", "3", "1-5,9". All pages by default. |
| … | plus every option from text_to_mindmap |
Input:
{ "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_mindmapRender a Markdown outline into a standalone HTML mind map. Call this after you (or your model) have written the outline. It will not overwrite an existing file unless you ask.
| Field | Type | Notes |
|---|---|---|
markdown | string, required | One # root, then ##/### and - bullets. |
title | string | Page title. Defaults to the outline root. |
outputPath | string | File, or a directory to generate a name in. |
offline | boolean | Inline every script. Default true. |
toolbar | boolean | Zoom / fit / expand toolbar. Default true. |
initialExpandLevel | int −1–6 | Levels expanded on open; -1 expands everything. |
colorFreezeLevel | int 0–6 | Stop changing branch colour below this level. |
maxWidth | int 0–2000 | Maximum node width in pixels; 0 is unlimited. |
overwrite | boolean | Replace the file if it exists. Default false. |
returnHtml | boolean | Include the whole document in the result. Default false. |
branding | boolean | Add a small "Made with mindlm-mcp" footer link. Default false. |
Input:
{
"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 }
The server also exposes one prompt, mindmap_outline, which returns the outline rules (optionally in a given language) followed by an instruction to call export_mindmap.
The same pipeline without a client. With no arguments and no terminal attached, mindlm-mcp starts the MCP server — which is what an MCP client wants.
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
| Command | What it does |
|---|---|
serve | Start the MCP server on stdio. |
demo | Render the built-in example (--no-open to skip the browser). |
text | Outline a .txt/.md file, or - for stdin. |
url | Fetch a page and outline its main content. |
pdf | Outline a local PDF. |
export | Render an existing Markdown outline. |
doctor | Report what is configured and where files will be written. |
Options on the conversion commands:
| Option | Meaning |
|---|---|
-o, --output | Write here. A .md path writes the outline, .html the mind map. |
--title | Root node title and page title. |
--md | Print the Markdown outline to stdout. |
--mode | How the outline is written. |
--depth / --max-children | Shape of the tree. |
--lang | Language for the node labels. |
--provider / --model | Override the LLM configuration. |
--no-offline | Link CDN assets instead of inlining them. |
--no-toolbar | Hide the mind map toolbar. |
--open | Open the result in a browser. |
--overwrite | Replace the output file if it exists. |
--branding | Add the "Made with mindlm-mcp" footer link. |
-q, --quiet | Only print results, no progress. |
--env-file | Load environment variables from a file first. |
Results a script might consume (a file path, an outline) go to stdout; progress and diagnostics go to stderr. Exit codes: 0 ok, 1 usage error, 2 input error, 3 LLM error.
There is also a small programmatic API — textToOutline, urlToOutline, pdfToOutline, renderMindmapHtml, exportMindmap — exported from the package root.
Deciding what belongs in the tree is the hard part, and there are three ways to do it. You never have to supply a key for any of this to work.
| Mode | When it is used | What happens |
|---|---|---|
client | MCP default with no key | The server returns a rule-based draft, the cleaned source text and instructions. Your client's model — the one you are already talking to — rewrites the outline and calls export_mindmap. Nothing leaves your machine except what the client already sees. |
heuristic | CLI default with no key | Rules only, no network: headings become branches, ranked sentences become leaves. Fast, deterministic, offline. |
llm | Whenever ANTHROPIC_API_KEY or OPENAI_API_KEY is set | The server calls that model itself, over plain fetch, using your key and your endpoint. Falls back to the heuristic draft if the call fails. |
mode: "auto" (the default everywhere) picks the row that applies. You can always force one with mode over MCP or --mode on the CLI. Run mindlm-mcp doctor to see which one auto resolves to right now.
There is no hosted service b
冒頭だけを表示しています。続きはリポジトリで読めます