Persistent AI memory in one SQLite file: 3-layer hybrid search, confidence scoring, 29 tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Persistent memory for AI agents, over MCP. One SQLite file you own. No LLM in the loop. Honest when recall degrades.
Documentation Β· Getting Started Β· Architecture Β· Tools Β· PyPI Β· Zenn Book (JP)
Standalone repository β This is the standalone version for use with Claude Desktop, Claude Code, Codex CLI, Cursor, VS Code, and any other MCP client (registration table). If you are a ClotoCore user, install CPersona from the in-app marketplace (ClotoHub) instead β it distributes this same repository.
Project status β 2.4.x is Stable; 2.5.x is Current, an internal stabilization line where all fixes land, pending production-soak certification. The DB schema is preserved across the line. Additive, rollback-safe features may land here as well (lifecycle standard Β§2.6); a change that cannot be rolled back waits for 2.6. Which version to run, and how long each line keeps receiving fixes: SUPPORT.md. Where the lines are heading: the roadmap.
Upgrading from 2.5.2 or earlier? Two things need a decision from you. v2.5.3 will not start the HTTP transport without
CPERSONA_AUTH_TOKEN, wherever it binds β set one, or opt out withCPERSONA_ALLOW_UNAUTHENTICATED_HTTP=true(why; stdio is unaffected). v2.5.2 changed tool response shapes β branch onok is false, and treat any response carryingerroras a failure whether or notokis present (contract Β§10).
Claude forgets everything between sessions. Every conversation starts from zero β no context about your project, your preferences, or what you discussed yesterday.
cpersona fixes this. It's an MCP server that stores memories in a local SQLite file and retrieves them through hybrid search. Claude remembers you. It runs against any MCP-compatible host β Claude Desktop, Claude Code, ClotoCore (the AI agent platform where cpersona originated, and whose memory layer it is), or a client of your own.
Setting this up as an AI agent? Read the Agent Skill β
skills/cpersona-memory/SKILL.mdin a clone of this repository β and follow it end to end. It is the complete procedure: install, embedding server, registration, and the two steps a quick start tends to skip β verifying from a new session, and persisting the memory policy so the next session knows whichagent_idholds the memories.Using Claude Code yourself? The same skill ships inside the wheel. Once
cpersonais installed, copy it in and say "Set up CPersona."
1. Install β Python 3.11+, and uv for the one-command path.
2. Run an embedding server β strongly recommended; it powers the vector layer
The reference server's lifetime is bound to its stdin. Started with stdin closed β by a service manager, by nohup β¦ </dev/null, or from an agent's background shell β it binds the port and exits within the same second with status 0. Give it a stdin that stays open (sleep infinity | cembedding); Getting Started has the details.
Any endpoint implementing the embedding contract works and is equally recommended; CEmbedding is the reference implementation. The choice of backend is yours β the recommendation is to connect one, not to connect that one.
Without a backend, cpersona still runs β FTS5 + keyword search, and it says on every recall that it is degraded rather than quietly returning less. That is a supported fallback, not a recommended way to run: recall then matches on shared words, so a memory phrased differently from your question can be missed, and so can an older one.
3. Register it with your MCP client
4. Verify from a new session β ask the agent to store something, then recall it in a fresh session. Surviving the session boundary is the whole point.
5. Make it stick β registration gives the agent the tools. It does not tell the next session to use them, or which agent_id holds the memories: recall is scoped to an exact agent_id, so a session that guesses the wrong one gets nothing back. Persist the short policy block into the file your client loads every session (~/.claude/CLAUDE.md, AGENTS.md, β¦) β Getting Started Β§5.
At startup the server asks pypi.org whether a newer release exists and tells the
calling agent through recall; set CPERSONA_UPDATE_CHECK=false to turn that
off. Updating is never automatic.
Claude Desktop config, Windows paths, installing from source and the full walkthrough: Getting Started.
sqlite3 .backup copies the
corpus (the calibration sidecar beside it needs copying too).agent_id, project_id and channel let several agents and
projects share one database without bleeding into each other.How it fits together: Architecture Β· what the tools do: Tools Β· what you may rely on: Behavior Contracts.
Measured on LMEB (Long-horizon Memory Embedding Benchmark, arXiv:2603.12572) β 22 datasets subsuming LoCoMo and LongMemEval, measured here as 22 retrieval tasks. The metric is Mean NDCG@10 across all 22 tasks. Track A is the raw embedding model alone; Track B routes the same embeddings through cpersona's real store/recall code paths (SQLite + FTS5 + RRF fusion + per-agent auto-calibration).
| Embedding Model | Params | Dim | Track A (raw) | Track B (cpersona) | Ξ |
|---|---|---|---|---|---|
| all-MiniLM-L6-v2 | 22M | 384 | 43.67 | 50.10 | +6.43 |
| bge-m3 | 568M | 1024 | 56.83 | 57.66 | +0.83 |
Track B lands at or above Track A on both models: the fusion layers add signal rather than merely persisting vectors, and a weaker embedding gains more because the FTS5/keyword layers rescue what its vectors miss. How to read the deltas, the noise envelope, the measurement harness and the reproduction regime: benchmarks/.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/cpersona)<a href="https://allmcps.com/mcp/cpersona"><img src="https://allmcps.com/api/badge/cpersona?style=directory" alt="CPersona on AllMCPs" /></a>