Skip to main content

Add your description here

Project description

➡️ attestable-mcp-server

remotely attestable MCP server

Overview

This project contains an MCP Server that is remotely attestable by MCP clients. To achieve this, a trusted execution environment is used, which generates a certificate representing the currently-running code of the attestable-mcp-server. The attestable-mcp-server sends this certificate in the TLS handshake to an MCP client before connecting that proves the code it's running is the same code built on github actions, and can be independently validated by building and running the code locally on emulated hardware or secure hardware; these values will be the same. The protocol used for client <-> server remote attestation is RA-TLS, an extension to TLS that adds machine and code specific measurements that can be verified by an MCP client.

The most important concept behind this RA-TLS certificate is that it embeds an SGX quote in the standardized X.509 extension field with the TCG DICE "tagged evidence" OID, which in turn embeds the SGX report and the complete Intel SGX certificate chain. In addition to the SGX quote, the certificate also contains the evidence claims, with the most important one being the "pubkey-hash" claim that contains the hash of the ephemeral public key (in DER format) generated by the TEE of the memory image of the running MCP server.

Features

  • MCP Clients can remotely attest the code running on any MCP Server
  • MCP Servers can optionally remotely attest MCP Clients

Producing Signed Artifacts

The github action script in this repo runs on a self-hosted github runner inside of a trusted execution environment (TEE). The action script will build a docker container containing the attestable-mcp-server and generate a signed attestation of the code running inside the TEE. This docker image is then signed by github. You can independently generate the same values with or without secure hardware, and query our running server and get the same values.

Dependencies

  • Intel SGX Hardware
  • Gramine
  • python 3.13
  • Ubuntu 22.04
  • Intel SGX SDK & PSW

Quickstart

uv sync
docker build -t attestable-mcp-server .
gramine-sgx-gen-private-key
git clone https://github.com/gramineproject/gsc docker/gsc
cd docker/gsc
uv run ./gsc build-gramine --rm --no-cache -c ../gramine_base.config.yaml gramine_base
uv run ./gsc build -c ../attestable-mcp-server.config.yaml --rm attestable-mcp-server ../attestable-mcp-server.manifest
uv run ./gsc sign-image -c ../attestable-mcp-server.config.yaml  attestable-mcp-server "$HOME"/.config/gramine/enclave-key.pem
uv run ./gsc info-image gsc-attestable-mcp-server

Starting Server on Secure Hardware

docker run -itp --device=/dev/sgx_provision:/dev/sgx/provision  --device=/dev/sgx_enclave:/dev/sgx/enclave -v /var/run/aesmd/aesm.socket:/var/run/aesmd/aesm.socket -p 8000:8000 --rm gsc-attestable-mcp-server

Starting Server on local development machine

docker run -p 8000:8000 --rm gsc-attestable-mcp-server

TODO

  • add MCP client demonstrating ra-tls
  • add intel-signed measurements from our github action to this readme for simple independent verification

Future Plans

  • JSON Web Key (JWK) attestation claim validation

cobrowser.xyz

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

Built Distribution

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

File details

Details for the file iflow_mcp_co_browser_attestable_mcp_server-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_co_browser_attestable_mcp_server-0.1.0.tar.gz
  • Upload date:
  • Size: 32.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_co_browser_attestable_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c31a8bb1eb44c7ae0d1acd51a13748be309a68aaa1dc8881d6baeaa98d336b13
MD5 4fd9889a3191e3b5d9e7842ffbb513db
BLAKE2b-256 d332516fce09e6a1c5172ee7feb93cc09a5962b6b4fbcba3c33df91a44abe395

See more details on using hashes here.

File details

Details for the file iflow_mcp_co_browser_attestable_mcp_server-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_co_browser_attestable_mcp_server-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_co_browser_attestable_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f93a3e4a671d98865b59c246584377231d29c273d538daef0ff89306b20c33f0
MD5 612a4a1e84e4d5c7d0e1b391047c36b7
BLAKE2b-256 b406b486ecb0f13b65fd1dc3db2c3754fddbed0840c7caf3ee2a73296f27348c

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