MCP Server · Local-First · Open Source
A local MCP memory server that never phones home.
// capabilities
MemCP gives AI assistants a persistent, searchable memory that lives entirely on your machine — no APIs, no telemetry, no subscriptions.
add_memory
Score-banded deduplication at insert time. Auto, skip, or merge policies. Near-duplicate memories are detected before they pollute your store.
search_memory
Combines semantic vector search with keyword ranking. Tune with top_k, min_score, compact mode, and full score explainability.
list_memories
Browse your entire memory store. See what the AI knows, how it's indexed, and when it was stored. Full transparency, always.
delete_memory / clear_memories
Delete a single memory by ID or wipe the entire store. You are always in control of what persists and what doesn't.
// how it works
One-line setup. No Docker. No cloud account. Uses your local Python environment.
Drop a JSON block into your Claude Desktop MCP config. The server starts automatically on demand.
Memories are stored locally in Qdrant, embedded with sentence-transformers. Everything stays on your machine.
// claude desktop
Add MemCP to Claude Desktop's MCP configuration and it starts automatically whenever Claude needs to recall something. Optionally protect it with an auth token.
{ "mcpServers": { "memcp": { "command": "memcp", "args": ["run"], "env": { "QDRANT_MODE": "local", "MEMCP_AUTH_TOKEN": "your-secret-token" } } } }
// open-source stack
FastMCP
MCP server framework
Qdrant
Embedded vector database
sentence-transformers
Local dense embeddings
rank-bm25
BM25 keyword ranking
uv
Fast Python packaging
// environment variables
| Variable | Default | Description |
|---|---|---|
| QDRANT_MODE | local | Use local (embedded) or remote |
| QDRANT_PATH | ~/.memcp/db | Local database directory path |
| EMBEDDING_MODEL | all-MiniLM-L6-v2 | Any sentence-transformers model ID |
| TOP_K | 10 | Default search result count |
| MIN_SCORE | 0.2 | Minimum relevance threshold for results |
| DEDUPE_SKIP_THRESHOLD | 0.92 | Score above which deduplication applies |
| DEDUPE_MERGE_THRESHOLD | 0.97 | Score above which memories auto-merge |
| MEMCP_AUTH_TOKEN | — | If set, enforces token auth on all tools |
| ATOMIC_EXTRACT | true | Enable local sentence-based fact extraction |