本项目提供一个可被MCP客户端远程验证的MCP服务器,借助受信任执行环境生成证书,确保服务器运行的是指定代码,保障代码运行的安全性和可验证性。
MCP服务器启动命令如下:
go run main.go --listen :8080
使用 Docker 构建并运行:
docker build -t mcp-server .
docker run -p 8080:8080 mcp-server
本项目的运行依赖以下环境:
此项目包含一个 MCP 服务器,该服务器可以被 MCP 客户端 远程验证。为了实现这一点,使用了受信任的执行环境 (TEE),该环境会生成一个证书,表示当前正在运行的代码。这个证书会在 TLS 握手过程中发送给 MCP 客户端,并证明该服务器运行的是 GitHub Actions 上构建的相同代码。通过在安全硬件或受信任环境中独立构建和运行代码,可以验证这些值是否一致。
用于客户端与服务器之间远程验证的协议是 RA-TLS,这是 TLS 的一个扩展,添加了机器和代码特定的测量值,这些测量值可以通过 MCP 客户端进行独立验证。
实现远程验证的关键证书特性在于,它嵌入了一个 SGX 报告 到标准的 X.509 扩展字段中,并使用了 TCG DICE "标记证据" OID 进行编码。这些 SGX 报告和完整的 Intel SGX 证书链都会被包含在内。除了 SGX 报告之外,证书还包含证据声明,其中最重要的一个声明是 "pubkey-hash",它包含了受信任执行环境生成的内存镜像中运行的 MCP 服务器的临时公钥 (DER 格式) 的哈希值。
此仓库中的 GitHub 操作脚本在一个自托管的 GitHub 运行器上执行,该运行器位于受信任的执行环境中 (TEE)。该操作会构建一个 Docker 容器,其中包含可验证的MCP服务器,并生成该容器在 TEE 中运行代码的签名证明。此 Docker 镜像由 GitHub 签名。您可以在有或没有安全硬件的情况下独立生成相同的值,并通过查询正在运行的服务器来获取相同值。
main.go
: MCP 服务器的主要实现。cmd/
: 包含与 MCP 相关的命令行工具。examples/
: 展示如何使用 MCP 的示例代码。internal/
: 包含内部库和模块。使用 GitHub Issues 提交问题。
本项目采用 Apache License 2.0 许可协议。
此项目由 @co_browser 开发。