
Mindmap Mcp Server
io.github.ravi-labs由 GitHub 账号 ravi-labs 发布v0.5.0更新于 Oct 24, 2026
Local-first memory & context-handoff across AI tools — capture in one, resume in another. No cloud.
概览
本地优先的 MCP 记忆服务器,可在一个 AI 工具中保存会话上下文,并在另一个工具中恢复,数据以纯文件形式存放在本机。
- 可以做什么
- 捕获、恢复并列出跨本地 MCP 客户端的会话上下文,提供候选主题选择,并按需导入 Claude Code、Cursor、Copilot 和 Cowork 的历史会话。搜索、浏览、读取、关联、编辑、提升、清理和遗忘记忆,并可重建完整原始对话。将记忆归入集合、自动整理为建议分组,并基于既有想法线索就某主题进行头脑风暴。读取、设置、推断、同步和删除描述你工作方式的 persona 档案。审计来源、信任度和衰减预测,导出或导入记忆护照(含 ChatGPT 与 Claude.ai 数据导出),并配置衰减窗口和可选 LLM 提供商。
- 适用场景
- 适合在多个本地 AI 客户端之间切换、反复解释同一项目的用户,或希望拥有可检查、会逐渐冷却而非无限膨胀的长期会话记忆的人。也适合希望上下文以本地纯文件保存、可导出携带的用户。
- 运行要求
- 通过 npx 作为本地 stdio 进程运行,需要 Node.js(仅 Cursor 历史导入需要 Node 22.5+)。无需账号或云服务。数据默认存放在 ~/.mindmap,可用 MINDMAP_DIR 环境变量更改位置。LLM 密钥为可选项,使用时从 ANTHROPIC_API_KEY、OPENAI_API_KEY 或 GOOGLE_API_KEY 读取,或使用本地 ollama。
安装
在 SourceWeft 中
- 打开 控制台中的 Mindmap Mcp Server,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
🧠 Mind Map — MCP memory & context-handoff server
[npm] [CI] [License: Apache-2.0] [Node]
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.
Install (one command)
Once published to npm, the whole install is:
This 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 Desktop — edit claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
Cursor / Windsurf / other clients — same command + args shape in that
client's MCP config. Add an env block to relocate data:
From source (development)
Using 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:
Covers 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
Removes 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:
The 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:
Every 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:
It 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):
It 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:
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):
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:
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
A 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
How it stores things
Plain 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
Develop
Future
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
来源:README.md,提交 87ef0fb
工具
0版本历史
1- v0.5.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分