<strong>远程可验证的MCP服务器</strong>
</div>该项目包含一个MCP服务器,该服务器可以通过MCP客户端进行远程验证。为了实现这一点,使用了一个可信执行环境,生成一个证书来表示当前运行的attestable-mcp-server代码。在TLS握手过程中,attestable-mcp-server会向MCP客户端发送这个证书,在连接之前证明其运行的代码是与github actions上构建的相同代码,并且可以在本地通过模拟硬件或安全硬件构建和运行代码进行独立验证;这些值将是相同的。客户端和服务器之间的远程验证使用的协议是RA-TLS,它是TLS的一个扩展,增加了可以由MCP客户端验证的机器和代码特定测量值。
RA-TLS证书背后最重要的概念是它在标准化的X.509扩展字段中嵌入了SGX报价,并使用了TCG DICE“标记证据”OID,这反过来又嵌入了SGX报告和完整的Intel SGX证书链。除了SGX报价之外,证书还包含了证据声明,其中最重要的是“pubkey-hash”声明,它包含了由内存映像运行的MCP服务器的TEE生成的临时公钥(DER格式)的哈希值。
<strong>特性</strong>
此仓库中的github操作脚本在一个可信执行环境中(TEE)内的自托管github运行器上运行。操作脚本将构建一个包含attestable-mcp-server的Docker容器,并生成TEE内运行代码的签名验证。然后,此Docker镜像由github签名。您可以独立生成相同的值,无论是否使用安全硬件,并查询我们的运行服务器以获得相同的值。
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-m- cp-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