Skip to main content

Durable Model Context Protocol (MCP) helpers for building resumable MCP servers on top of Reboot durable workflows.

Project description

Reboot Durable MCP

A framework for building durable MCP servers.

  • Takes advantage of the protocols ability to resume after disconnection.

  • Allows for the server itself to be restarted(!) and any existing requests to be retried safely thanks to Reboot workflows.

THIS IS IN PRE-ALPHA STAGE, EXPECT CHANGES, BUG FIXES, ETC; DO NOT RUN IN PRODUCTION!

First grab all dependencies:

uv sync

Activate the venv:

source .venv/bin/activate

Generate code:

rbt generate

Make sure you have Docker running:

docker ps

And run the test(s):

pytest tests

Publishing to PyPI

  1. Tag the release (use semantic versioning):
git tag v0.x.y
  1. Update the version in pyproject.toml to match the tag:
TAG=$(git describe --tags --abbrev=0 | sed 's/^v//')
sed -i "s/^version = \".*\"/version = \"$TAG\"/" pyproject.toml
git add pyproject.toml && git commit -m "chore: set version to $TAG"
  1. Clean old build artifacts:
rm -rf dist build *.egg-info
  1. (Ensure deps) Install build + upload tools (if not already in the env):
uv pip install --upgrade build twine
  1. Build sdist and wheel:
python -m build
  1. Validate artifacts:
twine check dist/*
  1. Upload to PyPI:
twine upload dist/*
  1. Push tag:
git push --follow-tags origin main

Notes:

  • Ensure api/ generated code and reboot/ sources are committed before building.
  • If you add new packages or data files update pyproject.toml [tool.hatch.build.targets.wheel].packages or MANIFEST.in.
  • Type information is included via reboot/py.typed.

Supported client --> server requests:

  • initialize
  • tools/call
  • tools/list
  • prompts/get
  • prompts/list
  • resources/list
  • resources/read
  • resources/templates/list
  • resources/subscribe
  • resources/unsubscribe
  • completion/complete
  • logging/setLevel

Supported client --> server notifications:

  • notifications/initialized
  • notifications/roots/list_changed

Supported client <-- server requests:

  • elicitation/create
  • roots/list
  • sampling/createMessage

Supported client <-- server notifications:

  • notifications/progress
  • notifications/message
  • notifications/prompts/list_changed
  • notifications/resources/list_changed
  • notifications/tools/list_changed
  • notifications/resources/updated

Supported client <--> server notifications:

  • notifications/cancelled

TODO:

  • EventStore support for resumability
  • Docs
  • yapf
  • Push to durable-mcp in pypi.org
  • Pydantic state for each session

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

durable_mcp-0.1.1.tar.gz (10.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

durable_mcp-0.1.1-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file durable_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: durable_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 10.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for durable_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 29529cd97529d9ab7fba536310c124bc2f04305b0bc9f64b41352b817a0a48b1
MD5 9ed3ac069be15b3545a69d396e478d52
BLAKE2b-256 d764e4e872277f7036c70b2fdbfb7add5fcec38df628b1c437baff4a0c90fec0

See more details on using hashes here.

File details

Details for the file durable_mcp-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: durable_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for durable_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eeef26e9f65ad71feb14e46797a727e4df0c408cf4f191c936bccf82116bc2a1
MD5 281e197f3493c62c7e79a828ab2e5e26
BLAKE2b-256 e341ec6f94d493e806e4d02e4f0b82611748b359a87a6c99510347ba8a722c77

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page