mcpField
M
Montycat MCP - Shared Memory for AI Agents

Montycat MCP - Shared Memory for AI Agents

Local
github.com/MontyGovernanceMemory & Knowledge23Updated 3w ago

About Montycat MCP - Shared Memory for AI Agents

Montycat MCP is a self-hosted MCP server that gives AI agents persistent, searchable shared memory. Claude, Codex, Cursor and other MCP clients read and write one memory, and the server, engine and embeddings run on the user's machine. It supports semantic, keyword and hybrid recall with live change notification.

Key features

  1. 01Persistent shared memory across sessions
  2. 02Semantic, keyword and hybrid recall
  3. 03Scope-based memory namespaces
  4. 04Waiting for changes written by other agents
  5. 05Local self-hosting without cloud embedding API

Use cases

  1. 01Keeping project decisions and preferences across sessions
  2. 02Sharing team context between several AI agents
  3. 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.

mcp.json · Universal config
{
"mcpServers": {
"montygovernance-montycat": {
"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>"
}
}
}
}
Run commanduvx montycat-mcp
Environment variables to set
MONTYCAT_URISecretOptional Montycat engine URI: montycat://user:password@host:port/store
MONTYCAT_TLSSet to true when connecting to a TLS-enabled remote Montycat engine
MONTYCAT_TLS_CERTIFICATE_PATHOptional PEM certificate path for exact TLS certificate pinning
MONTYCAT_TLS_VERIFYSet to true to verify TLS with the platform trust store
MONTYCAT_TLS_CERTIFICATE_FINGERPRINTOptional SHA-256 TLS certificate fingerprint

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimontycat-mcp1.1.6
ocidocker.io/montygovernance/montycat-mcp:1.1.6

Tools

25

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
modestringNo
limitintegerNo
querystringNo
scopeanyNo
sinceanyNo
untilanyNo
vectoranyNo
filtersanyNo
keyspaceanyNo
min_scoreanyNo
timestamp_fieldstringNo

Details

From the project README
Montycat logo

Montycat 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.

PyPI Python License

  • 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 engineering scope.

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
NeedTools
Storemontycat_remember, montycat_remember_bulk, montycat_update, montycat_forget
Recallmontycat_semantic_search, montycat_recall, montycat_list_memories
Inspect schemasmontycat_list_enforced_schemas — check field names and data types before structured writes or filtered retrieval
Collaboratemontycat_await_memory_change — wait for another agent's write, no polling
Namespacesmontycat_list_keyspaces, montycat_create_keyspace, montycat_update_cache, montycat_remove_keyspace
Adminsemantic 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

VariablePurpose
MONTYCAT_URIConnection string: montycat://user:password@host:port/store
MONTYCAT_TLStrue for a remote TLS engine
MONTYCAT_TLS_VERIFYOptional: true to verify with the platform trust store
MONTYCAT_TLS_CERTIFICATE_PATHOptional PEM certificate path for exact certificate pinning
MONTYCAT_TLS_CERTIFICATE_FINGERPRINTOptional 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

Markdown supported

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.