可远程验证的MCP服务器

一个使用可信执行环境(TEE)生成证书,允许MCP客户端远程验证服务器运行代码的可验证MCP服务器。

  • by kontext-security
  • Python
  • 本地部署
  • 22 星标
  • 更新于
在 GitHub 查看 co-browser/attestable-mcp-server

使用说明

➡️ 可证明的mcp服务器

可远程认证的MCP服务器

概述

此项目包含 MCP服务器 即 可远程证明 MCP客户。为了实现这一点,使用了一个受信任的执行环境,该环境生成了一个表示可证明mcp服务器当前运行代码的证书。可证明的mcp服务器在连接之前在TLS握手中将此证书发送给mcp客户端,以证明它正在运行的代码是 基于github操作构建的相同代码,并且可以通过在仿真硬件或安全硬件上本地构建和运行代码来独立验证;这些值将是相同的。用于客户端<->服务器远程认证的协议是 RA-TLS,TLS的扩展,添加了可由MCP客户端验证的机器和代码特定测量值。

此RA-TLS证书背后最重要的概念是它嵌入了 SGX报价 在标准化的X.509扩展字段中 TCG DICE“标记证据”OID,进而嵌入SGX报告和完整的Intel SGX证书链。除了SGX引用外,证书还包含证据声明,其中最重要的是“pubkey哈希”声明,其中包含由运行的MCP服务器的内存映像的TEE生成的临时公钥(DER格式)的哈希。

特性

  • MCP客户端可以远程验证在任何MCP服务器上运行的代码
  • MCP服务器可以选择远程验证MCP客户端

制作签名文物

此仓库中的github操作脚本在可信执行环境(TEE)内的自托管github运行器上运行。动作脚本将构建一个包含可证明mcp服务器的docker容器,并生成TEE内运行的代码的签名证明。然后,这个docker镜像由github签名。您可以在有或没有安全硬件的情况下独立生成相同的值,并查询我们正在运行的服务器并获得相同的值。

依赖项

  • 英特尔SGX硬件
  • 禾草碱
  • python 3.13
  • Ubuntu 22.04
  • 英特尔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

全部

  • 添加MCP客户端演示ra tls
  • 从我们的 github操作 为了进行简单的独立验证,请参阅本自述文件

未来计划

  • JSON Web密钥(JWK)证明声明验证

cobrowser.xyz