mcpField
➡
➡️ attestable-mcp-server

➡️ attestable-mcp-server

ローカル
kontext.securityセキュリティ2283 週間前に更新

➡️ attestable-mcp-server について

attestable-mcp-server は、信頼された実行環境を通じてクライアントからリモートで検証できる MCP サーバーです。TLS ハンドシェイク時に、実行中のコードが再現可能なビルドと一致することを示す証明書を提示します。接続前にサーバーコードの改ざんがないことを確認したいユーザー向けです。

主な機能

  1. 01TLS ハンドシェイク中の RA-TLS によるリモート証明
  2. 02SGX quote と証拠クレームを埋め込んだ証明書
  3. 03pubkey-hash クレームによる一時公開鍵の紐付け
  4. 04GitHub Actions が生成する署名付きビルド成果物
  5. 05サーバーによるクライアントの任意の証明

活用シーン

  1. 01第三者提供の MCP サーバーが公開コードを実行しているか確認
  2. 02エミュレータや SGX ハードウェア上でローカルに測定値を再現

MCP 対応

MCP サーバーであり、クライアントは接続前に RA-TLS 証明書を検証します。サーバー側も任意でクライアントを証明できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

➡️ attestable-mcp-server

リモートで認証可能な MCP サーバー

概要

このプロジェクトには、MCP クライアントがリモートで認証可能な MCP Server が含まれています。これを実現するために、現在実行中の attestable-mcp-server のコードを表す証明書を生成する、信頼できる実行環境が使用されます。attestable-mcp-server は、接続前の TLS ハンドシェイクでこの証明書を MCP クライアントに送信します。この証明書により、実行中のコードがGitHub Actions でビルドされたコードと同じであることが証明されます。また、エミュレートされたハードウェアまたはセキュアハードウェア上でコードをローカルにビルドして実行することで、独立して検証できます。この場合、値は同じになります。クライアントとサーバー間のリモート認証に使用されるプロトコルは RA-TLS です。これは、MCP クライアントが検証できる、マシンとコード固有の測定値を追加する TLS の拡張です。

この RA-TLS 証明書の最も重要な概念は、標準化された X.509 拡張フィールドに TCG DICE の「tagged evidence」OID を使用して SGX quote を埋め込むことです。そこには SGX レポートと Intel SGX 証明書チェーン全体が埋め込まれています。SGX quote に加えて、証明書には証拠のクレームも含まれます。最も重要なクレームは「pubkey-hash」クレームで、実行中の MCP サーバーのメモリーイメージを扱う TEE が生成した一時公開鍵(DER 形式)のハッシュが含まれています。

機能

  • MCP クライアントは、任意の MCP サーバーで実行中のコードをリモート認証できます
  • MCP サーバーは、必要に応じて MCP クライアントをリモート認証できます
署名済みアーティファクトの生成

このリポジトリの GitHub Actions スクリプトは、信頼できる実行環境(TEE)内のセルフホスト型 GitHub ランナーで実行されます。アクションスクリプトは、attestable-mcp-server を含む Docker コンテナーをビルドし、TEE 内で実行中のコードの署名付き認証を生成します。この Docker イメージには、その後 GitHub によって署名が付与されます。セキュアハードウェアの有無にかかわらず、同じ値を独立して生成でき、稼働中のサーバーに問い合わせて同じ値を取得できます。

依存関係

  • 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 Actions から取得した Intel 署名付き測定値をこの README に追加する

今後の計画

  • JSON Web Key(JWK)認証クレームの検証
cobrowser.xyz

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。