MemoCat — Shared AI Memory
LocalAbout MemoCat — Shared AI Memory
MemoCat is the earlier name of Montycat MCP, giving Claude, Codex, Cursor and other MCP clients one persistent memory they can write to and read from. It is self-hosted, so the server, engine and embeddings run on the user's machine. It supports semantic, keyword and hybrid recall with live change notification.
Key features
- 01Persistent shared memory across sessions
- 02Semantic, keyword and hybrid recall
- 03Scope-based memory namespaces
- 04Waiting for changes written by other agents
- 05Local self-hosting without cloud embedding API
Use cases
- 01Keeping project decisions and preferences across sessions
- 02Sharing team context between several AI agents
- 03Looking up saved memories by exact identifier
MCP support
The server is an MCP server that exposes memory read and write tools such as montycat_remember and montycat_semantic_search, plus montycat_await_memory_change for coordination between agents.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
uvx memocat-mcpMONTYCAT_URISecretOptional Montycat engine URI: montycat://user:password@host:port/storeMONTYCAT_TLSSet to true when connecting to a TLS-enabled remote Montycat engineLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
23Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | |
| query | string | No | |
| scope | any | No | |
| since | any | No | |
| until | any | No | |
| vector | any | No | |
| filters | any | No | |
| keyspace | any | No | |
| min_score | any | No |
Details
From the project READMEMontycat MCP - Shared Memory for AI Agents
A self-hosted MCP server that gives AI agents persistent, searchable memory. Claude, Codex, Cursor, and any Model Context Protocol client write to one memory and read each other's.
- Memory that survives the chat. Decisions, preferences, and project context carry into the next session.
- One memory, many agents. Every MCP client you use works from the same facts.
- Recall by meaning, keyword, or both. Vector search finds a memory when the wording differs, BM25 nails exact identifiers, and hybrid mode fuses the two. Exact-key and metadata lookup too.
- Yours. Server, engine, and embeddings run on your machine. No hosted memory service, no cloud embedding API.
Install
Claude Desktop — download
montycat-mcp.mcpb
and drag it into Claude Desktop. No Python needed. That link always serves the
current release; every release
also carries a version-named copy and a .sha256 to check it against.
Claude Code — install uv, then:
/plugin marketplace add MontyGovernance/montycat-mcp
/plugin install montycat-mcp@montygovernance
/mcp confirms the montycat server is connected.
Codex, Cursor, other MCP clients — point your client's stdio config at
uvx montycat-mcp (Python 3.10+). For Codex:
codex mcp add montycat -- uvx montycat-mcp
The engine
Memory lives in a Montycat Semantic engine. Montycat MCP starts a local one for you, so most people can stop reading here.
Point it at an engine you already run:
export MONTYCAT_URI="montycat://memory-agent:password@localhost:21210/memories"
export MONTYCAT_TLS=true # remote engines only
Or start one yourself with Docker:
docker run -d --name montycat -p 21210:21210 -p 21211:21211 \
-e MONTYCAT_SUPEROWNER=admin -e MONTYCAT_PASSWORD=change-me \
-v montycat_data:/var/lib/.montycat \
montygovernance/montycat:semantic
On Apple Silicon use the arm64-semantic tag instead — semantic is the amd64
image, and it crashes under emulation. Port 21211 carries live memory watches.
Use it
Talk to your agent normally; it picks the tool.
Remember that the team chose PostgreSQL for the billing service.
What did we decide about the billing database?
Save this to the shared
engineeringscope.
scope decides where a memory lives — alice for private, engineering for a
team, shared for common. It is a namespace, not a security boundary: for real
isolation, give each MCP server its own least-privilege Montycat credential.
Tools
| Need | Tools |
|---|---|
| Store | montycat_remember, montycat_remember_bulk, montycat_update, montycat_forget |
| Recall | montycat_semantic_search, montycat_recall, montycat_list_memories |
| Inspect schemas | montycat_list_enforced_schemas — check field names and data types before structured writes or filtered retrieval |
| Collaborate | montycat_await_memory_change — wait for another agent's write, no polling |
| Namespaces | montycat_list_keyspaces, montycat_create_keyspace, montycat_update_cache, montycat_remove_keyspace |
| Admin | semantic index, snapshot, and policy tools — see the plugin guide |
For persistent namespaces, cache is a capacity in MB and compression is
chosen by montycat_create_keyspace. Compression cannot be changed after the
keyspace is created; migrate into a new keyspace to use a different setting.
Cache capacity can be changed later with montycat_update_cache.
Destructive tools are declared as such, so your client's confirmation prompts apply.
Configuration
| Variable | Purpose |
|---|---|
MONTYCAT_URI | Connection string: montycat://user:password@host:port/store |
MONTYCAT_TLS | true for a remote TLS engine |
MONTYCAT_TLS_VERIFY | Optional: true to verify with the platform trust store |
MONTYCAT_TLS_CERTIFICATE_PATH | Optional PEM certificate path for exact certificate pinning |
MONTYCAT_TLS_CERTIFICATE_FINGERPRINT | Optional SHA-256 certificate fingerprint as an alternative pin |
All three verification settings are optional. With only MONTYCAT_TLS=true,
MCP retains the historical encrypted-but-unverified behavior; with TLS unset or
false, existing plaintext configurations are unchanged.
| MONTYCAT_DEFAULT_KEYSPACE | Memory namespace; memory by default |
| MONTYCAT_SCOPE | Default scope when a call omits one |
| MONTYCAT_AUTO_PROVISION | Create a permitted scope on first use; true by default |
| MONTYCAT_AUTOSTART | off to require an already-running engine |
Compose setup and the full variable list: compose.yaml and the plugin guide.
More
Changelog · Privacy · Issues · Docs · Docker Hub
Existing MemoCat installs keep working: memocat-mcp, MEMOCAT_*, and
memocat:// are still supported. New setups should use the Montycat names.
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.