PluginBench
MCP Server
Maintained
MIT

Remembra Relay MCP Server

io.github.remembra-ai/remembra

Cross-agent handoff: the next coding agent starts from the last one's facts, not a blank page.

What is the Remembra Relay MCP server?

Remembra Relay is an MCP server that enables persistent memory and session handoffs across coding agents. When one agent's session ends, it saves facts about what was done, what failed, and what's next—so the next agent, on another machine or from another vendor, starts from that context instead of a blank page.

Remembra Relay captures session context from git and agent transcripts, creating handoffs that persist across agent sessions and machines. It works with Claude Code, Codex, Gemini CLI, Qwen Code, Kimi Code, Cursor, and any MCP-compatible agent. The server stores facts extracted from session activity, lets agents recall them by meaning, and maintains a durable trail of all handoffs for visibility into multi-agent work.

How to install Remembra Relay

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • REMEMBRA_API_KEY
    required
    secret

    Remembra API key (dashboard: Settings > API keys)

  • REMEMBRA_URL
    required

    Remembra server URL: https://api.remembra.dev, or your self-hosted server

  • REMEMBRA_AGENT_ID

    Name this agent's handoffs are recorded under, e.g. claude-code, codex, cursor

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "remembra": {
      "command": "uvx",
      "args": [
        "remembra-mcp"
      ],
      "env": {
        "REMEMBRA_API_KEY": "<YOUR_REMEMBRA_API_KEY>",
        "REMEMBRA_URL": "<YOUR_REMEMBRA_URL>",
        "REMEMBRA_AGENT_ID": "<YOUR_REMEMBRA_AGENT_ID>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • session_brief — Retrieve the last session's brief: what was done, what failed, and the next step.
  • close_session — Report facts from the current session to create a handoff for the next agent.
  • store_memory — Store a fact in persistent memory.
  • recall_memories — Recall facts by semantic meaning.
  • update_memory — Update an existing memory.
  • forget_memories — Delete memories.
  • list_memories — List all stored memories.
  • ingest_conversation — Ingest a conversation to extract and store facts.
  • search_entities — Search for people, projects, and relationships.
  • timeline — View facts in chronological order.
  • relationships_at — Query relationships at a specific time.
  • send_to_inbox — Send a message to another agent's inbox.
  • get_inbox — Retrieve messages from the inbox.
  • ack_inbox — Acknowledge inbox messages.
  • share_memory — Share memories with other users or spaces.
  • list_spaces — List shared memory spaces.
  • create_space — Create a new shared memory space.
  • resolve_project — Resolve the current project by git remote.
  • store_status — Store status updates tied to the project.
  • list_status — List status updates for the project.

Use cases

  • Hand off multi-day coding projects between agents on different machines or from different vendors without losing context.
  • Maintain a durable trail of what each agent accomplished, what failed, and what's next for visibility and debugging.
  • Store and recall project-specific facts (dependencies, architecture decisions, known issues) across multiple agent sessions.
  • Coordinate work between multiple agents using crew mode with task claiming, guarding, and checkpoints.
  • Extract and organize facts from conversations and session transcripts for semantic recall by meaning.

Remembra Relay MCP server FAQ

What is Remembra Relay?

Remembra Relay is an MCP server that captures session context when a coding agent finishes work, then provides that context to the next agent—whether it's the same tool, a different vendor, or a week later. It reads from git and agent transcripts to extract facts about what was done, what failed, and what's next.

Is Remembra Relay free?

Handoffs, briefs, the trail, and search are free on every plan. Remembra Cloud offers a Free tier, Solo ($12/mo), Pro ($29/mo), and Team ($15/seat/mo). Self-hosting is free under the MIT license.

How do I install Remembra Relay in Cursor or Claude?

Install via PyPI: `pip install remembra[mcp]`. For Claude Code: `claude mcp add remembra -- remembra-mcp`. For Cursor, add the MCP config to `.cursor/mcp.json`. For self-hosted servers, set `REMEMBRA_URL` to your server's address.

Do I need authentication?

You need a free API key from app.remembra.dev to use Remembra Cloud. Self-hosted servers can run with auth off. Set the key via `REMEMBRA_API_KEY` environment variable or at the hidden prompt during `remembra-install`.

Which agents does Remembra Relay work with?

Verified session hooks for Claude Code, Codex, Gemini CLI, Qwen Code, and Kimi Code. Cursor and any other MCP agent can use the MCP tools (`session_brief`, `close_session`) directly. Windsurf is unverified.

What happens if a handoff doesn't arrive?

Run `remembra-relay doctor` to diagnose where the handoff dropped. It checks local files and your trail, identifies the problem, and suggests one fix per issue. Inside an agent, use the read-only tools `remembra_doctor`, `remembra_setup`, and `remembra_help`.

README (reference)

Source of truth, from the repository.

<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="landing/brand/lockup-horizontal-dark.svg"> <img src="landing/brand/lockup-horizontal.svg" alt="Remembra" width="320"> </picture> </p> <h1 align="center">Remembra Relay</h1> <p align="center"> <strong>One agent stops. The next one already knows.</strong><br> When a connected agent's session ends, Remembra Relay saves a handoff (a session that did nothing leaves none).<br> With the session hooks it is built from git and, for Claude Code and Codex, the session transcript.<br> An agent that closes through MCP reports its own facts, marked unverified.<br> The next agent, on another machine, from another vendor, or next week, starts from it. </p> <p align="center"> <a href="https://pypi.org/project/remembra/"><img src="https://img.shields.io/pypi/v/remembra?color=blue&label=PyPI" alt="PyPI"></a> <a href="https://github.com/remembra-ai/remembra/stargazers"><img src="https://img.shields.io/github/stars/remembra-ai/remembra?style=social" alt="GitHub Stars"></a> <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a> <a href="https://docs.remembra.dev"><img src="https://img.shields.io/badge/docs-remembra.dev-blue" alt="Documentation"></a> </p> <p align="center"> <a href="https://remembra.dev">Website</a> • <a href="https://docs.remembra.dev/guides/relay/">Relay guide</a> • <a href="https://docs.remembra.dev">Docs</a> • <a href="https://remembra.dev/changelog">Changelog</a> • <a href="https://discord.gg/mPYQRKzXz5">Discord</a> </p> <!-- mcp-name: io.github.remembra-ai/remembra -->

Install

First get a free key at app.remembra.dev, then run:

pipx install --force 'remembra[mcp]>=0.16'
remembra-install --all
remembra-relay connect --apply

remembra-install asks for the key at a hidden prompt (or reads REMEMBRA_API_KEY) and shows its changes before it writes. connect --apply writes the hooks and keeps a backup of each file; run remembra-relay connect alone first to see every change without writing. Codex runs the hooks only after you trust them: Settings > Hooks > Trust in the Codex app, or /hooks in the Codex CLI. When a hook's command changes, Codex skips it until you trust it again. Hosting the server yourself? Add --url <your server> to remembra-install. remembra-relay ships in remembra 0.16.0.

Handoffs not arriving? remembra-relay doctor says where the baton dropped, from this machine's files and your trail, with one fix per problem; it only reads. Inside your agent the local MCP server has the same checks as read-only tools: remembra_doctor, remembra_setup (the install steps for this machine) and remembra_help. See Doctor.

What the next agent sees

Claude Code finished a session and wrote in its summary that the work was done and pushed. Git disagreed. The next agent's brief includes this line:

<!-- readme-brief: generated by remembra.relay.handoff.render_last_session; tests/test_readme_relay.py keeps it true -->
Last session: claude-code (key-verified), 12m ago, on feat/pdf-export@a41f2c9: done: a41f2c9 Add PDF export for invoices; 77c01aa Embed fonts in exported PDFs; tests passing: pytest tests/test_pdf.py (12 passed); changed 3 file(s): invoices/pdf.py, invoices/fonts.py, tests/test_pdf.py / NOT done: 2 commit(s) not pushed to origin/feat/pdf-export / failing: none / next (derived from the recorded facts): push 2 commit(s) to origin/feat/pdf-export (facts reported as collected by remembra-relay from git and the session transcript (not checked)) (the agent's summary contradicts these recorded facts)

With the session hooks, remembra-relay builds the done, not done and failing sections from git and, for Claude Code and Codex, the session's test runs, never from an LLM. The server does not check where the facts came from; the brief says they were reported by remembra-relay. The agent's own summary is optional; it is checked against those facts and shown as unverified, or, as here, contradicted. A handoff written through the close_session MCP tool holds the facts the agent declares, labeled "declared by the agent (not checked)".

How it works

  1. Close. When a session ends, remembra-relay close reads the branch, commits, changed and uncommitted files and unpushed commits from git, and, for Claude Code and Codex, the commands, test runs and open items in the local transcript (Codex's is its rollout file). The transcript itself stays on your machine. Secrets that match Remembra's patterns are redacted from what is sent.
  2. Brief. When the next session starts, in the same tool or another, remembra-relay brief (run by the verified session hooks) or the session_brief MCP tool (any MCP agent can call it) gives the agent who worked last, what is done, what is failing and the next step. The text brief is capped at about 1,500 tokens (6,000 characters). session_brief returns only that text with compact=true; by default it also returns the full brief as JSON, which is larger. Everything another agent recorded is wrapped as untrusted data.
  3. Trail. Every handoff stays in order: remembra-relay trail, or the Trail page in the dashboard. A git log for your agents.

The same repository on a laptop, a server or in a worktree is one project, because it is identified by its git remote. Give each agent its own scoped key and its handoffs show as key-verified.

Agents

AgentSession hooksHow it reads and writes handoffs today
Claude CodeverifiedHooks: brief at start, close at end, with test results from the transcript
Codexverified (codex-cli 0.155.0-alpha.16.4, a prerelease)Hooks: brief at start, close at end, with commands and test runs from the rollout; trust them in Codex (Settings > Hooks, or /hooks in the CLI), and again when one changes
Gemini CLIverified (Gemini CLI 0.61.0)Hooks: brief at start (after /clear, with the first prompt), close at end; they run only in folders you trust
Qwen Codeverified (Qwen Code 0.24.6)Hooks: brief at start, close at end, on a rate-limit or billing stop and before /compress; qwen -p writes no handoff
Kimi Codeverified (Kimi Code 2.1.1)Hooks: brief with the first prompt, close when the TUI exits; kimi -p writes no handoff
CursorunverifiedMCP tools (session_brief, close_session)
Any other MCP agentnoneMCP tools

Claude Code's and Codex's session hooks are verified (Codex with codex-cli 0.155.0-alpha.16.4, a prerelease, and the same tests also pass on the stable 0.157.1). The Gemini CLI, Qwen Code and Kimi Code hooks are verified too: each was run against the real tool at the version in the table, with a local stand-in for the model, and put the brief in the model's request and posted the handoff; other versions have not been run. The Cursor hooks are unverified: Cursor's own hook runner ran them, but no logged-in Cursor session has yet. connect leaves them out unless you add --include-unverified. Until they are tested, Cursor reads the brief and writes its handoff through Remembra's MCP tools, as does any MCP agent.

How it compares

Remembra RelayVendor memory (Claude Code, Codex, Copilot, Windsurf)Local handoff toolsMemory APIs (Mem0, Zep, Letta)
Works across machinesYes, by git remoteMostly noNoYes
Works across vendorsYesNo, one vendor eachYesThrough their API
Handoff facts from gitYes, with the summary checkedNoTranscript or diffNo
Durable trail of sessionsYesNoNoNo
Enforced coordination between agentsCrew mode, in buildClaude-only agent teamsNoNo

Details, with a source and date, for claude-mem, agentmemory, the local handoff tools and Claude Code's own features: Remembra and other handoff tools. claude-mem and agentmemory are larger projects that also carry memory between sessions; the comparison says where each is the better pick.

Pricing

Handoffs, briefs, the inbox, the trail and search are free on every plan. Remembra Cloud: Free, Solo $12/mo, Pro $29/mo, Team $15/seat/mo (pricing). Self-hosting is free under the MIT license.


The memory API underneath

Remembra Relay runs on Remembra's memory layer, which you can also use directly: store facts, recall them by meaning, and let it pull out the people, projects and relationships in them.

from remembra import Memory

memory = Memory(user_id="user_123")
memory.store("Had a meeting with Sarah from Acme Corp. She prefers email over Slack.")
result = memory.recall("How should I contact Sarah?")
print(result.context)
# "Sarah from Acme Corp prefers email over Slack."

Since v0.16.0 the memory layer also keeps the exact text that facts were derived from and points each fact back to it. By default a fact that does not match its source is not stored: the store response lists it under dropped_facts. With REMEMBRA_GROUNDING_ACTION=flag such a fact is stored and marked unverified instead.

Self-host the server

One Command Install

curl -sSL https://raw.githubusercontent.com/remembra-ai/remembra/main/quickstart.sh | bash

This starts Remembra, Qdrant and Ollama locally, with auth off and local embeddings, so the server needs no API key. The first start downloads the images and the embedding model, so how long it takes depends on your connection.

Or with Docker Compose directly:

git clone https://github.com/remembra-ai/remembra && cd remembra
docker compose -f docker-compose.quickstart.yml up -d

Try it:

# Store a memory
curl -X POST http://localhost:8787/api/v1/memories \
  -H "Content-Type: application/json" \
  -d '{"content": "Alice is CEO of Acme Corp", "user_id": "demo"}'

# Recall it
curl -X POST http://localhost:8787/api/v1/memories/recall \
  -H "Content-Type: application/json" \
  -d '{"query": "Who runs Acme?", "user_id": "demo"}'

Connect your agents (since v0.10.0)

Configure the agents it detects, then add the session hooks:

pipx install --force 'remembra[mcp]>=0.16'
REMEMBRA_API_KEY=local remembra-install --all --url http://localhost:8787
remembra-relay connect --apply

remembra-install needs a key value. The quickstart server runs with auth off and accepts any value, so local is only a placeholder; for a server with auth on, leave REMEMBRA_API_KEY=local out and give a real key at the hidden prompt. It auto-detects and configures Claude Code, Codex CLI, Cursor and Gemini CLI, and Claude Desktop on macOS only (the Windows config is not detected or written). Windsurf is unverified: remembra-install --agent windsurf writes it, --all does not. remembra-relay connect --apply writes the session hooks that save and read handoffs.

Verify setup:

remembra-doctor all
<details> <summary>Manual MCP Config (if needed)</summary>

Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "remembra": {
      "command": "remembra-mcp",
      "env": {
        "REMEMBRA_URL": "http://localhost:8787",
        "REMEMBRA_USER_ID": "default"
      }
    }
  }
}
</details>

Claude Code:

claude mcp add remembra -e REMEMBRA_URL=http://localhost:8787 -- remembra-mcp

Cursor — add to .cursor/mcp.json:

{
  "mcpServers": {
    "remembra": {
      "command": "remembra-mcp",
      "env": {
        "REMEMBRA_URL": "http://localhost:8787"
      }
    }
  }
}

Now ask Claude: "Remember that Alice is CEO of Acme Corp" — then later: "Who runs Acme?"

Python SDK

pip install remembra
from remembra import Memory

memory = Memory(user_id="user_123")
memory.store("Had a meeting with Sarah from Acme Corp. She prefers email over Slack.")
result = memory.recall("How should I contact Sarah?")
print(result.context)  # "Sarah from Acme Corp prefers email over Slack."

TypeScript SDK

npm install remembra
import { Remembra } from 'remembra';

const memory = new Remembra({ url: 'http://localhost:8787' });
await memory.store('User prefers dark mode');
const result = await memory.recall('preferences');

Memory features

🧠 Smart Extraction — LLM-powered fact extraction from raw text

👥 Entity Resolution — an LLM matcher merges name variants that fit the context ("Mr. Smith" and "John Smith"); resolving "my husband" to a named person is best-effort and untested

⏱️ Temporal Memory — TTL, decay curves, historical queries

🔍 Hybrid Search — Semantic + keyword for accurate recall

🔒 Security — PII detection and redaction, secret redaction, audit logs

📊 Dashboard — Visual memory browser, entity graphs, analytics


📊 Benchmarks

No valid benchmark result has been published yet. In March 2026 we ran 1 of the 10 LoCoMo conversations (199 questions), but that run's scores are not valid: its judge counted every INCORRECT verdict as correct, and it scored the raw recall context instead of an answer. Both bugs are fixed in the runner (commit a19fb29); a fresh run has not been done yet.

Run it yourself: python benchmarks/locomo_runner.py --data /tmp/locomo/data/locomo10.json


📖 Documentation

ResourceDescription
Quick StartGet running in minutes
Python SDKFull Python reference
TypeScript SDKJavaScript/TypeScript guide
Remembra RelayHandoffs, briefs and the trail across agents
MCP ServerTool reference and setup guides for the 31 tools
REST APIAPI reference
Self-HostingDocker deployment guide

🛠️ MCP Server

Give an MCP-capable coding agent persistent memory. A standard MCP server (stdio, SSE, streamable HTTP), with setup guides for Claude Code, Cursor, VS Code + Copilot, JetBrains, Zed and OpenAI Codex. It should work with any MCP-compatible client. Windsurf has a guide but is unverified.

pip install remembra[mcp]
claude mcp add remembra -e REMEMBRA_URL=http://localhost:8787 -- remembra-mcp

Available tools (31):

GroupTools
Remembra Relaysession_brief, close_session, resolve_project, store_status, list_status
Inbox between agentssend_to_inbox, get_inbox, ack_inbox
Memorystore_memory, recall_memories, update_memory, forget_memories, list_memories, ingest_conversation
Entities and timesearch_entities, timeline, relationships_at
Sharingshare_memory, list_spaces, create_space
Connectionhealth_check
Setup and diagnosis (read-only)remembra_doctor, remembra_setup, remembra_help
Crew mode (when the server runs it)crew_status, crew_claim, crew_guard, crew_task, crew_say, crew_checkpoint, crew_report

🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│                    Your Application                          │
├──────────┬──────────────┬───────────────────────────────────┤
│ Python   │ TypeScript   │ MCP Server (Claude/Cursor)        │
│ SDK      │ SDK          │ remembra-mcp                      │
├──────────┴──────────────┴───────────────────────────────────┤
│                   Remembra REST API                          │
├──────────────┬──────────────┬───────────────┬───────────────┤
│  Extraction  │   Entities   │   Retrieval   │   Security    │
│  (LLM)       │  (Graph)     │ (Hybrid)      │  (PII/Audit)  │
├──────────────┴──────────────┴───────────────┴───────────────┤
│                    Storage Layer                             │
│         Qdrant (vectors) + SQLite (metadata/graph)          │
└─────────────────────────────────────────────────────────────┘

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

# Clone
git clone https://github.com/remembra-ai/remembra
cd remembra

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Start dev server
remembra-server --reload

📄 License

MIT License — Use it however you want.


⭐ Star History

If Remembra helps you, please star the repo! It helps others discover the project.

Star History Chart


<p align="center"> Built with ❤️ by <a href="https://dolphytech.com">DolphyTech</a><br> <a href="https://remembra.dev">remembra.dev</a> • <a href="https://docs.remembra.dev">docs</a> • <a href="https://twitter.com/remembradev">twitter</a> • <a href="https://discord.gg/mPYQRKzXz5">discord</a> </p>

Related MCP servers

Generate professional App Store screenshots by matching any top app's style.

View repository →

Job platform for AI agents. Track tech jobs from companies that match your stack.

2
JavaScript
MIT
View repository →

Swiss health insurance premiums (Krankenkassen-Prämien) 2016-2026. 1.6M records from BAG.

1
JavaScript
MIT
View repository →

AI code security audits via x402 USDC: $0.01 scans, $0.50 audits, $5 auto-fixes. SAST/SCA.

0
Python
MIT
View repository →

Run alias-based queries against PostgreSQL, MySQL, MongoDB and Oracle without exposing credentials.

3
Python
View repository →

Create videos with prompts, and use Rendley’s video editor to adjust anything you need.

0
TypeScript
Apache-2.0
View repository →