Claude Code
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 -s user \
-e MNEMOVERSE_API_KEY=mk_live_YOUR_KEY \
-e MNEMOVERSE_API_URL=https://core.mnemoverse.com/api/v1 \
-- npx -y @mnemoverse/mcp-memory-server@latestOn Windows (PowerShell), paste the same command as one line — PowerShell does not read the \ line continuations:
claude mcp add mnemoverse -s user -e MNEMOVERSE_API_KEY=mk_live_YOUR_KEY -e MNEMOVERSE_API_URL=https://core.mnemoverse.com/api/v1 -- 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).
Prefer no API key? Connect over one-click OAuth instead — the connector URL is https://mcp.mnemoverse.com/mcp; sign in with your browser, nothing to paste.
Using the Claude apps, not the CLI?
Claude Desktop, claude.ai (web), and mobile set up differently — see Claude Desktop, Web & Mobile.
Try It
Claude may never recall what it saved — unless you tell it to
Without a standing instruction, Claude answers from its own context (and Claude Code keeps its own CLAUDE.md notes) instead of checking Mnemoverse — so recall quietly goes unused. Fix it with one line: Make Your Agent Use Memory. Writing is the opposite case and needs no fix: the server's own instructions tell Claude to save durable facts, preferences and decisions proactively, without waiting to be asked.
With that in place, the point is one memory across tools. In Claude Code:
"Remember: staging deploys go through
make deploy-staging, never Railway directly."
Later, in Cursor or ChatGPT — a different tool, even days later:
"How do I deploy staging here?"
It recalls the rule, because the memory lives in Mnemoverse, not in any single tool. (A single-tool "it remembers" demo wouldn't prove much — the tool's own memory could do that; cross-tool recall is what needs Mnemoverse.)
If this setup saved you time, a GitHub star helps the next builder find it.
Tools
The MCP server registers 10 tools in total: the 5 core memory tools below, four Beta shared-room tools (covered in their own section), and vault_list, which returns the names (aliases) of stored secrets — never the secret values themselves.
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 (up to 256 items) |
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. Project uses PostgreSQL 15 + Prisma ORM (postgresql, prisma) @"engineering" · 2026-07-14 09:31Z
id: 550e8400-e29b-41d4-a716-446655440000
2. Always run migrations with --create-only first (migrations, prisma) @"lessons" [by cursor] · 2026-06-02 18:05Z
id: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
3. DB hosted on Supabase, connection string in .env.local (supabase, env) · 2026-05-21 11:47Z
id: 6ba7b811-9dad-11d1-80b4-00c04fd430c8| Name | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Natural language search (1-5,000 chars) |
top_k | integer | No | Requested number of results (default: 5, max: 50). Not a hard cap: association expansion can return more, and the relevance floor can return fewer |
domain | string | No | Filter by namespace |
order_by | string | No | "relevance" (default) or "recency" — newest first |
since / until | string | No | ISO-8601 bounds on creation time (naive = UTC) |
exclude_author | string | No | Skip entries whose author principal equals this value — the "only what others wrote" read in a room. It matches the principal, not the agent name shown in results, so an agent name will silently match nothing (max 200 chars) |
memory_list_recent — Catch up on what's new
The newest memories first, no search query — for resuming after a break or checking a shared room for fresh entries.
You: "Anything new in the team room since yesterday?"
Claude: [calls memory_list_recent]
domain: "xroom:acme-team"
since: "2026-08-03T00:00:00Z"
→ 1. [2026-08-04 09:12Z] Staging moved to Fly.io — Railway config retired [by bob/claude]
2. [2026-08-03 16:40Z] Design review moved to Thursdays [by alice/cursor]
(end of feed — nothing older)| Name | Type | Required | Description |
|---|---|---|---|
domain | string | No | One domain (e.g. a room's xroom:... address); omit for all |
since | string | No | Only entries at/after this ISO-8601 instant — your "last seen" watermark |
until | string | No | Only entries at/before this instant. Pair with since for a closed window |
exclude_author | string | No | Skip one author principal — same value and same caveat as on memory_read |
limit | integer | No | Page size (default: 20, max: 100) |
cursor | string | No | Opaque cursor from the previous page — continues without skips |
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.72Shared rooms (Beta)
Beyond your private memory, Claude can share a memory pool with other people's assistants through a room. Four Beta tools — memory_create_room, memory_invite_to_room (which mints a share code, mnvr_..., single-use through the local server), memory_join_room, and memory_list_rooms — let Claude spin up a room, invite someone, join one, and re-find the ones you already have: it returns each room's name and its xroom:<room_id> address, which is exactly the value to pass as domain on memory_write / memory_read. The hosted remote connector can request a higher use limit. Members then read and write the shared pool by passing domain: "xroom:<room_id>" on memory_write / memory_read. See Join a shared room for the full owner-and-joiner flow.
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 / web / mobile
Mnemoverse API ──├── Cursor / VS Code / Windsurf
(one memory) ├── ChatGPT
└── Python SDK / RESTWrite a memory in Claude Code → ChatGPT reads it. Learn something in Cursor → Claude Code recalls it.
Configuration
| Variable | Required | Default |
|---|---|---|
MNEMOVERSE_API_KEY | Yes | — |
MNEMOVERSE_API_URL | No | https://core.mnemoverse.com/api/v1 |
MNEMOVERSE_API_URL is the REST backend the local server talks to — it is not an MCP endpoint; never paste it into a connector-URL field. A remote MCP connector uses https://mcp.mnemoverse.com/mcp (Remote MCP Server).
Troubleshooting
Memory keeps disconnecting
There are two ways Claude reaches Mnemoverse, and they fail differently.
The OAuth connector (https://mcp.mnemoverse.com/mcp — added as a claude.ai connector, which Claude Code picks up automatically, or with claude mcp add --transport http and signed in via /mcp) is held by the host app's sign-in. Signing out, switching accounts, or the app re-authenticating you typically drops it, and exactly what happens is up to the host; a token that fails to refresh looks the same from the outside. The memory tools quietly vanish until you sign in again (/mcp → Re-authenticate in the CLI, or the connector settings on claude.ai). If your memory "keeps falling off", this is the connection to suspect first. Your memories are untouched: see what an account switch does to your connection.
The local server (the claude mcp add command at the top of this page) is a process on your machine with its own API key. It does not depend on any claude.ai login: you can sign out, switch accounts, or relogin as often as you like and memory stays up. If the connector keeps dropping, switching to the local install is the durable fix — one command, and the same memories, provided the key comes from the Mnemoverse account you signed in with (see the next question): both paths resolve to that account, not to the key itself.
To check what you are running: claude mcp list shows each configured server with its health, the local one under its npx command; claude mcp get <name> prints its Scope and Type: stdio. One trap if you have tried both paths: the Claude Code line on the Remote MCP Server page adds the connector without -s user, which puts it in local scope, and local scope takes precedence over a user-scoped server of the same name in that directory. Remove it first with claude mcp remove <name> -s local. After adding the local server, restart the Claude Code session so the tools load.
I switched to the local server and my memories or rooms are gone
The API key decides which account you are. Memories and shared rooms live in the account that stored them, so a key created in a different console account lands you in a fresh, empty store: memory_stats reports zero and memory_list_rooms shows nothing, with no error anywhere (a first memory_read on such a store answers "Your long-term memory is empty — nothing has been saved yet"). If you previously connected through OAuth, make sure the key comes from the same account you signed in with, and for shared rooms, the account behind the key must itself be a member: an invite accepted under one identity does not follow the key of another.
The tools are configured but Claude never uses them
That is a different problem with a one-line fix: give Claude a standing instruction to check memory first. See Make Your Agent Use Memory.
Source & Distribution
The MCP server is also listed on the Official MCP Registry. Source on GitHub under MIT.
Related
- Make Your Agent Use Memory — the standing-instruction technique so Claude actually calls the tools
- Remote MCP Server — connect over one-click OAuth, no API key
- Cursor, VS Code & Windsurf — editor integrations
- ChatGPT — give any Custom GPT persistent memory
- Python SDK — for scripts and backends
- Rooms — share a memory pool across accounts (Beta)
- API Reference — full endpoint documentation