{
  "markdown": "<img src=\"https://raw.githubusercontent.com/MontyGovernance/montycat-mcp/master/assets/icon.png\" alt=\"Montycat logo\" width=\"72\" align=\"left\" hspace=\"12\"> \n\n# Montycat MCP - Shared Memory for AI Agents\n\n**A self-hosted MCP server that gives AI agents persistent, searchable memory.**\nClaude, Codex, Cursor, and any Model Context Protocol client write to one\nmemory and read each other's.\n\n[![PyPI](https://img.shields.io/pypi/v/montycat-mcp.svg)](https://pypi.org/project/montycat-mcp/)\n[![Python](https://img.shields.io/pypi/pyversions/montycat-mcp.svg)](https://pypi.org/project/montycat-mcp/)\n[![License](https://img.shields.io/github/license/MontyGovernance/montycat-mcp.svg)](LICENSE)\n\n<!-- mcp-name: io.github.MontyGovernance/montycat-mcp -->\n\n- **Memory that survives the chat.** Decisions, preferences, and project context carry into the next session.\n- **One memory, many agents.** Every MCP client you use works from the same facts.\n- **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.\n- **Yours.** Server, engine, and embeddings run on your machine. No hosted memory service, no cloud embedding API.\n\n## Install\n\n**Claude Desktop** — download\n[`montycat-mcp.mcpb`](https://github.com/MontyGovernance/montycat-mcp/releases/latest/download/montycat-mcp.mcpb)\nand drag it into Claude Desktop. No Python needed. That link always serves the\ncurrent release; [every release](https://github.com/MontyGovernance/montycat-mcp/releases/latest)\nalso carries a version-named copy and a `.sha256` to check it against.\n\n**Claude Code** — install [`uv`](https://docs.astral.sh/uv/getting-started/installation/), then:\n\n```text\n/plugin marketplace add MontyGovernance/montycat-mcp\n/plugin install montycat-mcp@montygovernance\n```\n\n`/mcp` confirms the `montycat` server is connected.\n\n**Codex, Cursor, other MCP clients** — point your client's stdio config at\n`uvx montycat-mcp` (Python 3.10+). For Codex:\n\n```bash\ncodex mcp add montycat -- uvx montycat-mcp\n```\n\n## The engine\n\nMemory lives in a [Montycat Semantic](https://montygovernance.com) engine.\nMontycat MCP starts a local one for you, so most people can stop reading here.\n\nPoint it at an engine you already run:\n\n```bash\nexport MONTYCAT_URI=\"montycat://memory-agent:password@localhost:21210/memories\"\nexport MONTYCAT_TLS=true   # remote engines only\n```\n\nOr start one yourself with Docker:\n\n```bash\ndocker run -d --name montycat -p 21210:21210 -p 21211:21211 \\\n  -e MONTYCAT_SUPEROWNER=admin -e MONTYCAT_PASSWORD=change-me \\\n  -v montycat_data:/var/lib/.montycat \\\n  montygovernance/montycat:semantic\n```\n\nOn Apple Silicon use the `arm64-semantic` tag instead — `semantic` is the amd64\nimage, and it crashes under emulation. Port `21211` carries live memory watches.\n\n## Use it\n\nTalk to your agent normally; it picks the tool.\n\n> Remember that the team chose PostgreSQL for the billing service.\n\n> What did we decide about the billing database?\n\n> Save this to the shared `engineering` scope.\n\n`scope` decides where a memory lives — `alice` for private, `engineering` for a\nteam, `shared` for common. It is a namespace, not a security boundary: for real\nisolation, give each MCP server its own least-privilege Montycat credential.\n\n### Tools\n\n| Need | Tools |\n|---|---|\n| Store | `montycat_remember`, `montycat_remember_bulk`, `montycat_update`, `montycat_forget` |\n| Recall | `montycat_semantic_search`, `montycat_recall`, `montycat_list_memories` |\n| Inspect schemas | `montycat_list_enforced_schemas` — check field names and data types before structured writes or filtered retrieval |\n| Collaborate | `montycat_await_memory_change` — wait for another agent's write, no polling |\n| Namespaces | `montycat_list_keyspaces`, `montycat_create_keyspace`, `montycat_remove_keyspace` |\n| Admin | semantic index, snapshot, and policy tools — see the [plugin guide](plugins/montycat-mcp/README.md) |\n\nDestructive tools are declared as such, so your client's confirmation prompts apply.\n\n## Configuration\n\n| Variable | Purpose |\n|---|---|\n| `MONTYCAT_URI` | Connection string: `montycat://user:password@host:port/store` |\n| `MONTYCAT_TLS` | `true` for a remote TLS engine |\n| `MONTYCAT_DEFAULT_KEYSPACE` | Memory namespace; `memory` by default |\n| `MONTYCAT_SCOPE` | Default scope when a call omits one |\n| `MONTYCAT_AUTO_PROVISION` | Create a permitted scope on first use; `true` by default |\n| `MONTYCAT_AUTOSTART` | `off` to require an already-running engine |\n\nCompose setup and the full variable list: [compose.yaml](compose.yaml) and the\n[plugin guide](plugins/montycat-mcp/README.md).\n\n## More\n\n[Changelog](CHANGELOG.md) · [Privacy](PRIVACY.md) · [Issues](https://github.com/MontyGovernance/montycat-mcp/issues) · [Docs](https://montygovernance.com/docs) · [Docker Hub](https://hub.docker.com/r/montygovernance/montycat)\n\nExisting MemoCat installs keep working: `memocat-mcp`, `MEMOCAT_*`, and\n`memocat://` are still supported. New setups should use the Montycat names.\n\nMIT\n",
  "bytes": 5068,
  "sha": "36ac69137d328bb0a787ef6d5ebf2b14cd5c046ef99344a47e8ecbf4fd7474a4",
  "repo_slug": "montygovernance/memocat-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_montygovernance_memocat_mcp_82105773/readme"
}