Docs
Home GitHub npm Subscribe to Pro

SaveState as an MCP Memory Provider

Run SaveState as a Model Context Protocol server. Claude Code, Cursor, Codex, and any MCP-compatible client can read your encrypted memory archive in real time — no manual export, no platform silo.

⚡ SaveState is the only MCP memory provider with end-to-end encryption, cross-platform portability, and an open archive format. Your keys, your data, every client.

Why MCP changes the framing

Most "AI memory" tools today are either platform silos (ChatGPT Memory, Claude Projects) or unencrypted runtime stores (community MCP memory servers). SaveState ships both halves: an encrypted, portable archive and the runtime tools to query it from any client. Snapshot once, recall everywhere.

Quick install (Claude Code)

Add SaveState to ~/.claude/settings.json:

{
  "mcpServers": {
    "savestate": {
      "command": "npx",
      "args": ["-y", "@savestate/cli", "mcp"],
      "env": {
        "SAVESTATE_MCP_PASSPHRASE": "your-passphrase-here"
      }
    }
  }
}

Then restart Claude Code. The new tools (savestate_search_snapshots, savestate_stats, plus the memory + snapshot toolset) are now available to the model.

Cursor

Add to .cursor/mcp.json or ~/.cursor/mcp.json:

{
  "mcpServers": {
    "savestate": {
      "command": "npx",
      "args": ["-y", "@savestate/cli", "mcp"]
    }
  }
}

Codex CLI / OpenAI Codex

codex mcp add savestate -- npx -y @savestate/cli mcp

Tools exposed

ToolWhat it does
savestate_snapshotCreate a new encrypted snapshot of the current AI state. limit is a positive integer up to 1000. offset is a non-negative integer up to 1000.
savestate_restoreRestore a specific snapshot. limit is a positive integer up to 1000. offset is a non-negative integer up to 1000.
savestate_listList available snapshots. limit is a positive integer up to 1000 (default 10). offset is a non-negative integer up to 1000. The optional platform filter is case-insensitive.
savestate_statusCheck SaveState initialization + adapter status. limit is a positive integer up to 1000. offset is a non-negative integer up to 1000.
savestate_search_snapshotsFull-text search across every snapshot — even on a different platform. Search with a word or phrase: exact phrase matches rank highest, while individual terms can still surface partial matches. The killer feature. Optional inclusive since and until ISO-8601 date or timestamp filters narrow which snapshots are searched; date-only bounds include the full UTC day. limit is a positive integer up to 1000 (default 20). offset is a non-negative integer up to 1000. Paginated responses report next and previous offsets, identify the final page, and suggest a nearby offset when an empty page is requested.
savestate_statsAggregate stats: total snapshots, cadence, adapter mix, top tags. limit is a positive integer up to 1000 (most recent snapshots first). offset is a non-negative integer up to 1000.
savestate_memory_store / _search / _deleteLive memory CRUD against the SQLite-backed memory store. savestate_memory_store offset is a non-negative integer up to 1000. savestate_memory_search accepts an optional case-insensitive source metadata filter plus inclusive minImportance, maxImportance, since, and until filters; date-only bounds use the full UTC day. limit is a positive integer up to 1000 (default 10), and offset is a non-negative integer up to 1000; search responses report the filtered total, remaining rows, and next offset when another page exists, or the total and a recovery offset when a page is empty. savestate_memory_delete offset is a non-negative integer up to 1000.
add_memories / search_memory / list_memories / delete_memory / delete_all_memoriesOpenMemory-compatible API surface, drop-in for any client expecting the OpenMemory protocol. add_memories limit is a positive integer up to 1000. add_memories offset is a non-negative integer up to 1000. search_memory accepts an optional case-insensitive source metadata filter, plus inclusive minImportance and maxImportance filters from 0 through 1. search_memory also accepts inclusive since and until ISO-8601 creation bounds; date-only bounds use the full UTC day. search_memory limit is a positive integer up to 1000 (default 10). search_memory offset is a non-negative integer up to 1000; search responses report the filtered total, remaining rows, and next offset when another page exists, or the total and a recovery offset when a page is empty. list_memories accepts a non-empty search substring matched against content and tags, plus inclusive since and until ISO-8601 creation bounds; date-only bounds use the full UTC day. list_memories limit is a positive integer up to 1000 (default 50), matching the MCP tool description. list_memories offset is a non-negative integer up to 1000. Its response summary reports the starting offset, a previous offset on later pages, and the next offset when another page exists; an exhausted page reports active filters and a suggested offset for the nearest page to retry. delete_memory limit is a positive integer up to 1000. delete_memory offset is a non-negative integer up to 1000. delete_all_memories limit is a positive integer up to 1000. delete_all_memories offset is a non-negative integer up to 1000.

Resources

Clients can detect failures reliably: unknown tool calls include isError: true, and resource-read failures are returned as MCP protocol errors instead of successful JSON payloads that merely contain an error field.

Passphrase handling

The MCP server can run with or without encryption. If SAVESTATE_MCP_PASSPHRASE is set, the SQLite-backed memory store encrypts content; cross-snapshot search tools always require a passphrase per-call so the user keeps control. Pass the passphrase via the passphrase argument when invoking savestate_search_snapshots or savestate_snapshot.

🔒 Passphrases never leave the local process. SaveState derives keys with scrypt, encrypts with AES-256-GCM, and never sends plaintext to the cloud or to any MCP client.

Why SaveState specifically?

Subscribe

Pro is $9/month. Encrypted portable memory, including MCP search from every client. Card today. No waitlist.

Subscribe to Pro — $9/mo Team is $29/month

After you pay, your API key is emailed. Then savestate login. Card today — no waitlist.

Next steps