An MCP server that captures ideas from AI conversations and organizes them into a persistent, hierarchical mindmap — surviving across sessions.
Why mindkeeper
Ideas captured during a conversation shouldn't vanish when the session ends. mindkeeper-mcp makes them permanent.
Every idea is stored in ~/.mindkeeper/mindmap.json. Restart your AI, reopen the terminal — your mindmap is still there.
Nest ideas under parents to build a tree. Explore any subtree, reorganize by re-parenting, and get the full map in one call.
All data lives on your machine in a plain JSON file you control. No telemetry. Optional cloud backup via private GitHub Gist.
Weighted scoring across text and tags. Exact matches, substring matches, and per-token hits — ranked by relevance.
Attach tags to any node for cross-cutting categorization. Use #tag or plain names — the hash is stripped automatically. Search by tag or export with tag metadata intact.
Export your entire mindmap as a nested Markdown list — paste into docs, notes, or any text tool instantly.
Serialized write queue and atomic temp→backup→rename strategy ensure the file is never corrupted under parallel tool calls.
Use with Claude Desktop, Claude Code, or any client implementing the Model Context Protocol.
Drop your mindmap.json on the Visualize page for an interactive, zoomable mindmap — no install required, fully client-side.
The same idea under the same parent is never added twice — no matter how many times the AI tries to capture it.
Push and pull your mindmap to a private GitHub Gist. Auto-creates the Gist on first push and saves the ID back to config.
Export as Markdown, Mermaid flowchart, OPML (for MindNode / OmniOutliner), or raw JSON for the browser visualizer.
Add people, teams, companies and projects with add_entity, tie them with link_entities, ask reports_of / members_of / projects_of, import a CSV and export Mermaid or mindkeeper-map JSON.
Every edit is logged with an optional effective date. snapshot_as_of shows the chart on any day and diff_between lists who joined, left or moved. See a reorg diff.
Quick start
Install globally from npm, then register it as an MCP server in your client.
npm install -g mindkeeper-mcp
claude mcp add mindkeeper -- mindkeeper-mcp
// claude_desktop_config.json
{
"mcpServers": {
"mindkeeper": {
"command": "mindkeeper-mcp"
}
}
}
Open the config via Settings → Developer → Edit Config, or find it at %APPDATA%\Claude\claude_desktop_config.json (Windows) / ~/Library/Application Support/Claude/claude_desktop_config.json (macOS).
⚠️ Restart Claude Desktop after saving the config — it only reads MCP servers on launch.
# Ask your AI assistant:
"Add 'Ship v2 by Q3' to my mindmap
under the strategy node,
tagged #roadmap #q3"
Prefer local install?
npm install mindkeeper-mcp then use
claude mcp add mindkeeper -- node ./node_modules/.bin/mindkeeper-mcp
MCP Tools
Every tool is callable by your AI assistant. No configuration required beyond installation. Write tools also take an optional effectiveDate for changes that happened earlier.
| Tool | Key parameters | What it does |
|---|---|---|
add_idea |
text, parentId?, tags? |
Capture a new idea, optionally nested under a parent node |
update_node |
nodeId, newText, newTags? |
Edit the text or tags of an existing node |
delete_node |
nodeId |
Remove a node; children are orphaned but preserved |
search_ideas |
query |
Full-text scored search across all node text and tags |
get_mindmap |
nodeId? |
Retrieve the full tree, or a subtree from a given node |
export_markdown |
— | Export the entire mindmap as a nested Markdown list |
export_mermaid |
— | Export as a Mermaid flowchart — paste into GitHub, Notion, or Obsidian |
export_opml |
— | Export as OPML — import into MindNode, OmniOutliner, or XMind |
export_json |
— | Export raw JSON — use with the online visualizer |
export_html |
— | Generate a self-contained interactive HTML mindmap (zoom + pan, PNG/SVG export) saved to ~/.mindkeeper/mindmap-export.html |
import_claude_export |
filePath |
Parse a conversations.json from Claude.ai's data export and build a mindmap from your conversation history |
sync_cloud |
direction |
Push or pull the mindmap to/from a private GitHub Gist |
cloud_status |
— | Show current cloud sync configuration |
add_entity |
name, kind, parentId?, attrs?, tags? |
Add a typed entity (person, company, team, role, project, idea) with attributes such as title or email |
link_entities |
from, to, type, label? |
Record a relation outside the tree, e.g. a person works_on a project |
unlink_entities |
linkId? or from, to, type? |
Remove a relation |
move_node |
nodeId, newParentId? |
Re-parent a node and its subtree (new manager, new team); refuses cycles |
get_history |
nodeId?, since?, until?, limit? |
Recorded changes, newest first, with before/after values and effective dates |
snapshot_as_of |
date |
The map or org chart as it stood on a date |
diff_between |
dateA, dateB? |
Who joined, left, moved or was renamed between two dates, plus links added/removed |
projects_of |
entityId, includeReports? |
Projects a person, team or company is on (tree or links) |
members_of |
groupId |
People in a project, company or team |
reports_of |
personId, all? |
A person's manager and direct (or all) reports |
export_orgchart |
rootId?, format? |
Org chart as a Mermaid flowchart TB and mindkeeper-map JSON (with links) |
export_csv |
rootId? |
CSV: id,name,title,manager,kind plus other attributes |
import_csv |
csv? or filePath?, parentId? |
Build or update an org chart from a CSV; edits land in the history |
Interactive Demo
Explore a live mindmap visualization and the underlying JSON schema.
Explore the interactive mindmap with sample data and full JSON schema breakdown — rendered by mindkeeper-map.js, no external dependencies.
Open interactive demo →