Claude Code & Claude Desktop
For AI Agents
Machine-readable docs: mnemoverse/llms.txt (works in all sandboxes)
Give Claude persistent memory. One command — it never forgets again.
Claude Code — add via CLI:
claude mcp add mnemoverse \
-e MNEMOVERSE_API_KEY=mk_live_YOUR_KEY \
-- npx -y @mnemoverse/mcp-memory-server@latestThat's it. Claude Code now has long-term memory across all sessions.
Get your API key at console.mnemoverse.com (free tier, no credit card).
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"mnemoverse": {
"command": "npx",
"args": [
"-y",
"@mnemoverse/mcp-memory-server@latest"
],
"env": {
"MNEMOVERSE_API_KEY": "mk_live_YOUR_KEY"
}
}
}
}⚠️ Restart Claude Desktop after saving. MCP servers are only picked up on client startup.
Try It
Say to Claude:
"Remember that I always deploy to Railway using
railway up"
Then in a new session:
"Deploy this project"
Claude remembers.
Tools
The MCP server gives Claude 6 tools:
memory_write — Store a memory
When Claude learns something worth keeping — a preference, a lesson, a decision — it stores it.
You: "I prefer Tailwind over CSS modules"
Claude: [calls memory_write]
content: "User prefers Tailwind CSS over CSS modules for styling"
concepts: ["tailwind", "css", "styling", "preferences"]
→ Stored (importance: 0.82)| Name | Type | Required | Description |
|---|---|---|---|
content | string | Yes | What to remember (1-10,000 chars) |
concepts | string[] | No | Key concepts for linking memories |
domain | string | No | Namespace: "engineering", "user:alice" |
memory_read — Recall memories
Before starting a task, Claude checks what it already knows.
You: "Set up the database"
Claude: [calls memory_read]
query: "database setup preferences and history"
→ 1. [92%] Project uses PostgreSQL 15 + Prisma ORM (engineering)
2. [87%] Always run migrations with --create-only first (lessons)
3. [71%] DB hosted on Supabase, connection string in .env.local| Name | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Natural language search (1-5,000 chars) |
top_k | integer | No | Max results (default: 5, max: 50) |
domain | string | No | Filter by namespace |
memory_feedback — Rate memories
After using a memory, Claude reports whether it helped. Good memories surface faster next time.
Claude: [calls memory_feedback]
atom_ids: ["550e8400-..."]
outcome: 1.0 // Very helpful!
→ Feedback recorded for 1 memory.| Name | Type | Required | Description |
|---|---|---|---|
atom_ids | string[] | Yes | Memory IDs from read results |
outcome | number | Yes | -1.0 (harmful) to 1.0 (very helpful) |
memory_stats — Check status
Claude: [calls memory_stats]
→ Memories: 1,250 (500 episodes, 450 prototypes)
Associations: 8,500 Hebbian edges
Domains: engineering, user:alice, project:acme
Avg quality: valence 0.65, importance 0.72memory_delete — Forget one memory
For when Claude stored a wrong fact or the user explicitly asks to forget something specific.
You: "Forget what I said about Railway — we moved to Fly.io"
Claude: [calls memory_read to find the atom_id, then memory_delete]
atom_id: "550e8400-e29b-41d4-a716-446655440000"
→ Deleted memory 550e8400-....| Name | Type | Required | Description |
|---|---|---|---|
atom_id | string | Yes | The atom_id of the memory to delete (from memory_read results) |
Idempotent — deleting an already-gone memory returns "No memory found with id ..." instead of an error.
memory_delete_domain — Wipe an entire topic
For broad cleanups when the user wants to forget everything in a namespace — e.g. "wipe my benchmark experiments". This is much more destructive than memory_delete, so Claude should only call it after an explicit user request, and the confirm: true parameter is a safety interlock enforced by the schema.
You: "Wipe everything about project:old-client"
Claude: [calls memory_delete_domain]
domain: "project:old-client"
confirm: true
→ Deleted 42 memories from domain "project:old-client".| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | The domain namespace to wipe (must match exactly) |
confirm | literal true | Yes | Safety interlock — must be exactly true |
What to Remember
| Category | Example |
|---|---|
| Preferences | "User prefers dark mode", "Always use pnpm, not npm" |
| Project context | "This repo uses PostgreSQL + Prisma", "Deploy target is Railway" |
| Lessons learned | "Never deploy on Fridays", "Run tests before push" |
| Decisions | "Chose REST over GraphQL for caching simplicity" |
| People | "Alice owns the design system", "Bob reviews all API changes" |
| Patterns | "Exponential backoff fixed timeout issues in this service" |
Universal Memory
Same API key, same memories — across all tools.
┌── Claude Code ← you are here
├── Claude Desktop ← you are here
Mnemoverse API ──├── Cursor / VS Code / Windsurf
(one memory) ├── ChatGPT (Custom Actions)
└── Python SDK / RESTWrite a memory in Claude Code → ChatGPT reads it. Learn something in Claude Desktop → Cursor knows it.
Configuration
| Variable | Required | Default |
|---|---|---|
MNEMOVERSE_API_KEY | Yes | — |
MNEMOVERSE_API_URL | No | https://core.mnemoverse.com/api/v1 |
Source & Distribution
The MCP server is also listed on the Official MCP Registry. Source on GitHub under MIT.
Related
- Cursor, VS Code & Windsurf — editor integrations
- ChatGPT — give any Custom GPT persistent memory
- Python SDK — for scripts and backends
- API Reference — full endpoint documentation