Trusted GMail MCP Server について
Trusted GMail MCP Serverは、AWS Nitro Enclave内で動作するリモートGmail MCPサーバーです。MCPクライアントからGmailを利用でき、コードアテステーションの検証手順もあります。アプリ専用パスワードをURLで渡すリスクについても説明しています。
主な機能
- 01AWS Nitro Enclave内で稼働
- 02SSEによるリモート接続
- 03コードアテステーションの検証手順
- 04TEEへのセルフホスト手順
活用シーン
- 01MCPクライアントからGmailに接続
- 02実行コードのアテステーション情報を確認
- 03AWS Nitro環境にサーバーをデプロイ
MCP 対応
SSEを使うリモートMCPサーバーで、クライアントはURLを設定して接続します。アプリ専用パスワードが必要で、URLに含めることのリスクが説明されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Trusted GMail MCP サーバー
これは、セキュアな AWS Nitro エンクレーブインスタンス内で動作する Gmail MCP サーバーです。もともとは Claude Post MCP サーバーからフォークされました。ほとんどの MCP サーバーは stdio トランスポートを介してローカルで実行されますが、こちらのガイドに従い、sse トランスポートを使用するリモート MCP サーバーを実装しました。
MCP サーバーへの接続
この MCP サーバーを使用するには、アプリパスワードが必要です。
以下のブロックをクライアントの mcp.json ファイルに追加するだけです。
"gmail_mcp": {
"url": "https://gmail.mcp.freysa.ai/sse/?ADDR=<[email protected]>&ASP=<your app-specific password>"
}
クライアントの再起動が必要な場合があります。
セキュリティに関する注意
この実装は概念実証です。アプリパスワードを URL に含めるのは安全な方法ではありません。理由は次のとおりです。
- URL はプロキシ、ブラウザー、サーバーによってログに記録される可能性があります
- URL がブラウザーの履歴に残る可能性があります
- URL が Referer ヘッダーを通じてサードパーティーのサイトに漏洩する可能性があります
残念ながら、現在の MCP クライアントには、サーバーへの接続方法に制限があります。リリース時点では、MCP 仕様に SSE サーバー向けの標準的な認証メカニズムが定義されていません。そのため、通常は優先されるベアラートークンやその他の認証ヘッダーなど、より安全な方法を使用できません。
セキュリティをさらに高めるには、次の方法をご検討ください。
- この目的専用のアプリパスワードを使用する
- セキュアな VPN またはプライベートネットワーク経由でアクセスする
- 提供されている手順に従って、ご自身のインスタンスを実行する
概要
AWS Nitro Enclaves は、ハードウェアベースのアテステーションによってセキュリティを強化する、分離されたコンピューティング環境を提供します。Nitro Enclave 内でコードを実行すると、プラットフォームはコードの識別情報と状態を示す暗号学的な測定値を生成します。この測定値は、コードが改変されておらず、意図したとおりに正確に実行されていることを検証可能な形で保証し、改ざんや不正な変更から保護します。詳しくは、こちらのブログ記事をご覧ください。
AWS Nitro TEE でコードをすばやくデプロイするために、Nitridingを使用しています。
コードアテステーションの検証
意図したコードベースが TEE 内で実行されていることを検証するには、ご自身で AWS Nitro エンクレーブ内で実行して再現する必要があります。手順は以下のとおりです。実行できたら、このリポジトリを使って次のように検証できます。
- まず、コードをビルドします。
cd verifier
pnpm install && pnpm run build
- 次に、検証ツールをローカルで実行します。
cd mcp/react-ts-webpack
pnpm i && pnpm run dev
- 次に、ブラウザーで
http://localhost:8080/を開きます。2 つのフィールドの入力を求められます
(a) PCR2 ハッシュ。コードベースのハッシュです
(b) コードアテステーション。AWS によって署名されています
- 「Verify Attestation」ボタンをクリックします
TEE で独自のインスタンスを実行する
次の手順で、このサーバーを TEE 内で実行して再現できます。
-
AWS EC2 コンソールで十分な大きさのインスタンスを選択し、Nitro が有効になっていることを確認します。
-
EC2 コンソールでインスタンスの「security」タブを開き、セキュリティグループを確認して、アプリケーションに必要なポートが開いていることを確認します。
-
このリポジトリを EC2 インスタンスにクローンします。
-
セットアップスクリプトを実行して、必要な依存関係をすべてダウンロードします。
sudo /setup.sh
- 必要に応じて、エンクレーブに割り当てるメモリを増やします。
sudo nano /etc/nitro_enclaves/allocator.yaml
sudo systemctl restart nitro-enclaves-allocator.service
- エンクレーブを実行します。
make
- 本番モードで実行します。
make run
MCP サーバーを使用する
MCP サーバーを実際に使用するには、次のように gvproxy も実行する必要があります。
screen
./gvproxy.sh
次に、curl でヘルスチェックエンドポイントを呼び出し、MCP サーバーがエンクレーブ内で実行されていることを確認できます。
curl http://127.0.0.1:7047/
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。