NeuroStack
Token-efficient MCP memory for Markdown vaults.
Connector by raphasouthall · GitHub account verified by the MCP Registry
Install
Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/raphasouthall-neurostack
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://mcp.neurostack.sh/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: knowledge-base, agent-memory, note-taking
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
Runs code on install
Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.
- Tools
- 17 read · 13 write · 3 delete
- Secrets
- None asked for
- Install scripts
- Runs code on install
- Runs as
- Node.js package
Tools by what they do 33
Read from the source code; the running server may list different tools.
Read 17 · Look things up without changing anything.
session_briefvault_communitiesvault_contextvault_diffvault_graphvault_graph_analysisvault_harvestvault_harvest_transcriptvault_list_filesvault_memoriesvault_prediction_errorsvault_read_file
Show 5 more tools
vault_relatedvault_searchvault_statsvault_summaryvault_triples
Write 13 · Create, change, send or run things.
queue_addqueue_claimvault_checkpointvault_mergevault_promotion_queuevault_record_usagevault_remembervault_session_endvault_session_startvault_trigger_outcomevault_triggersvault_update_memory
Show 1 more tools
vault_write_file
Delete 3 · Delete, drop, revoke or wipe things.
queue_finishvault_delete_filevault_forget
Secrets and settings it asks for
Other settings (environment variables or headers).
NEUROSTACK_VAULT_ROOT
Network hosts it talks to 7
astral.sh· found in codedocs.astral.sh· found in codegithub.com· found in codemcp.neurostack.sh· found in remote endpoint, install commandollama.com· found in codeopenrouter.ai· found in coderaw.githubusercontent.com· found in code
Files it touches
~/.claude/projects- Your home directory (~)
~/.cache/neurostack~/.cache/neurostack/sessions~/.config/neurostack/client.toml~/.local/share/neurostack/neurostack.db~/brain- Any path the agent passes to its tools
Tools (33)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
queue_addQueue a checkpoint or harvest job with the transcript it runs on. Idempotent per key while a job for that key is queued or running: a repeat returns `duplicate: true` and changes nothing. The checkpoint queue refuses past its daily cap (`ok: false`, `reason`). Args: queue: "checkpoint" or "harvest" key: Dedupe key; the session id for a checkpoint, path@mtime for a harvest payload: Job fields the worker reads (session, harness, format, path, provider) transcript_gz_b64: The session transcript, gzip-compressed then base64-encoded, at most 10 MB once decompressed
queue_claimTake the freshest queued job, transcript included, or say why the queue waits. Reaps runs whose worker went stale first. At most one job per queue runs at a time, and the daily cap counts jobs finished since local midnight. Args: queue: "checkpoint" or "harvest"
queue_finishRecord how a claimed job ended and drop its transcript. Args: job_id: The job_id queue_claim returned ok: True marks the job done, False marks it failed saved: Memories the run saved output: One line on the outcome, kept to 2000 characters
session_briefGet a compact ~500 token session brief. Includes: recent vault changes with summaries, git commits, recent memories, top connected notes, time-of-day context, and ``learn``: how the server's checkpoint and harvest queues are saving. Args: workspace: Optional vault subdirectory prefix to restrict results (e.g. "work/acme-cloud")
vault_checkpointRecord the current vault state as a named diff baseline. Saves `{path -> content_hash}` for every indexed note under `baseline`, overwriting any previous snapshot of that name. A later vault_diff(baseline=…) then reports what changed since this checkpoint. Use distinct names for independent cursors (e.g. one per autonomous loop). Args: baseline: Baseline name to save under (default "default").
vault_communitiesAnswer global queries using GraphRAG community summaries. Unlike vault_search (which retrieves specific chunks), this answers thematic questions like "what topics dominate my vault?" or "what are the main research areas I've been exploring?" by running community detection summaries through a map-reduce synthesis. Args: query: Natural language question about vault themes/topics top_k: Number of communities to retrieve (default 6) level: Community hierarchy level — 0=coarse themes (default), 1=fine sub-themes map_reduce: Use LLM map-reduce synthesis (True) or raw hits (False) …
vault_contextAssemble task-scoped context for session recovery after /clear or new conversation. Unlike session_brief (time-anchored status snapshot), this is task-anchored: it retrieves memories, triples, summaries, and session history relevant to a specific task description, respecting a token budget. Args: task: Description of the current task or goal token_budget: Maximum approximate tokens in response (default 2000) workspace: Optional vault subdirectory to scope (hard filter) include_memories: Include relevant memories (default True) include_triples: Include relevant triples (de…
vault_delete_fileDelete a markdown file from the vault. Commits + pushes to origin/main. Same path-safety rules as the write/read tools. Returns deleted=False with an error if the file does not exist. Conflict and rollback behaviour matches vault_write_file. Args: path: Relative .md path under vault_root. commit_message: Optional. Default: "vault_delete_file: <path> (via MCP)".
vault_diffShow what changed in the vault: additions, modifications, deletions. Two modes: - Baseline (default): diff the current index against a named stored baseline (saved via vault_checkpoint). Reports added / modified / deleted notes — deletions and additions are only visible this way. `has_baseline` is False until you checkpoint at least once (until then every note reads as added). - Date (`since` given): notes with `updated_at` after an ISO date/datetime. Combines additions and modifications; cannot surface deletions. Args: since: Optional ISO date/datetime (e.g. "2026-07-01") to ena…
vault_forgetDelete a specific memory by ID. The memory leaves the working set (search, drift, ranking) but is archived, not destroyed — `neurostack memories restore ID` brings it back. Args: memory_id: The ID of the memory to delete (from vault_remember or vault_memories)
vault_graphGet wiki-link neighborhood for a note with summaries and PageRank. One call replaces manually following links across files. Args: note: Note path (e.g. "research/predictive-coding.md") depth: How many link-hops to traverse (default 1) workspace: Optional vault subdirectory prefix to restrict neighbors (e.g. "work/acme-cloud")
vault_graph_analysisFind structural gaps and bridge notes in the wiki-link graph. Pure structural analysis of the link graph — no embeddings, no LLM: - `gaps`: unlinked note pairs that share many neighbours, ranked by Adamic-Adar (rare shared neighbours count for more). These are candidate links worth adding — notes that discuss overlapping topics but aren't connected. - `bridges`: notes that hold the graph together, ranked by betweenness centrality. Each flags whether removing it fragments the graph (an articulation point) and into how many pieces — the notes whose loss would most isolate parts of t…
vault_harvestExtract insights from recent AI coding sessions and save as memories. Scans session transcripts for decisions, bugs, conventions, and learnings. Deduplicates against existing memories before saving. Supports multiple providers: claude-code, vscode-chat, codex-cli, aider. Args: sessions: Number of recent sessions to scan (default 1) dry_run: If True, show what would be saved without saving provider: Restrict to a single provider name, or omit for all
vault_harvest_transcriptExtract insights from a session transcript you POST here, and save them. Unlike vault_harvest, this reads nothing off the server's filesystem — send the transcript text and a client on any machine can harvest its own sessions. Deduplicates against existing memories before saving. source_agent names the transcript FORMAT, not the machine: one of claude-code, vscode-chat, codex-cli, aider, gemini-cli, omp. A large transcript must be split on NEWLINE boundaries and posted as several calls; each chunk is harvested independently and near-duplicate insights across chunks are dropped. Re-posting a…
vault_list_filesList markdown files under a vault directory. Hidden segments (.git, .obsidian, .trash, .neurostack, .claude, etc.) are always excluded from results. Args: directory: Relative directory under vault_root. "" = vault root. pattern: Glob pattern (default "*.md"). Only .md files are returned regardless of pattern. recursive: If True (default), walk subdirectories.
Show 18 more tools
vault_memoriesSearch or list agent-written memories. Without a query, lists recent memories. With a query, searches by content using FTS5 + semantic similarity, newer memories first among equals and superseded ones last. Without a workspace, memories in the workspace where most of the query's notes sit rank higher. Args: query: Optional search query (FTS5 + semantic). None = list recent. entity_type: Filter by type — "observation", "decision", "convention", "learning", "context", or "bug". None = all. workspace: Optional vault subdirectory to scope results limit: Max resul…
vault_mergeMerge two memories. Source is folded into target; source is deleted. Use this after vault_remember reports near_duplicates. Keeps the longer content, unions tags, keeps the more specific entity type, and tracks the merge in an audit trail. Args: target_id: Memory to keep (receives merged content) source_id: Memory to fold in (deleted after merge)
vault_prediction_errorsReturn prediction errors — note or memory signals that surprised at retrieval. Note-centric (semantic distance between a note and the query that retrieved it): - low_overlap: cosine distance > 0.62 — note is semantically distant from what retrieved it - contextual_mismatch: note surfaced outside its expected domain context AND was only a weak fit (sim < 0.45) — a strong hit outside the context boost set is not a mismatch Only notes that surprised >= 2 distinct retrieval events are surfaced. Memory-centric (issue #38): - memory_drift: an agent-written memory has drifted from the current con…
vault_promotion_queueMemories whose knowledge should be promoted into vault notes. Worklist, four buckets (issue #92): 'debt' (tagged promotion-debt), 'drift' (unresolved memory_drift rows), 'dead_handoffs' (stale context memories that read as handoffs; 'open-thread' tag exempts), 'uncovered' (durable memories the judgement model says no note records yet, each with its 0-3 'coverage' score and nearest note). Coverage verdicts are cached, so a memory is judged once until it or its nearest notes change; 'uncovered_pending' counts memories the judge did not answer this time. A downstream agent writes the notes and c…
vault_read_fileRead a markdown file from the vault. By default returns the whole file. For a large note, pass `offset` and/or `limit` (both measured in characters of the decoded text) to read a bounded slice and page through it instead of pulling the whole body into context — the footprint fix behind lean reference mode (issue #62). When a bound is applied the result also carries `size_chars`, the `offset` used, and `truncated` (True when content remains past the returned slice). Args: path: Relative path under vault_root (e.g. "home/projects/foo.md"). Must end in .md. Absolute paths, '..', a…
vault_record_usageRecord that specific notes were retrieved and used in this session. Drives hotness scoring — frequently used notes score higher in future searches. This is the strong 'used' tier of the two-tier activation signal (issue #95); surfacing alone (search returns, auto-RAG vault_context injections) is logged server-side as weak 'primed' events. Mostly unnecessary now: the server infers a use from read-after-surface — opening a just-surfaced note via vault_read_file (issue #103). This call is the explicit override, for consumption the server cannot observe: acting on a snippet or a summary without …
vault_relatedFind semantically related notes using embedding similarity. Unlike vault_graph (which follows explicit wiki-links), this discovers connections based on semantic content similarity - notes that discuss similar topics even if not explicitly linked. Args: note: Note path (e.g. "research/predictive-coding.md") top_k: Number of related notes to return (default 10) workspace: Optional vault subdirectory prefix to restrict results (e.g. "work/acme-cloud")
vault_rememberSave a memory - persist an observation, decision, or learning for future retrieval. Memories are searchable alongside vault notes. Use this to record: - Architecture decisions made during a session - Bug root causes discovered - Conventions or patterns established - Context that should survive across sessions Args: content: The memory content to save (1-2 sentences recommended) tags: Optional tags for filtering (e.g. ["auth", "refactor"]) entity_type: Type of memory - "observation", "decision", "convention", "learning", "context", or "bug" source_agent: Name of the ag…
vault_searchSearch the vault. One query, results ranked best first. Pick `depth` by what you are going to do with the answer: - Answering a factual question ("what IP", "which model") -> "triples". - Deciding which note to open -> "summaries", or reference_only=True. - About to edit or act on a note's content -> "full". - Unsure -> leave "auto", which starts cheap and escalates. Transcript evidence says agents mostly leave "auto" and sometimes invent values like "shallow" or "quick". Only the four names above are accepted; anything else raises rather than silently falling back, because a silent fallbac…
vault_session_endEnd a memory session, storing the summary you write for it. Call at the end of a work session. NeuroStack does not write the summary: pass your own 2-3 sentence account of the session in ``summary``, or omit it to close the session with no summary. If auto_harvest=True, extracts insights from the most recent session transcript and saves them as memories. Args: session_id: The session ID returned by vault_session_start summary: Caller-written session summary; omit for none auto_harvest: Run harvest on the latest session (default True)
vault_session_startStart a new memory session to group related memories. Call at the beginning of a work session. All memories saved with the returned session_id will be grouped together and can be reviewed or summarized as a unit. Args: source_agent: Name of the agent starting the session (e.g. "claude-code", "cursor") workspace: Optional vault subdirectory scope (e.g. "work/acme-cloud")
vault_statsGet index health: note count, embedding coverage, graph stats, triple stats.
vault_summaryGet pre-computed summary for a note by path or search query. Returns 2-3 sentence summary + frontmatter (~100-200 tokens) instead of reading the full file (~500-2000 tokens). Args: path_or_query: Note path (e.g. "research/predictive-coding.md") or search query
vault_trigger_outcomeReport whether a fired trigger memory was followed (issue #136). Call once per fired memory, a few tool calls after vault_triggers returned it. Either outcome marks the logged firing (trigger_log.followed), so the obey count is measurable too (issue #159). followed=false also records a 'trigger_ignored' prediction error; the promotion queue's drift bucket lists the memory with its running ignore count and suggests retiring the trigger after three. Nothing is deleted automatically. Args: memory_id: The memory vault_triggers returned followed: True if the agent changed course because o…
vault_triggersMemories whose trigger tag matches the current moment (issue #131). A trigger is a tag with one of three prefixes: 'when-editing:<glob>' (file path of an Edit/Write), 'when-calling:<tool>' (tool name), 'when-error:<substring>' (tool error text). Harness hooks call this on tool events and inject the hits; the caller owns once-per-session suppression. Each hit is logged to trigger_log (issue #136) so the hook can later report with vault_trigger_outcome whether it was followed. Untagged memories are never returned. Args: event: One of "editing", "calling", "error" value: The path, tool …
vault_triplesSearch knowledge graph triples for structured facts. Returns compact Subject-Predicate-Object facts (~10-20 tokens each). Use this for quick factual lookups instead of reading full notes. Args: query: Natural language search query top_k: Number of triples to return (default 10) mode: Search mode - "hybrid" (default), "semantic", or "keyword" workspace: Optional vault subdirectory prefix to restrict results (e.g. "work/acme-cloud")
vault_update_memoryUpdate an existing memory. Only provided fields are changed. Args: memory_id: The memory to update content: New content (re-embeds if changed) tags: Replace tags entirely (pass [] to clear) add_tags: Add these tags to existing set remove_tags: Remove these tags from existing set entity_type: Change type workspace: Change workspace scope ttl_hours: Set or change TTL. Pass 0 to make permanent.
vault_write_fileCreate or overwrite a markdown file in the vault. Commits + pushes to origin/main. Requires a YAML frontmatter block with required fields date, tags, type; hard-rejects writes that lack any of them. On push conflict, attempts `git pull --rebase --autostash` and retries once; on second failure, rolls back the local commit and returns pushed=false. Args: path: Relative .md path under vault_root. content: Full file content. Must start with `---\n...\n---\n` YAML. commit_message: Optional. Default: "vault_write_file: <path> (via MCP)".
Signals
- Stars
- 47
- Forks
- 5
- Open issues
- 29
- Contributors
- 2
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Sep 24, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.raphasouthall/neurostack- Version
- 0.12.0
- Auth
- Auth not stated
- Packages
- npm neurostack
- License
- Apache-2.0
- Repository
- github.com/raphasouthall/neurostack
- Website
- neurostack.sh
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
NeuroStack MCP server. Agent Mart. https://agentmart.dev/connectors/raphasouthall-neurostack (last updated 2026-10-24)