ResumeState MCP Server
Official# ResumeState MCP server
<!-- mcp-name: io.github.UnderGroundDev/resumestate-mcp -->
Session continuity for AI assistants: resume any work lane where the last session stopped.
[ResumeState](https://resumestate.com/?utm_source=github-mcp) keeps track of where your work stands: what was tried,
what was decided, what's done and what failed. It files that under named **lanes**, one per line of work, so the next
session can pick up where the last one stopped, on any model or vendor. This MCP server gives an assistant the tools to
do that.
## Tools
| Tool | What it does |
|---|---|
| `connect` | Links this assistant to your ResumeState account with a short approval code (OAuth 2.0 device flow, RFC 8628) |
| `resume` | Fetches a lane's latest handoff, or the account-wide packet and its lanes |
| `list_lanes` | Lists your lanes (code, name, last handoff, freshness) |
| `handoff` | Records one structured handoff under a lane: tried, decided, done, failed, state, pointer |
| `list_artifacts`, `get_artifact` | Shows artifact cards first, and full content only when it's needed |
| `replay_search`, `replay_get` | Finds routines that worked, from the replay pool |
| `log_session`, `ingest`, `status` | Session bookkeeping, transcript ingest, and connection status |
## Install
You need Python 3.10+ and [uv](https://docs.astral.sh/uv/). Nothing to clone.
**Claude Desktop (one-click bundle)**
Download `resumestate-mcp-1.0.0.mcpb` from the [latest release](https://github.com/Resume-State/resumestate-mcp/releases/latest)
and open it in Claude Desktop to install it.
**Claude Code**
```bash
claude mcp add resumestate -- uvx --from git+https://github.com/Resume-State/resumestate-mcp resumestate-mcp
```
**Claude Desktop, Cursor and other MCP clients** (`claude_desktop_config.json`, `.cursor/mcp.json`, ...)
```json
{
"mcpServers": {
"resumestate": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Resume-State/resumestate-mcp", "resumestate-mcp"]
}
}
}
```
Then ask your assistant to run `connect`. It shows you a link and a short code. Approve it in your ResumeState account,
and the assistant gets its own pass.
## How the connection works
- **No API key in your config.** `connect` uses the OAuth 2.0 device flow: you approve the assistant on the website,
and it gets a pass scoped to your continuity.
- **The pass stays on your machine.** It's kept in `~/.resumestate/mcp-token.json`, readable by your user only, and
renews itself. It's never printed.
- **The pass is narrow.** It can't reach your keys, billing, password or other AIs. You can see it and switch it off
under Connected AIs in your account.
- **No configuration needed.** `RESUMESTATE_API_URL` defaults to `https://resumestate.com`; you don't need to set it.
## Pricing
Connecting an AI is part of a ResumeState membership. Every plan starts with a 7-day free trial (a card is asked at
checkout; cancel anytime). Prices are in Canadian dollars:
| Plan | Monthly | Yearly (20% off) |
|---|---|---|
| Solo | $9.99 CAD | $95.88 CAD |
| Team | $19.99 CAD | $191.88 CAD |
| Enterprise | $99 CAD | $950.40 CAD |
See [the plans](https://resumestate.com/?utm_source=github-mcp#plans) and
[the guide to MCP continuity servers](https://resumestate.com/guides/mcp-memory-server-for-session-continuity.html?utm_source=github-mcp).
## Privacy
Your continuity stays private to your account, and to your team on Team. This client talks only to the ResumeState API
at the address above. Read the [privacy page](https://resumestate.com/privacy/).
## Licence
MIT. See [LICENSE](LICENSE).
TDQS
Scored across 11 tools
Most tools have distinct roles: replay_search/replay_get and list_artifacts/get_artifact are clean card-then-fetch pairs, and connect vs status are related but distinguishable. However, handoff, log_session, and ingest all read as 'record activity for this account,' and resume's fallback to listing lanes overlaps with list_lanes, creating some boundaries an agent could misjudge.
A clear verb_noun convention exists in list_lanes, list_artifacts, get_artifact, and log_session, but replay_search/replay_get invert it to noun_verb while connect, resume, handoff, ingest, and status are bare verbs/nouns with no shared pattern. The mix is still readable in context but not predictable.
Eleven tools is well within the ideal 3-15 range and each earns its place across connection, continuity, lanes, artifacts, replays, and ingestion. Nothing feels padded or missing at the count level.
The surface covers the continuity lifecycle well: connect/status for auth, resume/handoff for per-lane state, list_lanes for navigation, artifacts and replays for retrieval, and ingest/log_session for recording. Artifacts are read-only with no create/update/delete exposed, and lanes have no management operations, but these are plausible external responsibilities rather than dead ends.