Skip to content
Agentmart
Submit a tool

NeuroStack

Token-efficient MCP memory for Markdown vaults.

Connector by raphasouthall · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)Remote (HTTP)★ 47
Write a review

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/mcp Remote (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.

We use your email only for this newsletter. Privacy

About

Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.

Use cases: knowledge-base, agent-memory, note-taking

No 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_brief
  • vault_communities
  • vault_context
  • vault_diff
  • vault_graph
  • vault_graph_analysis
  • vault_harvest
  • vault_harvest_transcript
  • vault_list_files
  • vault_memories
  • vault_prediction_errors
  • vault_read_file
Show 5 more tools
  • vault_related
  • vault_search
  • vault_stats
  • vault_summary
  • vault_triples

Write 13 · Create, change, send or run things.

  • queue_add
  • queue_claim
  • vault_checkpoint
  • vault_merge
  • vault_promotion_queue
  • vault_record_usage
  • vault_remember
  • vault_session_end
  • vault_session_start
  • vault_trigger_outcome
  • vault_triggers
  • vault_update_memory
Show 1 more tools
  • vault_write_file

Delete 3 · Delete, drop, revoke or wipe things.

  • queue_finish
  • vault_delete_file
  • vault_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 code
  • docs.astral.sh · found in code
  • github.com · found in code
  • mcp.neurostack.sh · found in remote endpoint, install command
  • ollama.com · found in code
  • openrouter.ai · found in code
  • raw.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_add

    Queue 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_claim

    Take 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_finish

    Record 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_brief

    Get 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_checkpoint

    Record 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_communities

    Answer 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_context

    Assemble 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_file

    Delete 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_diff

    Show 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_forget

    Delete 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_graph

    Get 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_analysis

    Find 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_harvest

    Extract 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_transcript

    Extract 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_files

    List 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_memories

    Search 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_merge

    Merge 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_errors

    Return 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_queue

    Memories 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_file

    Read 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_usage

    Record 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_related

    Find 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_remember

    Save 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_search

    Search 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_end

    End 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_start

    Start 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_stats

    Get index health: note count, embedding coverage, graph stats, triple stats.

  • vault_summary

    Get 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_outcome

    Report 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_triggers

    Memories 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_triples

    Search 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_memory

    Update 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_file

    Create 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
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)