io.github.ravi-labs/mindmap-mcp-server
NPM · @RAVI-LABS/MINDMAP-MCP-SERVER · SCANNED AUG 6
Local-first memory & context-handoff across AI tools — capture in one, resume in another. No cloud.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security87
- No malware found by supply-chain analysis.Pass
- Known CVEs were checked across the 94 of 95 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Dependency health was assessed across the 94 of 95 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 36 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability63
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3829 tokens (~147/item across 26 items; 26 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management33
- Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @ravi-labs/mindmap-mcp-server
claude mcp add ravi-labs-mindmap-mcp-server -- npx -y @ravi-labs/mindmap-mcp-server
codex mcp add ravi-labs-mindmap-mcp-server -- npx -y @ravi-labs/mindmap-mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ravi-labs-mindmap-mcp-server": {
"type": "local",
"command": [
"npx",
"-y",
"@ravi-labs/mindmap-mcp-server"
],
"enabled": true
}
}
} openclaw mcp add ravi-labs-mindmap-mcp-server --command npx --arg -y --arg @ravi-labs/mindmap-mcp-server
mcp_servers:
ravi-labs-mindmap-mcp-server:
command: "npx"
args: ["-y", "@ravi-labs/mindmap-mcp-server"] {
"mcpServers": {
"ravi-labs-mindmap-mcp-server": {
"command": "npx",
"args": [
"-y",
"@ravi-labs/mindmap-mcp-server"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 6 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 4 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Aug 26 +61
- Provenance: unverified → fail ▼ security
- Malware scan: unverified → pass ▲ security
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Stability: unverified → 0.20 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- License: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Maintenance: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Licence: Apache-2.0 functional
- 1 Aug 26 −46
- Known CVEs: partial → unverified ▼ security
- Provenance: fail → unverified ▼ security
- Install scripts: pass → unverified ▼ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Capabilities: pass → unverified ▼ functional
- License: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: partial → unverified ▼ functional
- Maintenance: pass → unverified ▼ functional
- Licence: Apache-2.0 functional
- 31 Jul 26 +25
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +2
- Malware scan: pass → unverified ▼ security
- Tool coverage: unverified → 100 ▲ functional
- 28 Jul 26 −20
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 44
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 6 Aug 2026 · Analysed npm/@ravi-labs/[email protected]
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Dependencies 94 packages
| Packages resolved | 94 |
|---|---|
| Deprecated | 94 |
| Stale | 29 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
mindmap_audit Audit what's stored (glass-box) ~109
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max rows |
No output schema declared.
No examples provided.
mindmap_brainstorm Brainstorm with memory ~222
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.
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | yes | Brainstorm topic / question |
No output schema declared.
No examples provided.
mindmap_capture Capture context ~486
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.
| Name | Type | Req | Description |
|---|---|---|---|
| key_points | array | — | Scannable discussion points |
| kind | string | — | Thread kind |
| links | array | — | ids of related threads to link |
| next_steps | array | — | Open work / where you left off — so resuming can continue |
| source | string | — | Origin tool, e.g. 'claude-code', 'chatgpt', 'chat', 'cowork', 'claude-desktop'. |
| summary | string | yes | Portable context summary (markdown ok) |
| tags | array | — | Topic tags for filtering |
| title | string | yes | Short topic title |
| workspace | string | — | Absolute project/workspace folder this is about — lets resume suggest where to continue |
No output schema declared.
No examples provided.
mindmap_config View / change settings ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| gamification | boolean | — | Enable health/tidy surface |
| hot_window_days | number | — | Days a thread stays hot |
| promoted_longevity_factor | number | — | How much slower promoted memories decay |
| warm_window_days | number | — | Days before warm→cold |
No output schema declared.
No examples provided.
mindmap_forget Forget a memory ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| hard | boolean | — | Permanently delete instead of archive |
| id | string | yes | Thread id |
No output schema declared.
No examples provided.
mindmap_get Get a memory ~48
Fetch the full content of one memory by id. Read-only (does not change freshness). Args: id (string). Returns: the full thread.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Thread id |
No output schema declared.
No examples provided.
mindmap_health Memory health ~65
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
mindmap_import Import / sync sessions ~185
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.
| Name | Type | Req | Description |
|---|---|---|---|
| reimport | boolean | — | Refresh already-imported sessions too |
| source | string | — | Which source(s) to import |
No output schema declared.
No examples provided.
mindmap_link Link two memories ~82
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | First thread id |
| target_id | string | yes | Second thread id |
No output schema declared.
No examples provided.
mindmap_list List memories ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_archived | boolean | — | Include archived traces |
| limit | integer | — | Max results |
| source | string | — | Filter by origin tool |
| tag | string | — | Filter by tag |
| tier | string | — | Filter by tier |
No output schema declared.
No examples provided.
mindmap_llm Configure optional LLM (BYO key) ~216
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.
| Name | Type | Req | Description |
|---|---|---|---|
| baseUrl | string | — | Base URL for ollama / self-hosted |
| model | string | — | Model name override |
| provider | string | — | LLM provider, or 'none' to disable |
No output schema declared.
No examples provided.
mindmap_passport_export Export memory passport ~90
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-<date>.json). Returns: the file path and counts.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | — | Output file path |
No output schema declared.
No examples provided.
mindmap_passport_import Import memory passport / data export ~164
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Path to the file to import |
| kind | string | — | File kind |
No output schema declared.
No examples provided.
mindmap_persona Get user persona ~137
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.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | — | Current project name for scoped prefs |
No output schema declared.
No examples provided.
mindmap_persona_forget Forget a preference ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| hard | boolean | — | Permanently delete instead of mute |
| id | string | yes | Persona fact id |
No output schema declared.
No examples provided.
mindmap_persona_learn Infer persona from memory ~96
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
mindmap_persona_set Record a user preference ~212
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Which dimension this preference is about |
| polarity | string | — | prefer / avoid / fact |
| project | string | — | Scope to a project (default: global) |
| text | string | yes | The preference statement |
No output schema declared.
No examples provided.
mindmap_persona_sync Write persona into your tools ~162
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.
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | — | Write even if tool not detected |
| targets | array | — | Target ids to write |
No output schema declared.
No examples provided.
mindmap_promote Promote a memory ~76
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Thread id |
No output schema declared.
No examples provided.
mindmap_prune Prune / consolidate memory ~90
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | — | Preview without writing changes |
No output schema declared.
No examples provided.
mindmap_resume Resume context ~303
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | — | Resume this specific memory id (e.g. a picked choice) |
| query | string | — | Topic / what you want to restart (natural language) |
| source | string | — | Restrict to this origin tool |
No output schema declared.
No examples provided.
mindmap_resume_options List topics to resume (let the user pick) ~149
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).
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | What the user wants to resume |
| source | string | — | Restrict to this origin tool |
No output schema declared.
No examples provided.
mindmap_search Search memories ~179
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_archived | boolean | — | Include forgotten traces |
| limit | integer | — | Max results |
| query | string | — | Keywords; empty = browse by recency |
| source | string | — | Filter by origin tool |
| tag | string | — | Filter by tag |
| tier | string | — | Filter by tier |
No output schema declared.
No examples provided.
mindmap_tidy Tidy pass ~94
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | How many to review |
No output schema declared.
No examples provided.
mindmap_transcript Full discussion ~114
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Thread id |
No output schema declared.
No examples provided.
mindmap_update Update / trim a memory ~145
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.
| Name | Type | Req | Description |
|---|---|---|---|
| append | boolean | — | Append instead of replace |
| id | string | yes | Thread id |
| key_points | array | — | New (or appended) key points |
| summary | string | — | New (or appended) summary |
| tags | array | — | Replace tags |
| title | string | — | New title |
No output schema declared.
No examples provided.