Self-hosted [mem0](https://github.com/mem0ai/mem0) MCP server for Claude Code. Run a complete memory server against self-hosted Qdrant + Neo4j +
Connect Mem0 MCP Selfhosted to Claude, Cursor or any other MCP client and it stops being a tab you switch to. Self-hosted mem0 MCP server for Claude Code. Run a complete memory server against self-hosted Qdrant + Neo4j + Ollama, with your choice of Anthropic (Claude) or Ollama as the main LLM. The mem0 mcp selfhosted mcp server is what makes that connection.
The toolset is worth reading before you wire it up, because it tells you what the integration is really for:
add_memory — Store text or conversation history as memories. Supports enable_graph, infer, metadatasearch_memories — Semantic search with optional filters, threshold, rerank, enable_graphget_memories — List/filter memories (non-search). Supports limit and scope filtersget_memory — Fetch a single memory by UUIDupdate_memory — Replace memory text. Re-embeds and re-indexes in Qdrantdelete_memory — Delete a single memory by UUIDdelete_all_memories — Bulk-delete all memories in a scopelist_entities — List users/agents/runs with memory counts. Uses Qdrant Facet APIdelete_entities — Cascade-delete an entity and all its memoriessearch_graph — Search Neo4j entities by name substring. Returns entities + outgoing relationshipsget_entity — Get all relationships for an entity (bidirectional: incoming + outgoing)Prompt — The server registers a memory_assistant MCP prompt that provides Claude with a quick-start guide for using the memory tools effectivelyBecause this one is hosted, setup is mostly authentication — you point your client at the endpoint and approve access. Nothing runs on your machine, so there is no runtime to keep patched.
Configuration is passed through the environment: MEM0_PROVIDER, MEM0_LLM_MODEL, MEM0_USER_ID, MEM0_LLM_URL, MEM0_EMBED_URL, MEM0_ANTHROPIC_TOKEN, ANTHROPIC_API_KEY, MEM0_OLLAMA_URL. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
| Service | Required | Purpose | |---------|----------|---------| | Qdrant | Yes | Vector memory storage and search | | Ollama | Yes | Embedding generation (bge-m3) and optionally local LLM | | Neo4j 5+ | Optional | Knowledge graph (entity relationships) | | Google API Key | Optional | Required only for gemini/gemini_split graph providers | Python >= 3.10 and
Plenty of knowledge and memory servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Mem0 MCP Selfhosted's toolset — add_memory, search_memories, get_memories and 11 more — is a fair guide to whether it matches your workflow. It is maintained by elvismdev; worth a glance at recent repository activity before you build anything load-bearing on it.
This entry was verified against Mem0 MCP Selfhosted's own documentation before publication; SyncDev keeps the directory reviewed rather than auto-generated.
| Tool | What it does |
|---|---|
| add_memory | Store text or conversation history as memories. Supports enable_graph, infer, metadata. |
| search_memories | Semantic search with optional filters, threshold, rerank, enable_graph. |
| get_memories | List/filter memories (non-search). Supports limit and scope filters. |
| get_memory | Fetch a single memory by UUID. |
| update_memory | Replace memory text. Re-embeds and re-indexes in Qdrant. |
| delete_memory | Delete a single memory by UUID. |
| delete_all_memories | Bulk-delete all memories in a scope. |
| list_entities | List users/agents/runs with memory counts. Uses Qdrant Facet API. |
| delete_entities | Cascade-delete an entity and all its memories. |
| search_graph | Search Neo4j entities by name substring. Returns entities + outgoing relationships. |
| get_entity | Get all relationships for an entity (bidirectional: incoming + outgoing). |
| Prompt | The server registers a memory_assistant MCP prompt that provides Claude with a quick-start guide for using the memory tools effectively. |
| Parameters | All tools use Pydantic Annotated[type, Field(description=...)] for self-documenting parameter schemas. Common patterns: |
| Authentication | The Authentication tool exposed by this server. |
| Service | Required | Purpose | |---------|----------|---------| | Qdrant | Yes | Vector memory storage and search | | Ollama | Yes | Embedding generation (bge-m3) and optionally local LLM | | Neo4j 5+ | Optional | Knowledge graph (entity relationships) | | Google API Key | Optional | Required only for gemini/gemini_split graph providers | Python >= 3.10 and
| Variable | Description | Required |
|---|---|---|
| MEM0_PROVIDER | Configuration value read at startup. | Optional |
| MEM0_LLM_MODEL | Configuration value read at startup. | Optional |
| MEM0_USER_ID | Configuration value read at startup. | Optional |
| MEM0_LLM_URL | Endpoint or connection string the server talks to. | Yes |
| MEM0_EMBED_URL | Endpoint or connection string the server talks to. | Yes |
| MEM0_ANTHROPIC_TOKEN | Credential the server authenticates with. | Yes |
| ANTHROPIC_API_KEY | Credential the server authenticates with. | Yes |
| MEM0_OLLAMA_URL | Endpoint or connection string the server talks to. | Yes |
A knowledge graph your assistant keeps between sessions — entities, relations and observations that persist.
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Your workspace, on speaking terms with AI — search, read and write Notion pages and databases.
A structured scratchpad for hard problems — stepwise reasoning with revisions, branches and visible logic.
Symbol-level code navigation, refactoring and memory for coding agents — the IDE brain your assistant has been missing.
Chat with your second brain — search, read and write vault notes through the Local REST API.