Mnemoverse

Managed persistent-memory API for AI agents over MCP; memory that scores importance, links concepts, and learns from outcomes.

Documentation

@mnemoverse/mcp-memory-server

npm version npm downloads MCP Registry License: MIT Research: SLoD arXiv Glama quality

Hosted memory for AI agents that learns and forgets. Feedback reranks the facts that help; recall fades by recency. One API key works across Claude, Cursor, VS Code, ChatGPT, and any MCP client.

Memory that persists across sessions, projects, and tools — and improves with use. Hosted, so there's no infrastructure to run, and not locked to a single cloud.

⭐ If Mnemoverse saves you from re-explaining context to your agents, star the repo. It helps other builders find it.

Quick Start

1. Get a free API key

Sign up at console.mnemoverse.com — takes 30 seconds, no credit card.

2. Connect to your AI tool

Claude Code — add via CLI:

claude mcp add mnemoverse \
  -e MNEMOVERSE_API_KEY=mk_live_YOUR_KEY \
  -e MNEMOVERSE_API_URL=https://core.mnemoverse.com/api/v1 \
  -- npx -y @mnemoverse/mcp-memory-server@latest

Cursor — click to install, or add to .cursor/mcp.json:

Add to Cursor

{
  "mcpServers": {
    "mnemoverse": {
      "command": "npx",
      "args": [
        "-y",
        "@mnemoverse/mcp-memory-server@latest"
      ],
      "env": {
        "MNEMOVERSE_API_KEY": "mk_live_YOUR_KEY",
        "MNEMOVERSE_API_URL": "https://core.mnemoverse.com/api/v1"
      }
    }
  }
}

VS Code — add to .vscode/mcp.json (note: VS Code uses servers, not mcpServers):

{
  "servers": {
    "mnemoverse": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@mnemoverse/mcp-memory-server@latest"
      ],
      "env": {
        "MNEMOVERSE_API_KEY": "mk_live_YOUR_KEY",
        "MNEMOVERSE_API_URL": "https://core.mnemoverse.com/api/v1"
      }
    }
  }
}

Windsurf — add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "mnemoverse": {
      "command": "npx",
      "args": [
        "-y",
        "@mnemoverse/mcp-memory-server@latest"
      ],
      "env": {
        "MNEMOVERSE_API_KEY": "mk_live_YOUR_KEY",
        "MNEMOVERSE_API_URL": "https://core.mnemoverse.com/api/v1"
      }
    }
  }
}

More MCP clients — same server, different config file:

Zed — add to ~/.config/zed/settings.json (Zed uses context_servers, and "source": "custom" is required):

{
  "context_servers": {
    "mnemoverse": {
      "source": "custom",
      "command": "npx",
      "args": [
        "-y",
        "@mnemoverse/mcp-memory-server@latest"
      ],
      "env": {
        "MNEMOVERSE_API_KEY": "mk_live_YOUR_KEY",
        "MNEMOVERSE_API_URL": "https://core.mnemoverse.com/api/v1"
      }
    }
  }
}

JetBrains (AI Assistant) — Settings → Tools → AI Assistant → Model Context Protocol (MCP), then paste:

{
  "mcpServers": {
    "mnemoverse": {
      "command": "npx",
      "args": [
        "-y",
        "@mnemoverse/mcp-memory-server@latest"
      ],
      "env": {
        "MNEMOVERSE_API_KEY": "mk_live_YOUR_KEY",
        "MNEMOVERSE_API_URL": "https://core.mnemoverse.com/api/v1"
      }
    }
  }
}

ClineMCP Servers → Configure (or edit cline_mcp_settings.json). Cline reads env values literally, so paste your real key — not a ${VAR} reference:

{
  "mcpServers": {
    "mnemoverse": {
      "command": "npx",
      "args": [
        "-y",
        "@mnemoverse/mcp-memory-server@latest"
      ],
      "env": {
        "MNEMOVERSE_API_KEY": "mk_live_YOUR_KEY",
        "MNEMOVERSE_API_URL": "https://core.mnemoverse.com/api/v1"
      }
    }
  }
}

Continue — add ~/.continue/mcpServers/mnemoverse.yaml (Continue uses YAML):

mcpServers:
  - name: mnemoverse
    command: npx
    args:
      - "-y"
      - "@mnemoverse/mcp-memory-server@latest"
    env:
      MNEMOVERSE_API_KEY: "mk_live_YOUR_KEY"
      MNEMOVERSE_API_URL: "https://core.mnemoverse.com/api/v1"

Why @latest? Bare npx @mnemoverse/mcp-memory-server is cached indefinitely by npm and stops re-checking the registry. The @latest suffix forces a metadata lookup on every Claude Code / Cursor / VS Code session start (~100-300ms), so you always pick up new releases.

⚠️ Restart your AI client after editing the config. MCP servers are only picked up on client startup.

3. Try it — 30 seconds to verify it works

Paste this in your AI chat:

"Remember that my favourite TypeScript framework is Hono, and please call memory_write to save it."

Your agent should call memory_write and confirm the memory was stored.

Then open a new chat / new session (this is the whole point — memory survives restarts), and ask:

"What's my favourite TypeScript framework?"

Your agent should call memory_read, find the entry, and answer "Hono". If it does — you're wired up. Write whatever you want next.

If it doesn't remember: check that the client was fully restarted and the config has your real mk_live_... key, not the placeholder.

Tools

ToolWhat it does
memory_writeStore a memory — insight, preference, lesson learned
memory_readSearch memories by natural language query (optional recency ordering, time bounds, author exclusion)
memory_list_recentList newest memories first — no query; since/until bounds (inclusive) + cursor paging
memory_feedbackRate memories as helpful or not (improves future recall)
memory_statsCheck how many memories stored, which domains exist
memory_deletePermanently delete a single memory by atom_id
memory_delete_domainWipe an entire domain (requires confirm: true safety interlock)
memory_create_roomCreate a shared memory room; its address works as a domain on write/read
memory_invite_to_roomMint a one-time invite (code + link) for a room you own
memory_join_roomJoin a shared room with an invite code (mnvr_...)
memory_list_roomsList rooms you own or joined, with each room's address to use as domain
vault_listList Vault secrets by alias and purpose — the secret value is never returned

Ideas: What to Remember

  • User preferences: "I use dark mode", "I prefer Tailwind over CSS modules"
  • Project context: "This project uses PostgreSQL + Prisma", "Deploy to Railway"
  • Lessons learned: "Always run tests before push on this repo"
  • Decisions made: "We chose REST over GraphQL because of caching simplicity"
  • People & roles: "Alice is the designer, Bob owns the API"
  • Past mistakes: "Don't deploy on Fridays — learned this the hard way"

Universal Memory

The same API key works across all tools. Write a memory in Claude Code — read it in Cursor. Learn something in VS Code — your GPT Custom Action knows it too.

                    ┌── Claude Code (this MCP server)
                    ├── Cursor (this MCP server)
   Mnemoverse API ──├── VS Code (this MCP server)
   (one memory)     ├── GPT (Custom Actions)
                    ├── Python SDK (pip install mnemoverse)
                    └── REST API (curl)

Configuration

Env VariableRequiredDefault
MNEMOVERSE_API_KEYFor every tool call — the server starts and lists its tools without one
MNEMOVERSE_API_URLNohttps://core.mnemoverse.com/api/v1

Links

Setup and reference

Background reading

Project

Privacy

This server sends to the Mnemoverse API (core.mnemoverse.com), authenticated with your API key, what a tool call carries — and nothing else it can see. It does not read your AI client's conversation history, your local files, or anything you don't pass to a memory_* / vault_* tool. Stored memories live under your account; Mnemoverse never sells them and never shares them on its own. The one sharing path is the one you create yourself: inviting someone to a shared room grants their assistant access to that room's memories, bounded by the invite's scope.

What each tool sends:

ToolData sent
memory_writethe content, concepts, and domain you pass
memory_readthe query, plus any filters: domain, since/until, exclude_author, top_k, order_by
memory_list_recentthe feed filters: domain, since/until, exclude_author, limit, cursor
memory_feedbackthe atom_ids being rated and the outcome score
memory_delete / memory_delete_domainthe atom_id / domain being deleted
memory_create_roomthe room name and description
memory_invite_to_roomthe room_id, invite scope, and expiry
memory_join_roomthe invite code
memory_stats / memory_list_rooms / vault_listno request body — authenticated GETs

One thing goes out that you did not explicitly request: since 0.8.1, when a search or feed comes back empty, the server sends one or two authenticated read-only GET probes (/memory/rooms and/or /memory/stats) so the empty answer can say what it did not cover. The probes carry your API key and nothing else, change no stored state, and are disclosed in the CHANGELOG.

Privacy Policyhttps://mnemoverse.com/privacy
Retention & deletiondelete one memory with memory_delete, or an entire namespace with memory_delete_domain
Contacthello@mnemoverse.com

License

MIT © Mnemoverse