An MCP server that saves and retrieves AI conversation context. Hand off conversations between AI agents seamlessly. Free and no account required.
When you're working with an AI agent and need to:
- Switch agents - Claude can't fix your bug? Try Cursor or Copilot with dense context
- Continue later - Save progress and pick up where you left off
- Move machines - Start on laptop, continue on desktop
Just say memo set and the agent will save structured context (goal, completed tasks, pending tasks, decisions, relevant files). Get a short ID back, use memo get <id> anywhere to restore context.
Area.mp4
claude mcp add memo -- npx -y @upstash/memoAdd to your opencode.json:
{
"mcp": {
"memo": {
"type": "local",
"command": ["npx", "-y", "@upstash/memo"]
}
}
}Add to your MCP config:
{
"mcpServers": {
"memo": {
"command": "npx",
"args": ["-y", "@upstash/memo"]
}
}
}memo set
The AI will summarize the conversation and return an ID like 4tJ630XqhCV5gQelx98pu.
memo get 4tJ630XqhCV5gQelx98pu
The AI will load the previous context and continue where you left off.
When you run memo set, the agent stores a structured snapshot, for example:
- Goal
- Completed tasks
- Pending tasks
- Key decisions
- Relevant files (paths only) or references
This keeps restored conversations focused and avoids reloading raw chat history.
Your conversation context is stored in Upstash Redis with encryption enabled at rest and in transit. Data expires automatically after 24 hours (configurable via --ttl-mins).
If you prefer full control over your data, you can self-host both the API and storage using your own infrastructure. See the Self-hosting section below.
The repo includes both the MCP server and the API. To self-host:
Create a .env file with your Upstash Redis credentials:
UPSTASH_REDIS_REST_URL=your-redis-url
UPSTASH_REDIS_REST_TOKEN=your-redis-token
npx vercel devvercelSet the same environment variables in your Vercel project settings.
The MCP server uses https://memo-upstash.vercel.app by default. To use your own API, modify index.ts:
const GET_URL = "https://your-api.vercel.app/api/get";
const SET_URL = "https://your-api.vercel.app/api/set";Set expiration time in minutes. Default is 1440 (24 hours).
{
"mcpServers": {
"memo": {
"command": "npx",
"args": ["-y", "@upstash/memo", "--ttl-mins", "4320"]
}
}
}MIT