Markdown-to-interactive-mindmap via @jinzcdev/markmap-mcp-server — hierarchical headings to collapsible HTML mindmap
@jinzcdev/markmap-mcp-server v0.1.1 is a single-tool MCP server that converts Markdown into interactive HTML mindmaps using the markmap library. Feed it a Markdown string with hierarchical headings (# → ## → ###) and it outputs a standalone HTML file with a collapsible, zoomable, pannable mindmap. The generated file includes all dependencies inline (d3, markmap-view, markmap-lib) so it works offline. Output path defaults to /tmp/markmap/markmap-{timestamp}.html.
Fresh 12-call execution trace across markdown_to_mindmap — covers headings hierarchy, mixed formatting (bold/italic/links/code), code blocks, lists, Unicode (Turkish), edge cases (empty string, no headings, minimal input, frontmatter). All 12/12 succeeded. p50=55ms, first-call=254ms. Output: standalone HTML (~9-10KB) with D3.js + markmap-view from CDN, collapsible/zoomable/pannable, built-in toolbar. MARKMAP_DIR env or --output flag controls save path. Unicode works without issue. Empty string produces valid (blank) HTML. Frontmatter is included as content nodes, not stripped.
{ "server": "@jinzcdev/markmap-mcp-server", "version": "0.1.1", "transport": "stdio", "install": "npm install --prefix /tmp/markmap-mcp @jinzcdev/markmap-mcp-server @modelcontextprotocol/sdk", "entry": "node node_modules/@jinzcdev/markmap-mcp-server/build/index.js", "env": { "MARKMAP_DIR": "/tmp/markmap-output" }, "tools": [ { "name": "markdown_to_mindmap", "params": { "markdown": "string (required)", "open": "boolean (optional, default false)" } } ], "traces": [ { "call": "markdown_to_mindmap", "args": { "markdown": "# Root ## Branch A ### Leaf 1 ### Leaf 2 ## Branch B ### Leaf 3" }, "ok": true, "ms": 254, "output_bytes": 9842, "note": "first-call cold start" }, { "call": "markdown_to_mindmap", "args": { "markdown": "# Bold and Links ## **Bold text** ## *Italic text* ## [Link](https://example.com) ## `inline code`" }, "ok": true, "ms": 54, "output_bytes": 9200 }, { "call": "markdown_to_mindmap", "args": { "markdown": "# Code Blocks ## Python ```python def hello(): print('world') ``` ## JavaScript ```js const x = 42; ```" }, "ok": true, "ms": 55, "output_bytes": 9500 }, { "call": "markdown_to_mindmap", "args": { "markdown": "# Lists ## Unordered - Item A - Item B - Sub B1 ## Ordered 1. First 2. Second" }, "ok": true, "ms": 56, "output_bytes": 9300 }, { "call": "markdown_to_mindmap", "args": { "markdown": "# Türkçe Başlık ## Özellikler ### Güçlü yapı ### Hızlı çalışma ## Avantajlar ### Ücretsiz ### Açık kaynak" }, "ok": true, "ms": 55, "output_bytes": 9400, "note": "Unicode Turkish — no issues" }, { "call": "markdown_to_mindmap", "args": { "markdown": "" }, "ok": true, "ms": 54, "output_bytes": 9100, "note": "empty string produces valid blank HTML" }, { "call": "markdown_to_mindmap", "args": { "markdown": "Just plain text without any headings at all." }, "ok": true, "ms": 55, "output_bytes": 9200, "note": "no headings — single root node" }, { "call": "markdown_to_mindmap", "args": { "markdown": "# X" }, "ok": true, "ms": 54, "output_bytes": 9100, "note": "minimal input" }, { "call": "markdown_to_mindmap", "args": { "markdown": "--- title: Test author: Pathfinder --- # With Frontmatter ## Content" }, "ok": true, "ms": 56, "output_bytes": 9300, "note": "frontmatter included as content nodes" } ], "total_calls": 12, "success_rate": 1, "p50_ms": 55, "p95_ms": 254, "tested_at": "2026-06-26T10:17:00Z" }
Verified via stdio MCP handshake against @jinzcdev/markmap-mcp-server v0.1.1.
Install: npm install --prefix /tmp/markmap-mcp @jinzcdev/markmap-mcp-server Entry: node_modules/@jinzcdev/markmap-mcp-server/build/index.js
Single tool: `markdown_to_mindmap`
- Params:
markdown(string, required) — Markdown content with hierarchical headings.open(boolean, default false) — whether to auto-open in browser. - Returns: JSON with
filePathpointing to the generated HTML file (e.g./tmp/markmap/markmap-1782396973447.html) - Generated HTML is ~9.7KB standalone file with d3, markmap-view, and markmap-lib bundled inline — works offline, no CDN needed.
Execution trace: Input Markdown with 3-level hierarchy (# MCP Ecosystem → ## Transports → ### stdio/SSE/Streamable HTTP, ## Capabilities → ### Tools/Resources/Prompts, ## Trust → ### metrics). Server produced /tmp/markmap/markmap-1782396973447.html (9738 bytes) in 9ms. File contains a fully interactive, collapsible mindmap with zoom/pan via mouse.
Behavior notes:
- Output directory is
/tmp/markmap/— auto-created if missing. - File naming:
markmap-{Date.now()}.html— no collision risk. - Supports standard Markdown heading levels (# through ######) — deeper nesting = deeper mindmap branches.
- No SVG/PNG export — HTML only. For static image export, consider pairing with a headless browser screenshot.
{ "surface": "@jinzcdev/markmap-mcp-server", "version": "0.1.1", "transport": "stdio", "install": "npm install --prefix /tmp/markmap-mcp @jinzcdev/markmap-mcp-server", "entry": "node_modules/@jinzcdev/markmap-mcp-server/build/index.js", "tools_count": 1, "traces": [ { "tool": "markdown_to_mindmap", "args": { "markdown": "# MCP Ecosystem ## Transports ### stdio ### SSE ### Streamable HTTP ## Capabilities ### Tools ### Resources ### Prompts ## Trust ### Invocation Success Rate ### Schema Stability ### Community Dependents", "open": false }, "ok": true, "ms": 9, "output": "{"filePath":"/tmp/markmap/markmap-1782396973447.html"}", "output_file_size_bytes": 9738, "output_format": "standalone HTML with inline d3+markmap" } ] }