{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_axxyrpfsr7s3","handle":"mcp-persist","url":"https://wellknown.network/agents/mcp-persist","links":{"self":"https://wellknown.network/agents/mcp-persist/record.json","html":"https://wellknown.network/agents/mcp-persist","markdown":"https://wellknown.network/agents/mcp-persist/record.md","api":"https://wellknown.network/api/v1/agents/mcp-persist","status":"https://wellknown.network/api/v1/agents/mcp-persist/status","claim":"https://wellknown.network/agents/mcp-persist/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mcp-persist/claim.json","badge":"https://wellknown.network/agents/mcp-persist/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mcp-persist/history","tools":"https://wellknown.network/api/v1/agents/mcp-persist/tools"},"ard":{"identifier":"urn:air::server:mcp-persist","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp-persist","summary":"Production-grade persistence backends for the MCP Python SDK","description":"# mcp-persist\n\n[![CI](https://github.com/Ar-maan05/mcp-persist/actions/workflows/ci.yml/badge.svg)](https://github.com/Ar-maan05/mcp-persist/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/mcp-persist.svg)](https://pypi.org/project/mcp-persist/)\n[![Downloads](https://static.pepy.tech/badge/mcp-persist)](https://pepy.tech/project/mcp-persist)\n[![Python versions](https://img.shields.io/pypi/pyversions/mcp-persist.svg)](https://pypi.org/project/mcp-persist/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nWhen an MCP client reconnects, the server has to replay the events it missed, and with only the SDK's in-memory `EventStore`, that replay is impossible: the session lived in one process's memory, so a restart or a reconnect to a different worker loses it. **`mcp-persist` adds drop-in durable `EventStore` backends for SQLite, Redis, and PostgreSQL** that survive process restarts and scale across multi-worker deployments, keeping SSE stream resumability intact.\n\n> 📚 This README is the quick tour. Full reference lives in **[`docs/`](#-documentation)**: backends, CLI, the programmatic API, architecture, benchmarks, and the production guide.\n\n> ⚠️ **Requires the MCP Python SDK 2.0 or newer.** The 2.0 release renamed\n> `FastMCP` to `MCPServer`, moved the wire types to the `mcp_types` package, and\n> replaced `httpx` with `httpx2`. Supporting both SDK majors would mean import\n> shims through all of it, so mcp-persist 2.0 and later target 2.x only.\n> **Still on mcp 1.x? Pin `mcp-persist==1.12.2`**, which is feature-identical\n> apart from the fixes in 2.0.0. Stored events are unaffected either way: the\n> on-disk JSON is byte-identical across both SDK majors, so an existing store\n> keeps replaying correctly after you upgrade.\n\n## Quickstart: `with_persistence()`\n\nThe fastest way to add resumability to an MCPServer. Wiring it by hand means\nan event store, a `StreamableHTTPSessionManager`, a Starlette lifespan to open and\nclose t…","publisher":{"name":"Armaan Sandhu","url":null},"homepage":"https://github.com/Ar-maan05/mcp-persist","repository":"https://github.com/Ar-maan05/mcp-persist/blob/main/CHANGELOG.md","version":"2.2.0","license":"MIT","protocols":["mcp"],"tags":["eventstore","mcp","model-context-protocol","redis","resumability","sse"],"pricing":null,"endpoints":[{"url":"pypi:mcp-persist","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"code.documentation","name":"Code Documentation","confidence":0.848,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":0.825,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.791,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.779,"provenance":"derived"},{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":0.768,"provenance":"derived"}],"categories":["code","data","dev"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"mcp-persist","registry":"pypi","observedAt":"2026-11-09T16:26:20.600Z","publishedAt":"2026-10-04T04:16:03.321037Z","latestVersion":"2.2.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"mcp-persist","url":"https://pypi.org/project/mcp-persist/","firstSeenAt":"2026-09-10T02:24:43.902Z","fetchedAt":"2026-11-09T16:25:32.610Z","normalizedAt":"2026-11-09T16:25:32.610Z"}]},"firstSeenAt":"2026-09-10T02:24:43.902Z","updatedAt":"2026-11-09T16:26:20.600Z"}