Sandbox
@MontyGovernance/montycat-mcp

MCP memory server for Claude Code and Codex

Montycat MCP gives connected agents one shared memory store for decisions, preferences, and project facts. It supports semantic search, keyword search, hybrid recall, keyspace management, and live memory watches so one agent can see another agent’s updates.

48 stars3 forksPythonUpdated 8d ago
Who it's for

Builders who use Claude Code, Codex, Cursor, or another MCP client and want shared memory between sessions.

What it delivers

You can stop re-explaining project context and let different agents recall the same facts from one memory store.

What it does

Shared persistent memory

Stores memories that survive the chat so later sessions can read earlier decisions and context.

Semantic, keyword, and hybrid recall

Uses vector search, BM25, and combined search to find memories by meaning or exact wording.

Live memory updates

Includes a watch path and `montycat_await_memory_change` so one agent can wait for another agent's write without polling.

Scope and keyspace management

Supports private, team, and shared scopes, plus keyspace create, list, and remove tools.

Local, self-hosted setup

Runs the engine on your machine or connects to your own Montycat URI instead of a hosted memory service.

Plugin and MCP client packaging

Provides Claude plugin files, MCP server metadata, and container setup for different client setups.

How to get it

  1. 1Claude Code — install uv, then
    /plugin marketplace add MontyGovernance/montycat-mcp
    /plugin install montycat-mcp@montygovernance
  2. 2Codex, Cursor, other MCP clients — point your client's stdio config at uvx montycat-mcp…
    codex mcp add montycat -- uvx montycat-mcp

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_remove_keyspace
Adminsemantic index, snapshot, and policy tools — see the plugin guide

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_DEFAULT_KEYSPACEMemory namespace; memory by default
MONTYCAT_SCOPEDefault scope when a call omits one
MONTYCAT_AUTO_PROVISIONCreate a permitted scope on first use; true by default
MONTYCAT_AUTOSTARToff 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

Files in the repo

Repository payload24 top-level entries
  • .claude-plugin
  • .github
  • assets
  • compat
  • memocat_mcp
  • montycat_mcp
  • plugins
  • scripts
  • tests
  • .dockerignore
  • .gitignore
  • .mcpbignore
  • build_mcpb.sh
  • CHANGELOG.md
  • compose.yaml
  • Dockerfile
  • LICENSE
  • manifest.json
  • mcpb_entry.py
  • PRIVACY.md
  • publish_docker.sh
  • pyproject.toml
  • README.md
  • server.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k