When to pick Memory MCP Server
- You want persistent memory in a file you can inspect and back up. The server stores its graph in local JSONL, and
MEMORY_FILE_PATHlets you choose where that file lives. - Your context has explicit relationships between people, organizations or events. Create named entities, connect them with directed relations, and attach individual facts as observations instead of storing everything as undifferentiated text.
- You need precise edits to remembered facts.
delete_observationsremoves a particular observation,delete_relationsremoves a connection, anddelete_entitiesremoves an entity together with its relations. - You want multiple local MCP clients to share one graph. Point their processes at the same memory file; the server coordinates writes with a lock file. The containing directory must be writable, and shared network filesystems need compatible exclusive file creation.
When to pick Mem0 MCP Server
- You need to retrieve preferences or project context even when the query uses different wording. The documented Python wrapper exposes semantic retrieval through
search_memories, with filters and a result limit. - Your application keeps memories for different users or agents. Mem0 accepts scoped writes and filters, and
MEM0_DEFAULT_USER_IDsupplies a default user identifier for the Python wrapper. - You need memory administration by identifier and scope. The wrapper documents individual retrieval, text replacement and deletion, plus listing with pagination and bulk deletion within a confirmed user, agent, app or run scope.
- You want a hosted connection for a new setup. The repository directs users to the official cloud-hosted HTTP endpoint. Its Python package is archived and no longer actively maintained, so choose that package only if you specifically need the documented wrapper and accept its maintenance status.
Main differences
- Memory models entities, directed relations and atomic observations. Mem0's documented wrapper accepts text, conversation history or message objects; it also offers optional graph memories through
MEM0_ENABLE_GRAPH_DEFAULT, which defaults to false. - Memory's
search_nodessearches entity names, types and observation content;open_nodesretrieves named nodes. Mem0'ssearch_memoriesretrieves memories semantically, whileget_memoryaddresses a specific memory by ID. - Memory runs as a local Node process over stdio. The archived Mem0 Python wrapper supports local execution and a Docker HTTP endpoint; the replacement advertised at the top of its README is cloud-hosted HTTP.
- Memory requires no authentication and writes its storage locally. The Mem0 wrapper requires
MEM0_API_KEYand calls the Mem0 API, so running that wrapper locally still sends memory operations to an external service. - Memory exposes the complete graph through
read_graphand a readable MCP resource. Mem0's wrapper provides filtered, paginated memory listings and enumeration of users, agents, apps and runs throughlist_entities. - Memory's supplied documentation describes its server directly. Mem0's detailed tool list belongs to the archived wrapper; the archive notice introduces a hosted replacement without documenting its tool list or authentication flow there.
Setup
For Memory, configure your MCP client to launch npx -y @modelcontextprotocol/server-memory. The documented requirement is Node.js 24 or later. Set MEMORY_FILE_PATH to select a persistent JSONL location; on Windows, launch through cmd /c.
For Mem0's hosted replacement, the README gives npx mcp-add --name mem0-mcp --type http --url "https://mcp.mem0.ai/mcp" --clients "claude,claude code,cursor,windsurf,vscode,opencode". For the archived wrapper, install with pip install mem0-mcp-server, configure the client to run uvx mem0-mcp-server, and provide MEM0_API_KEY; optionally set MEM0_DEFAULT_USER_ID.
· github.com/modelcontextprotocol/servers/src/memory, github.com/mem0ai/mem0-mcp
