What is an MCP memory server?
What is an MCP memory server? It is a Model Context Protocol server that gives an AI assistant tools to save facts and recall them later, so memory survives across chats and clients. The assistant calls the tools itself. XERJ ships one inside its binary: xerj mcp exposes xerj_memory_store and xerj_memory_recall.
TL;DR: An MCP memory server is a Model Context Protocol server whose tools save and recall facts, so an agent keeps what it learned across chats. XERJ ships one in the same binary as its search engine: xerj mcp exposes xerj_memory_store and xerj_memory_recall.
Act as a coding agent. Read https://xerj.org/llms.txt, install XERJ, start a local node, register xerj mcp as an MCP server in this client, call xerj_memory_store with one fact in namespace agentmem, then call xerj_memory_recall and report the hit.
curl -fsSL https://xerj.org/get | sh
Install the single XERJ binary. The MCP server is the xerj mcp subcommand of the same binary.
xerj mcp --help
Show the MCP server options. It talks to a node you already started; it does not start one.
The short definition
MCP is the protocol AI clients like Claude Code and Cursor use to call outside tools. A memory server is an MCP server with two jobs: save a fact when the assistant asks, and find it again later.
The assistant decides when to call those tools. That is what makes the memory agentic.
Two common designs
| design | what it stores | how it finds things |
|---|---|---|
| the reference server | entities, relations and observations in a JSONL file | reads the graph and matches names and text |
| XERJ | each fact as a document in a search index | BM25 search by default, with filters |
The reference server from the modelcontextprotocol project is a good small start. XERJ fits when memory should sit next to the files and data your agent already searches.
How XERJ does it
XERJ is the search engine for AI agents. xerj mcp is an MCP stdio server inside the same binary. Point it at a local node you already started.
xerj_memory_storesaves a fact to a namespace. The configured embedder runs at write time; lexical feature hashing is the default.xerj_memory_recallfinds it again. The default is BM25 over the stored text.- Each namespace is its own index. Privacy between agents requires separately scoped API keys, not only different namespace names.
The default embedder is lexical feature hashing. Recall with semantic: true matches shared words unless the node runs with --embed-mode neural.
Limits to know
XERJ is single-node. Memories are permanent until explicitly forgotten; there is no decay and no TTL.
Try it
Copy the prompt on this page into your coding agent, or read the agent memory recipe.
FAQ
What does an MCP memory server do?
It gives an AI assistant tools to write facts to a store and read them back later. Any MCP client, such as Claude Code or Cursor, can call those tools.
How is it different from a normal MCP server?
It is a normal MCP server whose tools happen to be about memory. The protocol is the same; only the tools differ.
What does the reference MCP memory server store?
The modelcontextprotocol reference server keeps entities, relations and observations in a local JSONL file. You choose the file with MEMORY_FILE_PATH.
Which memory tools does xerj mcp expose?
xerj_memory_store saves a fact to a namespace and xerj_memory_recall finds it again. They call POST /_memory/{namespace} and its _recall endpoint on a local node.
Does the XERJ memory server need an API key or a model?
The default lexical embedder needs no model download or external provider key. A secured XERJ node still requires its own API key. Neural or proxy embedding is optional and also runs when memories are stored.
Where does XERJ keep the memories?
In the node data directory, one .xerj-memory-{namespace} index per namespace. Change the location by starting the node with a different data directory.
Evidence
- The reference MCP memory server stores a graph of entities, relations and observations in a local JSONL file set by MEMORY_FILE_PATH. — https://github.com/modelcontextprotocol/servers/blob/main/src/memory/README.md
- xerj mcp exposes xerj_memory_store, which proxies POST /_memory/{namespace}, and xerj_memory_recall, which proxies POST /_memory/{namespace}/_recall. —
landing/docs/agents/schemas/mcp-tools.json - Each XERJ memory namespace is backed by its own .xerj-memory-{namespace} index. —
engine/crates/xerj-api/src/memory_api.rs
Related
- What is agentic memory?
- How do I set the MCP memory storage path?
- How do I give two agents private memory on one laptop?
- XERJ vs agent memory tools: Mem0, Zep, Letta and Cognee
- Agent memory
- What's a simple way to give an agent long-term memory on my laptop without Qdrant? · same intent: agent memory
- How do people store user preferences so an agent can recall them next week? · same intent: agent memory
- Agentic memory vs RAG: what is the difference? · same intent: agent memory