mindmap-mcp-server
Mind Map is a local-first shared memory MCP server that lets you capture, resume, search, and manage context across AI tools (Claude Code, Claude Desktop, Cursor, Windsurf, etc.) without losing context between sessions.
Core Memory Operations
mindmap_capture: Save a portable context summary from any sessionmindmap_resume: Find and return the best-matching saved context for a topic, promoting it to hot/trusted status on reusemindmap_search: Search all saved context by keywords, source, tag, or tiermindmap_list: Browse saved memories with optional filtersmindmap_get: Fetch the full content of a single memory by IDmindmap_transcript: Reconstruct the full original conversation for a memory (Claude Code, Cursor, Copilot sources)
Memory Curation
mindmap_promote: Explicitly mark a memory as trusted (hot tier, slower decay)mindmap_update: Edit title, summary, key points, or tags (supports append mode)mindmap_link: Connect related memories bidirectionallymindmap_prune: Run a consolidation pass to cool unused memories and collapse cold ones to one-line tracesmindmap_forget: Soft-archive or permanently delete a memorymindmap_health: Get a gamified cleanliness score showing live vs. stale memory ratiomindmap_tidy: Batch-review the stalest memories for keep/trim/forget
Brainstorming
mindmap_brainstorm: Load prior idea-threads and persona on a topic to continue brainstorming seamlessly across tools
Persona Management
mindmap_persona: Retrieve a distilled profile of how the user works (stack, style, preferences, constraints)mindmap_persona_set: Save a durable preference so future sessions don't re-askmindmap_persona_forget: Remove or mute a persona factmindmap_persona_learn: Infer persona facts from existing memories (with optional LLM assistance)mindmap_persona_sync: Write persona into native config files of AI tools (CLAUDE.md, Cursor rules, Copilot instructions, Windsurf rules)
Configuration & Transparency
mindmap_config: Adjust decay windows, promoted longevity factor, and gamification settingsmindmap_llm: Configure an optional BYO-key LLM provider (Anthropic, OpenAI, Google, Ollama) for smarter persona inference and hybrid searchmindmap_audit: View a transparent ledger of all memories with provenance, trust score, tier, and decay forecast
Portability & Data Ownership
mindmap_passport_export: Export all memories and persona to a portable JSON filemindmap_passport_import: Import a passport file from another machine, or import data exports from ChatGPT, Claude.ai, Claude Code, Cursor, or Copilot
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., "@mindmap-mcp-server Resume context from last project meeting."
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.
π§ Mind Map β MCP memory & context-handoff server
Ever lose the thread of a discussion across Claude Code, Claude Desktop, and your other AI tools? Mind Map is a small, local-first MCP server that acts as a shared memory layer across all your local MCP clients.
You capture context at the end of a session, and resume it in any other tool β no more re-explaining your project from scratch. Memory you stop using cools and decays gracefully into one-line traces (it's never silently deleted), so your shelf stays small and trustworthy instead of becoming another haystack.
Local-first by design. It runs on your machine; your memories are plain files in
~/.mindmapthat never leave your control. No account, no cloud, no server to trust. Install once withnpx @ravi-labs/mindmap-mcp-server install.
ChatGPT and other cloud/web clients are out of scope for now β they can't reach a local server without a public endpoint, which conflicts with local-first. See Future.
The idea in one loop
Capture (effortless) β at the end of a discussion, save a portable summary.
Resume (promote-on-reuse) β pull it forward in a new session. The act of reusing it is what promotes it to trusted memory. Throwaway sessions never get promoted, so they never clutter your shelf.
Consolidate (automatic) β a background pass cools unused memory through tiers (π₯ hot β π€οΈ warm β βοΈ cold) and collapses cold items to a searchable one-line trace. The moat isn't storing things β it's forgetting well.
Tidy (opt-in, gamified) β a cleanliness score rewards pruning, not hoarding.
Related MCP server: cairn
Install (one command)
Once published to npm, the whole install is:
npx @ravi-labs/mindmap-mcp-server installThis auto-detects your local MCP clients (Claude Desktop, Cursor, Windsurf)
and writes the config for you, and configures Claude Code via its CLI if
present. Restart your client and Mind Map's tools are there. Preview first with
npx @ravi-labs/mindmap-mcp-server install --dry-run; undo with
npx @ravi-labs/mindmap-mcp-server uninstall.
Data lives in ~/.mindmap/ by default β override with the MINDMAP_DIR env var.
Manual setup (if you prefer)
Every client uses the same command β npx -y @ravi-labs/mindmap-mcp-server over stdio.
Claude Code:
claude mcp add mindmap -- npx -y @ravi-labs/mindmap-mcp-serverClaude Desktop β edit claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mindmap": {
"command": "npx",
"args": ["-y", "@ravi-labs/mindmap-mcp-server"]
}
}
}Cursor / Windsurf / other clients β same command + args shape in that
client's MCP config. Add an env block to relocate data:
{ "command": "npx", "args": ["-y", "@ravi-labs/mindmap-mcp-server"],
"env": { "MINDMAP_DIR": "/path/to/my/memory" } }From source (development)
git clone https://github.com/ravi-labs/mindmap-mcp-server.git && cd mindmap-mcp-server
npm install && npm run build
node dist/index.js install --local # points clients at this checkoutUsing it day to day
Just talk naturally inside your AI tool β the model calls the right tool:
"Save this to mind map" β captures the current context
"Resume my work on <topic>" β pulls it back into a fresh session
"What's in my mind map?" / "Show my mind map health" β browse / score
"What do you know about how I work?" β reads your persona (see below)
"Brainstorm <topic> with me" β loads your prior thinking so ideas continue across tools
"Add this to my Goals" / "park this for later" β files it into a collection
"What apps did I start and never finish?" β auto-organizes your memory into collections
"Continue one of my unfinished projects" β pick one, and you're back in the right folder at the exact next step
Run npx @ravi-labs/mindmap-mcp-server quickstart for the full getting-started guide.
Brainstorm across tools
Start an idea in Claude, keep going in Cursor β without re-explaining it. Mind Map is
the shared memory; each tool brings its own brainstorming muscle. mindmap_brainstorm
loads your persona and prior idea-threads on the topic, you brainstorm, and saving with
kind: "brainstorm" lets it resume anywhere. A bundled brainstorm Skill (installed
into ~/.claude/skills by install) wires the load β brainstorm β save flow for Claude.
Organize it your way β Collections
Mind Map always organizes automatically (recency tiers, source, topic, workspace). Collections are your own layer on top: named groups like π― Goals, π ΏοΈ Parking Lot, β Decisions β or anything you invent. Say "add this to my Goals" or "park this" in any tool, or use the dashboard's Organize tab.
Two things make collections more than folders:
Filing protects from decay. A memory in a pinned collection won't be forgotten while it's filed β parking something is a signal it matters. (An explicit "forget this" still wins.)
Every collection is a launcher. "Continue one of my unfinished projects" lists them β each with its π workspace and β³ where you left off β pick one and
mindmap_resumedrops you back in: full topic context, right folder, exact next step.
Don't want to file things by hand? Auto-organize reads across all your sessions and proposes collections β it always looks for unfinished projects (started building, went cold, never shipped), Goals, Decisions, and parked ideas, plus anything you ask for ("everything about billing"). It only suggests; nothing is filed until you accept. Uses your own LLM if configured, otherwise a no-key heuristic.
Make capture automatic
For Claude Code, install adds a SessionEnd auto-capture hook β every
substantive session is distilled into a memory automatically, so you never have
to remember to save. It's deduped (resuming + re-ending updates in place) and
skips trivial/automated sessions. Opt out with install --no-hook; it's removed
cleanly by uninstall.
For other clients (or as a belt-and-braces nudge), add one line to your client's
instructions (e.g. Claude Code's CLAUDE.md):
At the end of a substantive session, call
mindmap_captureto save the context. When I reference past work, callmindmap_resumefirst.
The tools are also described to encourage the model to do this proactively.
Bring in your past sessions
Import your existing Claude history into Mind Map β distilled, not raw dumps:
npx @ravi-labs/mindmap-mcp-server import --dry-run # preview
npx @ravi-labs/mindmap-mcp-server import # applyCovers Claude Code (CLI β full prompts), Cowork (title + opening
message), VS Code Copilot (full prompts), and Cursor (chat titles +
prompts); each memory is tagged by source. Filters: --source code|cowork|copilot|cursor,
--project <name>, --limit N. Imported memories keep their original dates, so
old ones settle into cold traces automatically.
Imported memories capture the discussion (your prompts + the assistant's
substantive answers), not just titles β for the transcript-backed sources
(Claude Code, Cursor, Copilot). Re-run with --reimport to refresh existing
memories in place after an upgrade.
Notes:
Cursor stores chats in a (often multi-GB) SQLite DB, read via Node's built-in SQLite β so Cursor import needs Node 22.5+ (other sources don't).
ChatGPT and Claude.ai web chats can't be imported β they live in the cloud, not local files. (A future "import from data-export file" is planned.)
Tidy up
npx @ravi-labs/mindmap-mcp-server cleanup --dry-run # preview
npx @ravi-labs/mindmap-mcp-server cleanup # applyRemoves automated/scheduled-task memories and collapses duplicate sessions. Anything you've promoted is always kept.
Persona β a profile every tool can read
Beyond individual discussions, Mind Map keeps a persona: a distilled, evolving profile of how you work β your stack, style, communication preferences, and constraints β so any tool can apply it and stop re-asking the same setup questions. It's separate from your discussion memories.
Declared facts: tell a tool "I prefer concise, code-first answers" and it calls
mindmap_persona_set. High confidence, yours, editable.Inferred facts:
mindmap_persona_learnderives recurring signals from your existing memories. No LLM needed (keyword heuristic); richer if you enable one.Tools call
mindmap_personaat the start of a session and apply what's there.
Add this to your client's instructions so it happens automatically:
At the start of a session call
mindmap_personaand apply it. When I state a durable preference, callmindmap_persona_set.
Own your context
A memory you can't extract, inspect, or carry isn't a memory you own. Three features make Mind Map's memory genuinely yours:
Memory Passport β export everything to one portable, open file, and pull your context out of the walled gardens:
npx @ravi-labs/mindmap-mcp-server passport export # β ~/mindmap-passport-<date>.json
npx @ravi-labs/mindmap-mcp-server passport import <file> # from another machine
npx @ravi-labs/mindmap-mcp-server passport import-chatgpt conversations.json # your ChatGPT export
npx @ravi-labs/mindmap-mcp-server passport import-claude conversations.json # your Claude.ai exportThe cloud chats can't be reached live from a local server β but their data export files are yours, and this imports them as distilled memories.
Glass-box memory β see exactly what's stored and why:
npx @ravi-labs/mindmap-mcp-server auditEvery memory shows its provenance (where it came from), trust (how many times you reused it), and decay forecast (when it fades to a one-line trace). In the dashboard, each memory has a one-click Forget. Unlike opaque vector stores, nothing about your memory is hidden from you.
Persona projection β write your persona into each tool's own config, so even non-MCP tools know how you work:
npx @ravi-labs/mindmap-mcp-server persona-sync # Claude, Cursor, Copilot, WindsurfIt edits only a managed block (<!-- mindmap:persona:start -->β¦:end), so your
own content is never touched.
Optional: bring your own LLM key
Mind Map runs fully without any LLM β every feature has a no-LLM path. If you
want smarter persona inference and topic-graph labels, plug in your own
provider (anthropic, openai, google, or local ollama). It's opt-in and
graceful: no key, or a failed call, simply falls back to the no-LLM path, and any
cost notes are rough estimates β never a bill.
Mind Map never stores your API key. It saves only the provider + model name
in ~/.mindmap/llm.json; the key is read from an environment variable at
call time. You set the key; Mind Map just reads it.
Smarter search (optional). Search is BM25 out of the box β no LLM needed. With an embeddings-capable provider (OpenAI, Google, or Ollama β Anthropic has no embeddings API), build a local embedding cache for hybrid search (BM25 fused with semantic similarity via reciprocal rank fusion):
npx @ravi-labs/mindmap-mcp-server embed # build/refresh the local embedding cacheIt re-embeds only new/changed memories, caches vectors in ~/.mindmap/embeddings.json,
and resume / search / brainstorm use it automatically. Without it (or on
Anthropic), search stays on BM25 β never worse.
Step 1 β choose a provider
From the dashboard's Persona tab (LLM section), or via the mindmap_llm tool
(e.g. "set my mindmap llm provider to anthropic"). This writes {provider, model}
to ~/.mindmap/llm.json. Per provider, Mind Map looks for one env var:
Provider | Env var it reads | Default model |
|
| claude-sonnet-4-6 |
|
| gpt-4o |
|
| gemini-1.5-pro |
| (none β local) | llama3.1 |
Step 2 β give it the key
The key must be visible to the process that needs it. There are two ways, and which one you need depends on the surface:
A. Shell profile β for the dashboard / CLI, and for Claude Code (its MCP servers inherit your shell environment):
# ~/.zshrc (or ~/.bashrc)
export ANTHROPIC_API_KEY="sk-ant-β¦"Then source ~/.zshrc and restart. Run the dashboard from that same shell and
it'll pick the key up.
B. The client's MCP config env block β for GUI clients (Claude Desktop,
Cursor, Windsurf), which launch MCP servers without your shell environment, so
the export above won't reach them. Add an env map to Mind Map's entry:
{
"mcpServers": {
"mindmap": {
"command": "npx",
"args": ["-y", "@ravi-labs/mindmap-mcp-server"],
"env": { "ANTHROPIC_API_KEY": "sk-ant-β¦" }
}
}
}Trade-off: method B writes the key into that client's config file in plain text. That's the only way some GUI clients can pass it through β but if you'd rather not have a key on disk, prefer method A (or launch the GUI app from a terminal that already has the variable exported, so it inherits it).
There is no key field in the dashboard or tools by design β a key typed into a web form would have to be transmitted and stored to be useful, which is exactly the credential-on-disk pattern Mind Map avoids. You set the env var yourself.
For ollama there's no key at all β just run ollama serve locally and pick the
ollama provider.
Step 3 β verify
Call mindmap_llm with no arguments (or open the dashboard Persona tab). When the
key is visible it reports ready β e.g. "β ANTHROPIC_API_KEY detected."
After setting the env var, restart the server/client so it's picked up.
See your memory β the dashboard
npx @ravi-labs/mindmap-mcp-server dashboard # http://127.0.0.1:7777A local web UI (loopback-only) with six views:
List β memories grouped by π₯/π€οΈ/βοΈ tier, searchable; click one to read its summary, key points, and full discussion (the complete conversation, reconstructed on demand and rendered as Markdown). A π badge + filter mark memories that have a full transcript; a File intoβ¦ control files it into a collection.
Tree β π§ β source β project β discussion, with linked threads joined.
Graph β an auto-derived topic map: categories as hubs, sessions connected by relatedness, with category filter chips and live search. An opt-in β¨ LLM labels button relabels the topic clusters using your own LLM.
Organize β your collections (each item with β³ where you left off), the β¨ Auto-organize proposer, and a live breakdown of how memory is organized automatically (by tier, source, workspace, topic).
Persona β view and edit your profile (see above), add preferences, run inference, and configure the optional LLM β all from the browser.
Activity β a live console of every MCP call across your tools (redacted, from
~/.mindmap/calls.jsonl).
A β³ Sync button imports new sessions on demand, and a cleanliness score rewards a tidy, trusted memory β not a big one.
Tools
Tool | What it does |
| Silently save a context summary (the effortless half of the loop). |
| Find + return the best context for a topic; promotes on reuse. Also a launcher: pass |
| List distinct candidate topics (with workspace) so the user can pick which to resume. |
| On-demand session sync β "update mind map with my recent work". |
| File memories into collections β "add this to my Goals", "park this". |
| View collections; opening one shows workspace + where-you-left-off per item. |
| Auto-organize: scan everything, propose collections (unfinished projects, goals, decisions, parked). Preview-first. |
| Brainstorm a topic with your memory β loads prior idea-threads so ideas continue across tools. |
| Read-only search across every tier and tool. |
| Browse memories with filters. |
| Fetch one memory's full content. |
| Reconstruct the full original conversation for a memory (Claude Code / Cursor / Copilot). |
| Explicitly bless a memory as trusted (β hot). |
| Trim / edit / retag β the human curation moment. |
| Connect related threads (the lightweight "map"). |
| Run the consolidation pass on demand ( |
| Soft-archive to a trace, or |
| Gamified cleanliness score (opt-in). |
| Batch of stalest memories to keep / trim / forget. |
| View / change decay windows and toggles. |
| Read your persona β apply it at session start to stop re-asking. |
| Record a durable preference (stack/style/constraintsβ¦). |
| Mute or delete a persona fact. |
| Infer persona facts from your memories (LLM-assisted if configured). |
| Write your persona into your tools' native config files. |
| Configure the optional BYO-key LLM (provider/model; key stays in your env). |
| Glass-box ledger: provenance, trust, and decay forecast for every memory. |
| Export all memories + persona to one portable file. |
| Import a passport, or a ChatGPT / Claude.ai data export. |
How it stores things
~/.mindmap/
βββ threads/<id>.json # one file per memory (human-readable JSON)
βββ index.json # fast list/search index
βββ config.json # tunable thresholds + gamification toggle
βββ persona.json # your evolving profile (declared + inferred facts)
βββ collections.json # your collections (Goals, Parking Lot, β¦) β ids only
βββ llm.json # optional LLM provider + model (never your API key)
βββ calls.jsonl # redacted log of every MCP call (the Activity view)
βββ embeddings.json # optional local embedding cache for semantic searchPlain files you own and can inspect, grep, back up, or sync yourself. Tiers map to the mental model: hot = mem, warm = files, cold = drive (trace).
Secrets are masked before saving. Because memories are plain files β and
imports can pull in keys pasted into past sessions β every memory is scanned for
common credential shapes (API keys, tokens, private keys) and they're replaced
with [REDACTED:β¦] before anything is written. Masked memories are flagged (π).
Best-effort, local, no LLM; toggle with the redactSecrets config.
Tuning decay
// defaults (mindmap_config to change at runtime)
{
"hotWindowMs": 7 days, // active memory stays hot this long
"warmWindowMs": 30 days, // then warm; past it β cold trace
"promotedLongevityFactor": 2, // blessed memories decay 2Γ slower
"gamification": true
}Develop
npm run dev # watch mode (tsx)
npm run build # type-check + emit dist/
npm test # end-to-end smoke tests (stdio + http) in throwaway data dirsFuture
ChatGPT / cloud clients (parked). A cloud client can't reach a local server
without exposing it publicly (a tunnel or a host), which breaks the local-first
promise. An HTTP transport already ships in the codebase
(TRANSPORT=http, with bearer-token auth + origin allow-listing) for anyone who
chooses to self-host β but it's intentionally not the default path. Revisiting
ChatGPT later likely means an opt-in hosted tier with per-user encryption, a
deliberate trust decision rather than a default.
Other directions:
Auto-capture hooks per client so the "capture" step is invisible.
Embedding-based semantic recall (current search is token-overlap).
LLM-assisted relatedness edges in the graph (labels already opt-in).
OAuth + per-user data isolation (only needed if a hosted tier ever happens).
License
Available Tools
26 toolsmindmap_auditAudit what's stored (glass-box)ARead-onlyIdempotent
Show a transparent ledger of everything Mind Map knows β each memory's provenance (where it came from), trust (promote-on-reuse count), tier, last use, and when it will fade to a one-line trace. Use when the user asks "what do you know about me?", "what's stored?", or wants to review/clean their memory.
Args: limit (number, optional, default 30). Returns: the ledger rows.
Inputs: limit.
mindmap_brainstormBrainstorm with memoryA
Start (or continue) a brainstorm on a topic WITH your shared memory. This pulls your prior thinking on the topic β past brainstorms first, then related discussions and your persona β so an idea you explored in one tool continues seamlessly in another. It does NOT replace your own brainstorming ability: use this to load context, then brainstorm with your full capability (and any brainstorming skill you have), then save the result.
CALL THIS PROACTIVELY when the user wants to brainstorm / ideate / "think through" / "explore options" on something that may have history. Reusing a past brainstorm promotes it (promote-on-reuse).
Flow: 1) call this with the topic β get prior context; 2) brainstorm, building on it; 3) save what's worth keeping with mindmap_capture(kind="brainstorm").
Args:
topic (string): what you're brainstorming about Returns: a brainstorm pack β persona + prior idea-threads to build on.
Inputs: topic (required).
mindmap_captureCapture contextA
Silently save a portable context summary from the current session so it can be resumed later in any tool. This is the effortless 'capture' half of the loop. New captures start as 'captured' (warm tier); they become trusted 'promoted' memories the first time you resume them.
CALL THIS PROACTIVELY (you don't need to be asked) when: a substantive discussion is wrapping up; the user says they're done / switching tasks / "remember this" / "save this"; a key decision, plan, or conclusion was reached; or the user signals they'll continue later. Write the summary so a future session in a DIFFERENT tool could pick up with full context. Skip trivial one-off exchanges.
Args:
title (string): short topic title
summary (string): the portable context to inject into a future session (markdown ok)
key_points (string[]): scannable discussion points (optional)
tags (string[]): topic tags for filtering (optional)
source (string): Origin tool, e.g. 'claude-code', 'chatgpt', 'chat', 'cowork', 'claude-desktop'.
links (string[]): ids of related threads to connect (optional)
kind ('discussion'|'brainstorm'): mark brainstorm sessions so they can be resumed/clustered as ideas (default 'discussion')
next_steps (string[]): open work / what to do next β capture this so resuming can CONTINUE the thread, not just re-read it (optional but high-value)
Returns: the created thread id and its formatted record.
Inputs: title (required), summary (required), kind, tags, +5 more.
mindmap_configView / change settingsAIdempotent
View or change Mind Map settings: decay windows, the promoted longevity factor, and the gamification toggle. Omit all args to just view current settings.
Args (all optional): hot_window_days, warm_window_days, promoted_longevity_factor, gamification. Returns: the effective config.
Inputs: gamification, hot_window_days, warm_window_days, promoted_longevity_factor.
mindmap_forgetForget a memoryADestructiveIdempotent
Forget a memory. By default this is a soft forget: statusβarchived, kept only as a searchable one-line trace (recall never hard-fails). Set hard=true to permanently delete the file.
Args: id (string), hard (boolean, default false). Returns: confirmation.
Inputs: id (required), hard.
mindmap_getGet a memoryARead-onlyIdempotent
Fetch the full content of one memory by id. Read-only (does not change freshness).
Args: id (string). Returns: the full thread.
Inputs: id (required).
mindmap_healthMemory healthARead-onlyIdempotent
The opt-in gamified curation surface. Reports a cleanliness score β the share of memory that is still live (hot+warm) vs stale β which rewards pruning, not hoarding. Also lists stale candidates worth a tidy pass.
Args: none. Returns: health report.
Inputs: no named parameters.
mindmap_importImport / sync sessionsA
Scan your local AI-tool history and import any NEW sessions into Mind Map β across Claude Code, Cursor, Copilot, and Cowork. Use this when the user says things like "import my sessions", "sync mind map", "update mind map with my latest work", "pull in my recent sessions", or "refresh my memory". (Mind Map also auto-imports periodically if enabled, but this does it on demand, now.)
Args:
source ('all'|'code'|'cursor'|'copilot'|'cowork'): limit to one source (default all)
reimport (boolean): also refresh already-imported sessions in place (default false) Returns: how many sessions were imported / refreshed / skipped.
Inputs: source, reimport.
mindmap_linkLink two memoriesAIdempotent
Connect two memories so related threads (e.g. planning in Chat + code in Claude Code) cross-reference each other. Bidirectional. This is the lightweight 'map' connective tissue.
Args: id (string), target_id (string). Returns: confirmation.
Inputs: id (required), target_id (required).
mindmap_listList memoriesARead-onlyIdempotent
List saved memories with optional filters, newest-used first. Read-only.
Args: source/tag/tier filters, include_archived (default false), limit (default 20). Returns: list of memories.
Inputs: tag, tier, limit, source, +1 more.
mindmap_llmConfigure optional LLM (BYO key)AIdempotent
Mind Map runs fully WITHOUT an LLM. This is opt-in: plug in your OWN provider to unlock smarter features (LLM-assisted persona inference, richer summaries).
Security: Mind Map stores only the provider + model name. It NEVER stores your API key β the key is read from your environment (ANTHROPIC_API_KEY / OPENAI_API_KEY / GOOGLE_API_KEY; ollama needs none). Set the env var yourself.
Args (all optional β omit all to just see status):
provider: none | anthropic | openai | google | ollama
model: override the default model
baseUrl: for ollama / self-hosted (default http://localhost:11434) Returns: current provider/model, whether it's ready, and a rough cost note.
Inputs: model, baseUrl, provider.
mindmap_passport_exportExport memory passportARead-only
Export all memories + persona to a single portable JSON file you own β to back up, move to another machine, or hand to a fork. This is your context, extractable.
Args: path (string, optional) β output file (default ~/mindmap-passport-.json). Returns: the file path and counts.
Inputs: path.
mindmap_passport_importImport memory passport / data exportA
Bring context IN. Either a Mind Map passport file (from another machine), or pull your conversations OUT of a walled garden by pointing at its exported data file:
kind 'passport' (default): a Mind Map passport JSON
kind 'chatgpt': ChatGPT's exported conversations.json
kind 'claude': Claude.ai's exported conversations.json The cloud chats themselves can't be reached live, but their EXPORT FILES are yours β this imports them as distilled memories.
Args: file (string, required), kind ('passport'|'chatgpt'|'claude', default 'passport'). Returns: import counts.
Inputs: file (required), kind.
mindmap_personaGet user personaARead-onlyIdempotent
Return the user's persona β a distilled profile of how they work (stack, style, communication, constraints), so you can make aligned defaults and AVOID re-asking things they've already established.
CALL THIS PROACTIVELY at the start of a session before asking the user setup-style questions (their stack, preferences, conventions). Apply high-confidence facts silently; only ask when something needed isn't covered.
Args:
project (string, optional): include preferences scoped to this project on top of global ones. Returns: an "About this user" block + fact count.
Inputs: project.
mindmap_persona_forgetForget a preferenceADestructiveIdempotent
Remove or mute a persona fact (e.g. it's wrong or out of date). Get ids from mindmap_persona. Default mutes (recoverable); hard=true deletes.
Args: id (string), hard (boolean, default false). Returns: confirmation.
Inputs: id (required), hard.
mindmap_persona_learnInfer persona from memoryA
Derive persona facts from your existing memories. If you've configured an LLM (mindmap_llm), it extracts richer facts β style, constraints, workflow; otherwise it runs a no-LLM keyword heuristic over your stack/tools. Either way, inferred facts get lower confidence than declared ones and never override what you've explicitly set.
Args: none. Returns: how many facts were added/updated and which path ran.
Inputs: no named parameters.
mindmap_persona_setRecord a user preferenceA
Save a durable preference about how the user works, so future sessions don't re-ask. Use this when the user states a lasting preference β "I prefer X", "always Y", "never Z", "I'm on macOS", "we use Postgres". (For saving a discussion, use mindmap_capture instead β this is for standing preferences.)
Args:
text (string): the preference, e.g. "Prefers concise, code-first answers"
category: identity | stack | style | communication | constraints | workflow | goals
polarity ('prefer'|'avoid'|'fact'): default 'prefer'
project (string, optional): scope to one project instead of global Returns: the saved fact.
Inputs: text (required), category (required), project, polarity.
mindmap_persona_syncWrite persona into your toolsAIdempotent
Project the user's persona into the native instruction files of their AI tools (Claude CLAUDE.md, Cursor rules, Copilot instructions, Windsurf rules), so even non-MCP tools know how they work β from one source. Writes only inside a managed block; never clobbers the user's own content. By default writes the global Claude config + any detected project tools.
Args:
targets (string[], optional): specific target ids (claude-global, claude-project, cursor, copilot, windsurf)
force (boolean, optional): write even if a tool isn't detected Returns: per-target outcomes.
Inputs: force, targets.
mindmap_promotePromote a memoryAIdempotent
Explicitly bless a memory as trusted: marks it 'promoted' and moves it to the hot tier so it ranks first and decays slower. Use when you know a memory matters even if you haven't resumed it yet.
Args: id (string). Returns: the updated thread.
Inputs: id (required).
mindmap_prunePrune / consolidate memoryAIdempotent
Run the consolidation pass that the background thread runs automatically: recompute every memory's tier by age + usage, cooling unused ones and collapsing cold ones to a one-line trace (still searchable, never deleted). Nothing is destroyed.
Args: dry_run (boolean, default false) β preview changes without writing. Returns: what moved between tiers.
Inputs: dry_run.
mindmap_resumeResume contextA
Restart a topic by describing it in plain words β "pick up the promotion-roadmap discussion", "continue the buyer-service refactor". Resolves your description to the best match, then reassembles the WHOLE topic: the anchor memory plus its linked + closely-related fragments (a topic is usually spread across several sessions/tools), merged into one thread to continue from. Promotes the anchor on reuse. If captured, surfaces "where you left off" (next steps) so you can keep going, not just re-read.
CALL THIS PROACTIVELY at the START of a session when the user references prior work β "let's continue", "restart the X discussion", "the X project", or any topic that may have history.
Args:
query (string): topic / what you want to restart, in natural language
id (string): resume a SPECIFIC memory by id β use after the user picks from mindmap_resume_options
source (string): only resume memories from this origin tool (optional) (Provide query OR id.)
Returns: a merged topic thread (anchor + related fragments) + where you left off + which workspace to continue in, or near-misses.
Inputs: id, query, source.
mindmap_resume_optionsList topics to resume (let the user pick)ARead-onlyIdempotent
When the user's description is ambiguous or could match SEVERAL different topics, list the distinct candidate topics β each with the workspace it lived in β so you can ASK the user which one to resume instead of guessing. Read-only: promotes nothing. After the user picks, call mindmap_resume with that choice's id.
Args:
query (string): the user's natural-language description
source (string): restrict to one origin tool (optional) Returns: up to 5 distinct candidate topics (id, title, workspace, source, last used).
Inputs: query (required), source.
mindmap_searchSearch memoriesARead-onlyIdempotent
Search across all saved context (every tier, every tool) to relocate a past discussion. Read-only β does not change freshness or tiers (use mindmap_resume to actually pull a memory forward).
Args:
query (string): keywords; empty string browses by recency
source/tag/tier: optional filters
include_archived (boolean): include forgotten traces (default false)
limit (number): max results (default 10)
Returns: ranked list of matching memories.
Inputs: tag, tier, limit, query, +2 more.
mindmap_tidyTidy passARead-onlyIdempotent
Return a small batch of the stalest memories for a quick keep / trim / forget review β the opt-in curation game. Read-only: it only suggests. Act on items with mindmap_promote (keep), mindmap_update (trim), or mindmap_forget.
Args: limit (number, default 5). Returns: stalest cold memories.
Inputs: limit.
mindmap_transcriptFull discussionARead-onlyIdempotent
Reconstruct and return the FULL original conversation for a memory (every user + assistant turn), read live from its source transcript. The summary is the distilled gist; this is the complete discussion when you need the detail.
Only available for transcript-backed sources (Claude Code, Cursor, Copilot). Cowork / Claude desktop-app sessions saved no transcript, so this returns a notice instead.
Args: id (string). Returns: the full discussion as turns, or why it's unavailable.
Inputs: id (required).
mindmap_updateUpdate / trim a memoryA
Edit a memory β the human curation moment. Trim a stale summary, refine key points, retitle, or retag. Any omitted field is left unchanged. Set append=true to append to summary/key_points instead of replacing.
Args: id, title?, summary?, key_points?, tags?, append (default false). Returns: the updated thread.
Inputs: id (required), tags, title, append, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 26 tools
The tools are generally distinct in purpose, but the read-only retrieval and curation clusterβsearch/list/get/transcript/audit/resume_options/health/tidyβhas enough overlap that an agent might pick the wrong one. Strong descriptions mitigate most confusion, so only a few pairs are genuinely easy to confuse.
Every tool is prefixed with mindmap_ and uses a predictable action-driven pattern such as capture, search, update, forget, promote, resume, import, and export. Subfamilies like persona_set/persona_forget/persona_learn and passport_export/passport_import are consistently namespaced.
26 tools is a heavy surface, just past the 16-25 'heavy but borderline' range. The breadth is justified by the domainβmemory lifecycle, persona, config, and portabilityβbut several curation and retrieval helpers could likely be consolidated.
The set provides full lifecycle coverage: capture, read, search, update, link, promote, prune, forget, resume, plus persona management, import/export, and configuration. Minor gaps such as an explicit unlink or unarchive are edge cases and can be worked around without dead-ending the agent.
Maintenance
Related MCP Connectors
Shared memory for your AI tools: tasks, notes and context every tool can read and write over MCP.
Cross-tool persistent memory and context for AI assistants over MCP.
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
shared AI-context layer for teams β persistent memory your agents search and update over MCP
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA local-first memory server for AI tools that provides cross-tool, consent-gated, and auditable memory management via MCP.AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceSelf-hosted personal context layer that gives AI agents shared memory via MCP.MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that provides a shared, private memory for multiple AI tools, enabling cross-model recall and automatic session ingestion.43 npm1MIT
- AlicenseAqualityBmaintenanceA local-first MCP server that provides a shared Markdown-based memory for AI coding agents, enabling cross-agent context persistence via tools like memory_search and memory_capture.161MIT