Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@neruva/mcp) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@neruva/mcp
MCP server for Neruva — memory + reasoning substrate for AI agents. Knowledge graph (5 engines), Pearl do-operator, HD analogy, episodic CBR, deterministic replay. Drop into Claude Code / Cursor / Codex / Gemini CLI in one line.
For Claude Code users: see neruva.io/claude-code for the 30-second install + first-queries to try.
What's new in 0.23.0 — Native hook binary (sub-100ms cache-hit latency)
We benchmarked Neruva against the 2026 agent-memory field and made the hook faster than Mem0 without giving up any of the capability surface.
| System | p95 | Capability |
|---|---|---|
| Neruva 0.23 (cache hit) | ~80ms | Full cognitive surface |
| Mem0 | ~200ms | Vector memory only |
| Mem0g (graph) | ~2.6s | KG + vector |
| Letta / MemGPT | 1.4–17s | OS-style paging |
| RAG baseline | 450ms+ | Embedding + vector + rerank |
What changed: @neruva/mcp 0.23 bundles neruva-record-hook as a native Rust binary (~145-340 KB per platform; all 6 of Win/Mac/Linux × amd64/arm64). The hook talks to a long-lived Python daemon over TCP localhost. The daemon holds a warm httpx connection pool to api.neruva.io plus an in-memory TTL cache so consecutive prompt/tool-call hooks within a turn skip the network entirely.
Install:
# 1. MCP server. The -p ... neruva-mcp form is REQUIRED because 0.23+
# ships two bins (neruva-mcp + neruva-record-hook) and npx can't
# auto-pick when a package exposes more than one.
npx -y -p @neruva/mcp@latest neruva-mcp
# 2. The Python daemon comes from neruva-record (pip)
pip install neruva-record
neruva-record install # writes ~/.claude/settings.json hooks
# That's it. Restart Claude Code.Your ~/.claude.json mcpServers entry should be:
{
"neruva": {
"type": "stdio",
"command": "npx",
"args": ["-y", "-p", "@neruva/mcp@latest", "neruva-mcp"],
"env": { "NERUVA_API_KEY": "nv_..." }
}
}On install, @neruva/mcp exposes neruva-record-hook on your PATH (a tiny Node wrapper that exec's the platform-native binary). neruva-record install wires it into ~/.claude/settings.json for UserPromptSubmit + PostToolUse. The daemon auto-spawns on first SessionStart and stays warm for 30 minutes after the last hook fire (NERUVA_DAEMON_IDLE_S override).
For max speed, you can skip the Node wrapper entirely by pointing settings.json directly at the bundled binary path:
{
"hooks": {
"UserPromptSubmit": [{
"hooks": [{
"type": "command",
"command": "<npm-root>/@neruva/mcp/binaries/neruva-record-hook-<plat>-<arch>"
}]
}]
}
}Removes the ~80ms Node startup. Total per-hook overhead drops to ~80ms p95 on cache hit, ~200ms on cache miss. The daemon's TTL cache (default 30s, override NERUVA_DAEMON_CACHE_TTL_S) means tool-heavy turns reuse the recall/turns fetches at ~$0/call.
Cost impact: NEGATIVE. TTL cache reduces Cloud Run requests by ~50-80% during tool-heavy turns. Stop-time prefetch is net-zero (shifts a request from hot path to idle path; result is cached and reused). No new infra, no new services.
What's new in 0.22.0 — Auto-pilot surface (the moat)
Two new tools complete the auto-pilot that makes the substrate use itself. The agent automatically routes user intents to the right cognitive primitive AND self-curates memory across sessions, without the user ever telling it which Neruva tool to call.
agent_route_intent_prompt— returns the canonical 18-pattern intent classifier (counterfactual / analogy / theory-of-mind / rule induction / causal / planning / recall / comparison / state / composition / decision / mistake, plus 6 code-graph navigation intents). Pair withNERUVA_AUTO_ROUTE=1inneruva-recordfor hands-free routing on every user prompt.agent_reflect_prompt— returns the canonical reflection prompt that extracts durable decisions / facts / mistakes / open questions from recent turns. Pair withNERUVA_AUTO_REFLECT=1inneruva-recordfor hands-free self-curation. Next session boots with curated context, not raw transcript.
Both endpoints are pattern-C: substrate emits a prompt, caller LLM
runs it in its normal turn, structured result pushed back via existing
tools. Substrate stays $0/call. Combined with the existing
hd_kg_extraction_prompt (Layer 1 — auto-extract on
records_ingest), the three layers form a complete auto-pilot:
| Layer | What it does | Default | Latency |
|---|---|---|---|
| 1 — Auto-extract | Build KG from every records_ingest |
ON | ~30ms async |
| 2 — Intent router | Route every user prompt to the right substrate tool | OFF (opt-in) | ~50-100ms |
| 3 — Reflect | Self-curate decisions/facts/mistakes from recent turns | OFF (opt-in) | ~100ms |
See neruva-record v0.11+ for the SDK that wires these into Claude
Code's hook system automatically.
What's new in 0.21.0 — code-graph MCP tools
- 5 new
code_kg_*tools for sub-ms structural code queries against KGs built locally vianeruva-record-code-index:code_kg_callees,code_kg_callers,code_kg_class_of,code_kg_module_of,code_kg_imports. Each is a thin wrapper overhd_kg_querywith "Call this when..." routing nudges. - Tool-description routing nudges. All 17 high-leverage tools (records_*, agent_recall/context/remember, hd_kg_query, hd_analogy, hd_causal_query, agent_counterfactual_rollout, agent_model_belief(_add), agent_register_action, agent_plan_efe, agent_induce_rule, agent_extract_schema, agent_hierarchical_decode) lead with "Call this when..." so LLMs route into the right substrate primitive without explicit prompting.
extract="managed"onagent_rememberremoved. Pairs with the substrate's "no server-side LLM calls" architecture decision: useextract="byo"with caller-side triple extraction viahd_kg_extraction_prompt.
What's new in 0.18.3 — depth-unlimited theory of mind + 125× faster cleanup
- Theory of mind is now depth-unlimited (v0.5.4 substrate fix). Position-tagged at every chain index via non-commutative permutation binding. Inner-position swaps correctly reject; recursive self- reference (same agent at multiple chain positions) works natively.
- Cleanup acceleration via FAISS-binary popcount. OPB query stage 2 now uses SIMD popcount over sign-quantized atoms with deterministic float32 cosine rerank. Substantially faster on warm queries; replay bit-identical.
- 551× compression on stored OPB pages (rank-12 SVD). Persistence blobs that were >100 MB now fit in under 1 MB at perfect recall on round-trip.
The 9-level cognitive ladder — no LLM vendor ships rows 3-9
The substrate now exposes the full 9-level cognitive ladder. Every primitive runs sub-100ms, deterministic from seed, behind one MCP install.
| # | Capability | MCP tool(s) | Frontier LLM equivalent |
|---|---|---|---|
| 1 | Vector retrieval (OPB pages + spectral routing) | records_query(engine="opb") |
Pinecone/Zep (Level 1 only) |
| 2 | KG + Pearl do-operator + HD analogy + CBR | hd_kg_* · agent_causal_query · hd_analogy · hd_cbr_* |
nobody |
| 3 | Theory of Mind (nested belief) | agent_model_belief_add · agent_model_belief |
hallucinates at depth |
| 4 | Counterfactual rollouts ("what if k → a'?") | agent_counterfactual_rollout |
confabulates |
| 5 | Schema lifting (analogical pattern matching) | agent_extract_schema |
needs fine-tuning |
| 6 | Active Inference planning (Friston EFE) | agent_register_action · agent_plan_efe |
not a primitive |
| 7 | Few-shot rule induction | agent_induce_rule |
fine-tune (many examples) |
| 8 | Persistent rule storage | agent_persist_rule · agent_recall_rule |
re-feed demos every recall |
| 9 | Continual learning, zero forgetting | agent_continual_train · agent_continual_predict |
catastrophic forgetting |
| + | Hierarchical chunking (recursive L^K decode) | agent_hierarchical_add · agent_hierarchical_decode |
not a primitive |
~90 tools across Records, KG, Causal, Analogy, CBR, Blend, Vector memory, federated agent_*, the 9 cognitive primitives above, self-introspection.
Why this is unique
Every primitive in rows 3-9 is a graduated, production-shipped engine. No published memory vendor offers more than rows 1-2. Substrate-augmented small LLMs can match frontier-class agentic capabilities at a fraction of the cost per recall.
Install
# In Claude Code (any directory, user scope):
claude mcp add-json neruva '{"command":"npx","args":["-y","@neruva/mcp@latest"],"env":{"NERUVA_API_KEY":"nv_..."}}'Or one-line install via npx for any MCP host:
npx -y @neruva/mcp@latest # one-off
npm i -g @neruva/mcp # then `neruva-mcp`Get an API key at https://app.neruva.io (free tier, no credit card).
Wire into a host
Claude Code
claude mcp add-json neruva '{"command":"npx","args":["-y","@neruva/mcp@latest"],"env":{"NERUVA_API_KEY":"..."}}'Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"neruva": {
"command": "npx",
"args": ["-y", "@neruva/mcp@latest"],
"env": { "NERUVA_API_KEY": "..." }
}
}
}Codex (~/.codex/config.toml)
[mcp_servers.neruva]
command = "npx"
args = ["-y", "@neruva/mcp@latest"]
env = { NERUVA_API_KEY = "..." }Gemini CLI (~/.gemini/settings.json)
{ "mcpServers": { "neruva": { "command": "npx", "args": ["-y", "@neruva/mcp@latest"], "env": { "NERUVA_API_KEY": "..." } } } }The substrate, in one paragraph
Five layers, one API. Records = typed agentic events (decisions, mistakes, tool_calls, llm_turns; auto-embedded at D=1024). Knowledge Graph = mutable structured state across 5 engines, sub-ms cosine retrieval, matrix-power N-hop derive. Causal = Pearl's do-operator (observation vs intervention arithmetically distinct). Analogy = a🅱️:c:? in HD feature space. Concept Blending = provenance-preserving merge of multiple memories. CBR = factored episode store. The new federated agent_* layer (agent_remember / agent_recall / agent_context) routes across all substrates so a single call handles "where does X store, and how do I get it back?"
Deterministic from a seed. Replayable bit-exactly. Portable as .neruva containers — your data is yours.
Three-line LangChain integration
# pip install neruva-langchain
from neruva_langchain import NeruvaChatMessageHistory
history = NeruvaChatMessageHistory(namespace="user_alice")
# wire into any chain that takes BaseChatMessageHistorySame pattern: neruva-langgraph (BaseCheckpointSaver + BaseStore), neruva-crewai (Storage interface + 3 memory flavors).
Auto-record for Claude Code
pip install neruva-record && neruva-record-installEvery Claude Code session lands in your Neruva account: tool calls, chat turns, secrets-redacted client-side, queryable across sessions.
Why use this over a vector DB or Zep
| Vector DB | Zep | Neruva | |
|---|---|---|---|
| KG engines | 0 | 1 | 5 |
| Causal queries (Pearl do-operator) | ❌ | ❌ | ✅ |
| Provable replay (deterministic snapshot/restore) | ❌ | ❌ | ✅ |
| Anomaly detection (quorum disagreement) | ❌ | ❌ | ✅ |
| Federated context (records+KG one call) | ❌ | partial | ✅ |
| Portable container | ❌ | ❌ | ✅ .neruva |
| p95 latency | varies | varies | <100ms |
| Cost per recall vs context-stuffing | varies | varies | dramatically lower |
Auth
Set NERUVA_API_KEY in env. NERUVA_URL defaults to https://api.neruva.io.
Optional: NERUVA_AUTO_RECORD=namespace[:ttl_days] — every tool call this agent makes auto-records into the named records namespace. Fire-and-forget, never blocks or breaks the call.
Update flow
The startup banner prints when a newer version is available:
[neruva-mcp] update available: you have 0.16.0, latest is 0.16.1.If registered with @neruva/mcp@latest, a Claude Code restart auto-updates.
License
MIT