Montycat MCP — Claude Code MCP server: shared agent memory
Shared memory for coding agents: decisions and project context persist between sessions and stay readable from any MCP client you point at it.
claude mcp add --env MONTYCAT_URI=<MONTYCAT_URI> --env MONTYCAT_TLS=<MONTYCAT_TLS> --env MONTYCAT_TLS_CERTIFICATE_PATH=<MONTYCAT_TLS_CERTIFICATE_PATH> --env MONTYCAT_TLS_VERIFY=<MONTYCAT_TLS_VERIFY> --env MONTYCAT_TLS_CERTIFICATE_FINGERPRINT=<MONTYCAT_TLS_CERTIFICATE_FINGERPRINT> --transport stdio montycat-mcp-shared-memory-for-ai-agents -- uvx montycat-mcpWhat Montycat MCP - Shared Memory for AI Agents does
Montycat MCP runs a single memory store that every connected client both reads and writes — Claude Code, Codex, Cursor, Copilot, Windsurf, Cline and Zed. Decisions outlive a chat, so the next session opens with the project facts already loaded.
Storage calls are montycat_remember, montycat_remember_bulk, montycat_update and montycat_forget. Retrieval works by meaning or by an exact identifier through montycat_semantic_search, montycat_recall and montycat_list_memories, while montycat_await_memory_change blocks until another agent writes instead of polling. A scope decides where a record goes: private, team or common. Treat it as a namespace rather than a security boundary; real separation comes from giving each server its own Montycat credential with the least privilege it needs.
The engine and the embeddings stay local, with no hosted memory service in the loop. A bundled engine starts on demand, or you run one in Docker and hand the address over in MONTYCAT_URI. On Apple Silicon take the arm64-semantic tag, because the semantic image is amd64 and dies under emulation.
What it helps with
- carry a design decision into the next session
- find a note by meaning when the wording is gone
- keep several agents on a single set of facts
- wait for another agent's write without polling
- check field names before a structured write
Example prompts for the agent
- Remember that billing uses PostgreSQL and keep it in the
engineeringscope. - Search memory for how we ship the API and list what comes back from
shared. - Wait for the other agent to write its change, then pick up from there.
How to install Montycat MCP - Shared Memory for AI Agents
Platform CLI
claude mcp add --env MONTYCAT_URI=<MONTYCAT_URI> --env MONTYCAT_TLS=<MONTYCAT_TLS> --env MONTYCAT_TLS_CERTIFICATE_PATH=<MONTYCAT_TLS_CERTIFICATE_PATH> --env MONTYCAT_TLS_VERIFY=<MONTYCAT_TLS_VERIFY> --env MONTYCAT_TLS_CERTIFICATE_FINGERPRINT=<MONTYCAT_TLS_CERTIFICATE_FINGERPRINT> --transport stdio montycat-mcp-shared-memory-for-ai-agents -- uvx montycat-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from montycat-mcp <command>
Platform CLI
codex mcp add montycat-mcp-shared-memory-for-ai-agents --env MONTYCAT_URI=<MONTYCAT_URI> --env MONTYCAT_TLS=<MONTYCAT_TLS> --env MONTYCAT_TLS_CERTIFICATE_PATH=<MONTYCAT_TLS_CERTIFICATE_PATH> --env MONTYCAT_TLS_VERIFY=<MONTYCAT_TLS_VERIFY> --env MONTYCAT_TLS_CERTIFICATE_FINGERPRINT=<MONTYCAT_TLS_CERTIFICATE_FINGERPRINT> -- uvx montycat-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from montycat-mcp <command>
Config file
{
"mcpServers": {
"montycat-mcp-shared-memory-for-ai-agents": {
"command": "uvx",
"args": [
"montycat-mcp"
],
"env": {
"MONTYCAT_URI": "<MONTYCAT_URI>",
"MONTYCAT_TLS": "<MONTYCAT_TLS>",
"MONTYCAT_TLS_CERTIFICATE_PATH": "<MONTYCAT_TLS_CERTIFICATE_PATH>",
"MONTYCAT_TLS_VERIFY": "<MONTYCAT_TLS_VERIFY>",
"MONTYCAT_TLS_CERTIFICATE_FINGERPRINT": "<MONTYCAT_TLS_CERTIFICATE_FINGERPRINT>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from montycat-mcp <command>
Config file
{
"servers": {
"montycat-mcp-shared-memory-for-ai-agents": {
"type": "stdio",
"command": "uvx",
"args": [
"montycat-mcp"
],
"env": {
"MONTYCAT_URI": "<MONTYCAT_URI>",
"MONTYCAT_TLS": "<MONTYCAT_TLS>",
"MONTYCAT_TLS_CERTIFICATE_PATH": "<MONTYCAT_TLS_CERTIFICATE_PATH>",
"MONTYCAT_TLS_VERIFY": "<MONTYCAT_TLS_VERIFY>",
"MONTYCAT_TLS_CERTIFICATE_FINGERPRINT": "<MONTYCAT_TLS_CERTIFICATE_FINGERPRINT>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from montycat-mcp <command>
Platform CLI
gemini mcp add -e MONTYCAT_URI=<MONTYCAT_URI> -e MONTYCAT_TLS=<MONTYCAT_TLS> -e MONTYCAT_TLS_CERTIFICATE_PATH=<MONTYCAT_TLS_CERTIFICATE_PATH> -e MONTYCAT_TLS_VERIFY=<MONTYCAT_TLS_VERIFY> -e MONTYCAT_TLS_CERTIFICATE_FINGERPRINT=<MONTYCAT_TLS_CERTIFICATE_FINGERPRINT> montycat-mcp-shared-memory-for-ai-agents uvx montycat-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from montycat-mcp <command>
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 Montycat MCP - Shared Memory for AI Agents
How do I install Montycat MCP in Claude Code?
Install uv, then run claude mcp add montycat-mcp -e MONTYCAT_URI=<MONTYCAT_URI> -- uvx montycat-mcp. The server shows up as connected in /mcp.
What is Montycat MCP for?
It gives agents a shared memory: what one agent stores is available in the next session and to the other MCP clients you run.
What does the server need to run?
Python 3.10+ and uv, since it launches through uvx montycat-mcp. A local engine comes up on its own; your own engine goes in MONTYCAT_URI, and a remote one also needs MONTYCAT_TLS.