关于 ➡️ attestable-mcp-server
attestable-mcp-server 是一个可远程验证的 MCP 服务,利用可信执行环境(TEE)在 TLS 握手阶段向客户端出示证明其运行代码的证书。适合需要确认服务端代码未被篡改的场景。
主要功能
- 01基于 RA-TLS 的远程证明
- 02证书嵌入 SGX quote 与证据声明
- 03pubkey-hash 声明绑定运行中的公钥
- 04通过 GitHub Actions 生成签名构建产物
- 05可选对 MCP 客户端进行远程证明
适用场景
- 01验证第三方 MCP 服务运行的代码是否与公开构建一致
- 02在 SGX 硬件或模拟环境中独立复现并比对度量值
MCP 相关
该项目是一个 MCP 服务,客户端在建立连接前通过 RA-TLS 证书验证服务端代码,服务端也可选择验证客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
➡️ attestable-mcp-server
可远程证明的 MCP 服务
概述
本项目包含一个 MCP 服务,MCP 客户端可以对其进行远程证明。为此,项目使用可信执行环境来生成证书,表明 attestable-mcp-server 当前运行的代码。attestable-mcp-server 会在连接 MCP 客户端之前,于 TLS 握手中发送该证书,证明其运行的代码与 在 github actions 上构建的代码相同,而且可以通过在模拟硬件或安全硬件上本地构建并运行代码来独立验证;这些值应当相同。客户端与服务之间远程证明所用的协议是 RA-TLS,这是 TLS 的扩展,可添加特定于机器和代码的度量值,供 MCP 客户端验证。
此 RA-TLS 证书背后最重要的概念,是它在标准化的 X.509 扩展字段中嵌入了 SGX 引用值,并使用了 TCG DICE“带标签的证据”OID;该引用值又嵌入了 SGX 报告和完整的 Intel SGX 证书链。除了 SGX 引用值,证书还包含证据声明,其中最重要的是“pubkey-hash”声明,它包含由 TEE 根据正在运行的 MCP 服务内存映像生成的临时公钥的哈希值(DER 格式)。
功能
- MCP 客户端可以远程证明任何 MCP 服务上运行的代码
- MCP 服务也可以选择对 MCP 客户端进行远程证明
生成签名制品
此仓库中的 github action 脚本运行在可信执行环境(TEE)内的自托管 github runner 上。该脚本会构建一个包含 attestable-mcp-server 的 docker 容器,并为 TEE 内运行的代码生成签名证明。随后,github 会对该 docker 镜像进行签名。无论是否使用安全硬件,你都可以独立生成相同的值,并查询我们正在运行的服务,获取相同的值。
依赖项
- Intel SGX 硬件
- Gramine
- python 3.13
- Ubuntu 22.04
- Intel SGX SDK & PSW
快速入门
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
在安全硬件上启动服务
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
在本地开发机器上启动服务
docker run -p 8000:8000 --rm gsc-attestable-mcp-server
TODO
- 添加一个展示 ra-tls 的 MCP 客户端
- 将我们 github action 的 Intel 签名度量值添加到此 readme 中,以便轻松进行独立验证
未来计划
- 验证 JSON Web Key(JWK)证明声明
cobrowser.xyz
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。