Skip to main content
ClaudeWave

Semantic memory for AI agents — local-first MCP server with hybrid search, governance, and consolidation

MCP ServersOfficial Registry4 stars0 forksTypeScriptNOASSERTIONUpdated today
ClaudeWave Trust Score
80/100
Trusted
Passed
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Flags
  • !Licence file present but not machine-readable
Last scanned: 9/16/2026
Install in Claude Code / Claude Desktop
Method: NPX · neuromcp-init
Claude Code CLI
claude mcp add neuromcp -- npx -y neuromcp-init
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "neuromcp": {
      "command": "npx",
      "args": ["-y", "neuromcp-init"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
Use cases

MCP Servers overview

# neuromcp — Sovereign Memory for AI agents

**Any model. Your memory. Stays local.**

neuromcp is the first **Sovereign Memory** layer for AI: an open-source MCP server that gives Claude, GPT, Gemini, and Ollama persistent, searchable memory — stored entirely on your machine. No API keys. No cloud sync. No subscription required to remember who you are.

> **Sovereign Memory** = data that you own outright, lives on hardware you control, and is portable across every model you use. Cloud memory products own your data; Sovereign Memory means *you* do.

[![npm version](https://img.shields.io/npm/v/neuromcp)](https://www.npmjs.com/package/neuromcp)
[![npm downloads](https://img.shields.io/npm/dw/neuromcp)](https://www.npmjs.com/package/neuromcp)
[![license: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue)](./LICENSE)
[![CI](https://github.com/AdelElo13/neuromcp/actions/workflows/ci.yml/badge.svg)](https://github.com/AdelElo13/neuromcp/actions/workflows/ci.yml)

```bash
npx neuromcp-init   # one command: detects your MCP clients, writes configs, sets up the wiki
```

Or run the bare server without any setup: `npx neuromcp`. Something not
working? `npx neuromcp-doctor` diagnoses the daemon, Ollama, embeddings
and the database in one run.

![neuromcp memory browser — entities, relations and a topic timeline, all read from your local SQLite](docs/assets/memory-browser.png)

*The built-in memory browser: the most-connected entities in a namespace
and the relations between them, as a force-directed graph you can drag,
zoom and click — served from `localhost`, never from a cloud. See
[Memory browser & Obsidian](#memory-browser--obsidian).*

## Why neuromcp

**The LLM is a commodity. Your memory is the moat.**
GPT-5, Claude 4, Gemini — they all converge. The model you use next year will differ. The memory of every conversation, decision, and preference you build is yours. neuromcp keeps that layer on your machine and makes it portable across any MCP-compatible client.

**Local-first is a design choice, not a limitation.**
No telemetry. No data leaves your laptop. No vendor has a copy of your conversations. Audit every line of code that touches your memory. SQLite + local embeddings; everything fits on one disk.

**One install. Every client.**
Claude Desktop, Cursor, Windsurf, Codex CLI, Continue, LibreChat, Open WebUI — neuromcp speaks MCP, so it works wherever MCP is supported. Switch models tomorrow; your memory follows.

**Real recall, not keyword matching.**
Hybrid retrieval combines vector search (nomic-embed-text, 768-dim), BM25 full-text, graph links, and a learned usefulness prior. At 500 distractors on LongMemEval, R@5 holds at 93.3%. Your context window gets the right memory, not just the most recent.

## LongMemEval-S accuracy

| Run | Score | Sample | Config |
|-----|-------|--------|--------|
| **v7 (current)** | **96.08%** (98/102) | n=102 | Opus generator + Opus judge, single-model |
| v6 | 95.10% (97/102) | n=102 | Same as v7, prior hint set |

Repro: `OMB_ANSWER_LLM=claude OMB_ANSWER_MODEL=opus OMB_JUDGE_LLM=claude OMB_JUDGE_MODEL=opus uv run omb run --dataset longmemeval -s s -m neuromcp -c "single-session-user,single-session-assistant,multi-session,temporal-reasoning,knowledge-update,single-session-preference" --query-limit 17`

> **Sample size honesty.** n=102 (17 per category × 6 categories). Wilson 95% CI for 98/102 ≈ 90.5–98.7%. Full 500q run with the same config is the next milestone before any "top-tier" claim.

## Benchmarks (v0.18.0)

### Oracle split (clean — easy mode)

| Mode | R@5 | R@10 | Hit Rate |
|------|-----|------|----------|
| Extracted (hybrid) | 100% | 100% | 100% |

Oracle-split LongMemEval isolates the correct memory in a small
corpus. Every local MCP memory system claims ~99% here. It measures
"does the ranker work on clean inputs" — nothing more.

### Distractor split (v0.18.0, honest)

Same 30 questions + 1000 random distractor memories drawn from other
questions' haystacks. The correct memory now competes against real noise.

| Embedder | Distractors | N | R@5 | R@10 | MRR |
|----------|-------------|---|-----|------|-----|
| Ollama `nomic-embed-text` | 0 (oracle) | 30 | 100% | 100% | 100% |
| Ollama `nomic-embed-text` | 200 | 5 | 100% | 100% | 100% |
| Ollama `nomic-embed-text` | **500** | **30** | **93.3%** | **93.3%** | **80.3%** |
| Ollama `nomic-embed-text` | 1000 | 5 | 100% | 100% | 74% |

Reproduce: `npx tsx eval/longmemeval-distractor-runner.ts --limit 5 --distractors 1000`

> **Sample sizes.** The 500-distractor row is n=30 (Wilson 95% CI for
> 28/30 ≈ 78-99% R@5). The 1000-distractor row is n=5 — preliminary,
> Wilson 95% CI [57%, 100%]. The 1000-distractor n=30 run takes ~36 min
> on a single Ollama instance; cached-distractor batching is v0.19.0
> work. Treat 500-distractor numbers as defensible, 1000-distractor as
> directionally positive but underpowered.


> **Head-to-head comparison is explicit v0.19.0 work.** Hindsight (local
> OSS MCP, ~94.6% LongMemEval claimed) and Mem0/Zep publish their own
> numbers on their own harnesses. Until we run all of them against the
> same corpus + embedder, calling any local MCP server "state of the art"
> is marketing, not measurement. neuromcp publishes its numbers with
> sample-size caveats so you can judge direction; don't read absolute
> superiority into them yet.

Hybrid ranker (BM25 + vector + attention + graph + usefulness prior)
keeps R@5 = 100% at 1000:1 distractor:target ratio on the observed
sample. MRR drops to 74% because the correct memory is sometimes not
rank-1 but always rank ≤ 5 in what we saw. Earlier v0.18.0 numbers
(R@5 23%) were from a test FakeEmbedder — fixed in v0.18.1.

**What this benchmark does NOT prove:** end-to-end answer
correctness, long-horizon multi-session reasoning, or superiority
over commercial cloud systems (Mem0, Zep) on their own benchmarks.
Those comparisons need their numbers on the same distractor split,
which hasn't been published.


## Why

AI agents forget everything between sessions. Existing solutions either store flat key-value pairs (useless for real knowledge) or require cloud infrastructure and API keys.

neuromcp gives you two layers of memory:

1. **MCP Server** — hybrid search (vector + full-text + graph), verbatim recall, memory governance, automatic consolidation, all in a single SQLite file
2. **Wiki Knowledge Base** — compiled Markdown knowledge that survives crashes, compounds over sessions, and gives your agent project-aware context at every startup

Inspired by [Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f), [Mastra's Observational Memory](https://mastra.ai/research/observational-memory), and [Zep's temporal knowledge graphs](https://arxiv.org/abs/2501.13956) — but simpler than all of them. No vector DB, no embeddings pipeline, no cloud. Just Markdown files + Git + hooks.

## Architecture

```
~/.neuromcp/
├── memory.db               ← SQLite: hybrid search, MCP tools
├── wiki/                   ← Compiled knowledge (git-tracked)
│   ├── index.md            ← Routekaart — LLM reads this FIRST
│   ├── schema.md           ← Operating rules for the LLM
│   ├── log.md              ← Append-only changelog
│   ├── people/             ← User profiles, preferences
│   ├── projects/           ← Project knowledge (stack, auth, URLs)
│   ├── systems/            ← Infrastructure (tools, MCP servers)
│   ├── patterns/           ← Reusable patterns (error fixes, routing)
│   ├── decisions/          ← Architecture decisions with context
│   └── skills/             ← Repeatable procedures
└── raw/sessions/           ← Raw session logs (auto-generated)
```

### How the wiki works

| When | What happens |
|------|-------------|
| **Session start** | Hook injects `index.md` + user profile + auto-detected project page (~1300 tokens) |
| **During session** | LLM updates wiki pages when learning something persistent |
| **Every 8 tool calls** | Hook reminds LLM to update the wiki |
| **Session end** | Hook writes raw session log + git auto-commits all wiki changes |
| **Crash** | Checkpoint every 5 tool calls to file. Git history for rollback. |

### Self-healing consolidation pipeline (v0.15.0+)

Every ~4h the launchd agent runs `run-consolidation.sh`, which
orchestrates four steps end-to-end:

1. **`consolidate-sessions.py`** — batches raw sessions per project,
   asks Claude for a factual summary, and fact-checks it against the
   raw sources. When the auditor flags specific unsupported claims the
   consolidator now **auto-strips those lines and re-audits once** — so
   one speculative sentence no longer kills a whole batch.
2. **`rescue-rejected.py`** — any batch that still fails is parsed,
   the unsupported claims are removed, and the cleaned summary is
   appended to its wiki page. Pure text surgery, no LLM calls.
3. **`entity-linker.py`** — cross-links every page: a bare-word mention
   of another registered entity (people/, projects/, systems/) is added
   to the page's `related:` frontmatter. Makes the wiki act like a
   graph without a separate graph database.
4. **`rebuild-index.py`** — regenerates `index.md` and per-category
   `-index.md` files. Categories over 10 pages are auto-split so the
   session-start router stays compact as the wiki scales.

The pipeline is idempotent — safe to re-run at any time.

### What the LLM knows at session start

```
Schema (operating rules) → How to maintain the wiki
Index (knowledge map)    → What knowledge exists
User profile             → Who you are, how you work
Project page             → Current project details (auto-detected from cwd)
Last session             → What happened last time
```

## Quick Start

### One command (recommended)

```bash
npx neuromcp-init
```

Detects your installed MCP clients (Claude Desktop, Claude Code, Cursor,
Windsurf), writes the `neuromcp` entry into each config (with a backup of
the original), initializes the wiki + hooks, and checks whether 
aiclaudecursorembeddingsllmmcpmemorysemantic-searchsqlitevector-search

What people ask about neuromcp

What is AdelElo13/neuromcp?

+

AdelElo13/neuromcp is mcp servers for the Claude AI ecosystem. Semantic memory for AI agents — local-first MCP server with hybrid search, governance, and consolidation It has 4 GitHub stars and its last recorded update is dated 2026-09-15.

How do I install neuromcp?

+

You can install neuromcp by cloning the repository (https://github.com/AdelElo13/neuromcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is AdelElo13/neuromcp safe to use?

+

Our security agent has analyzed AdelElo13/neuromcp and assigned a Trust Score of 80/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.

Who maintains AdelElo13/neuromcp?

+

AdelElo13/neuromcp is maintained by AdelElo13. The last recorded GitHub activity is dated 2026-09-15, with 0 open issues.

Are there alternatives to neuromcp?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy neuromcp to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: AdelElo13/neuromcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/adelelo13-neuromcp)](https://claudewave.com/repo/adelelo13-neuromcp)
<a href="https://claudewave.com/repo/adelelo13-neuromcp"><img src="https://claudewave.com/api/badge/adelelo13-neuromcp" alt="Featured on ClaudeWave: AdelElo13/neuromcp" width="320" height="64" /></a>

More MCP Servers

neuromcp alternatives