Reverie — Claude Code MCP server: Neo4j graph memory for agents
Keeps an agent's memory in a Neo4j graph: typed entities, links between them, and hybrid search over names, keywords and meaning.
claude mcp add --env NEO4J_URI=<NEO4J_URI> --env NEO4J_USERNAME=<NEO4J_USERNAME> --env NEO4J_PASSWORD=<NEO4J_PASSWORD> --env NEO4J_DATABASE=<NEO4J_DATABASE> --env REVERIE_EMBEDDINGS=<REVERIE_EMBEDDINGS> --transport stdio reverie -- npx -y @knowall-ai/reverieWhat Reverie does
Reverie stores what an agent knows as a graph. People, organisations, projects, places and decisions are nodes, and the links between them carry types. Asking which contacts at a given organisation were involved with a project becomes a walk through the graph instead of a similarity lookup. The server speaks MCP, so Claude, Codex, Cursor, Copilot, Windsurf, Cline and Zed can all point at the same graph.
search_memories has five modes: hybrid by default, plus keyword, semantic, fuzzy and exact. Fuzzy matching copes with names typed as they sound, so a search for “Ben Wicks” can surface “Benjamin Weeks”. Strictness is tuned with similarity_threshold (default 0.4, values outside 0–1 are rejected) and fuzzy_threshold (default 0.85).
A dream tool does maintenance: it merges duplicates, normalises labels, recomputes embeddings and marks nodes that have turned into property dumps. Nothing gets written without a reachable Neo4j instance, so NEO4J_URI, NEO4J_USERNAME and NEO4J_PASSWORD are needed before the first run. Embeddings are computed locally by default, no API key involved; OpenAI, Azure OpenAI, Ollama or Voyage are picked through REVERIE_EMBEDDINGS. Your data stays on your own machine unless you choose a remote embedding provider.
What it helps with
- find a contact whose name was stored differently
- trace how a project connects to people and decisions
- clean up duplicate nodes and stray labels
- run an exact lookup before writing a new memory
- keep semantic search usable when embeddings fail
Example prompts for the agent
- Search memory for everyone tied to the Winnie project and show me how they connect
- Run an
exactcheck for Ben Weeks before you create a new memory - Run
dreamand list the nodes that have become property dumps
How to install Reverie
Platform CLI
claude mcp add --env NEO4J_URI=<NEO4J_URI> --env NEO4J_USERNAME=<NEO4J_USERNAME> --env NEO4J_PASSWORD=<NEO4J_PASSWORD> --env NEO4J_DATABASE=<NEO4J_DATABASE> --env REVERIE_EMBEDDINGS=<REVERIE_EMBEDDINGS> --transport stdio reverie -- npx -y @knowall-ai/reverieReplace <…> with your own values
Platform CLI
codex mcp add reverie --env NEO4J_URI=<NEO4J_URI> --env NEO4J_USERNAME=<NEO4J_USERNAME> --env NEO4J_PASSWORD=<NEO4J_PASSWORD> --env NEO4J_DATABASE=<NEO4J_DATABASE> --env REVERIE_EMBEDDINGS=<REVERIE_EMBEDDINGS> -- npx -y @knowall-ai/reverieReplace <…> with your own values
Config file
{
"mcpServers": {
"reverie": {
"command": "npx",
"args": [
"-y",
"@knowall-ai/reverie"
],
"env": {
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USERNAME": "<NEO4J_USERNAME>",
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"NEO4J_DATABASE": "<NEO4J_DATABASE>",
"REVERIE_EMBEDDINGS": "<REVERIE_EMBEDDINGS>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"reverie": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@knowall-ai/reverie"
],
"env": {
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USERNAME": "<NEO4J_USERNAME>",
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"NEO4J_DATABASE": "<NEO4J_DATABASE>",
"REVERIE_EMBEDDINGS": "<REVERIE_EMBEDDINGS>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e NEO4J_URI=<NEO4J_URI> -e NEO4J_USERNAME=<NEO4J_USERNAME> -e NEO4J_PASSWORD=<NEO4J_PASSWORD> -e NEO4J_DATABASE=<NEO4J_DATABASE> -e REVERIE_EMBEDDINGS=<REVERIE_EMBEDDINGS> reverie npx -y @knowall-ai/reverieReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Reverie
How do I install Reverie in Claude Code?
Add it as an MCP server with `claude mcp add reverie -e NEO4J_URI=<NEO4J_URI> -e NEO4J_USERNAME=<NEO4J_USERNAME> -e NEO4J_PASSWORD=<NEO4J_PASSWORD> -- npx -y @knowall-ai/reverie. The longer form adds --env variables for the database and embeddings: claude mcp add --env NEO4J_URI=<NEO4J_URI> --env NEO4J_USERNAME=<NEO4J_USERNAME> --env NEO4J_PASSWORD=<NEO4J_PASSWORD> --env NEO4J_DATABASE=<NEO4J_DATABASE> --env REVERIE_EMBEDDINGS=<REVERIE_EMBEDDINGS> --transport stdio reverie -- npx -y @knowall-ai/reverie`.
What does Reverie do?
It gives an agent a persistent graph memory in Neo4j: typed nodes, typed relationships, and hybrid search that blends keyword, semantic and fuzzy name matching. The dream tool keeps the graph tidy.
Does search require an API key?
No. Embeddings are local by default. Switching to OpenAI, Azure OpenAI, Ollama or Voyage is done through REVERIE_EMBEDDINGS.