MCP サーバーを認証する

エージェントが Cloud Run でホストされている MCP サーバーまたはツールに接続する必要がある場合は、組み込みの Identity and Access Management と Identity-Aware Proxy(IAP)を使用して接続を保護できます。

Cloud Run で実行されているエージェントを Cloud Run の MCP サーバーに接続する場合は、run.invoker ポリシーの手順について、AI エージェントを認証するをご覧ください。

デベロッパー CLI ツールとクライアントから MCP サーバーへ

デベロッパー ツール、ローカル SDK、汎用 MCP クライアントを Cloud Run でホストされているプライベート MCP サーバーに安全に接続するには、Identity-Aware Proxy を構成することを強くおすすめします。

IAP を有効にする

デプロイされた Cloud Run MCP サービスで IAP を有効にします。

gcloud run services update MCP_SERVICE_NAME \
    --iap \
    --region=REGION

次のように置き換えます。

  • MCP_SERVICE_NAME: MCP サーバー サービスの名前。
  • REGION: サービスがデプロイされているリージョン。

MCP サーバーへのアクセス権を付与する

呼び出し元エージェントの ID またはデベロッパーのユーザー ID をバックエンド サービスの IAP 呼び出し元ロールにバインドします。

gcloud iap web add-iam-policy-binding \
    --resource-type=cloud-run \
    --service=MCP_SERVICE_NAME \
    --member="PRINCIPAL" \
    --role="roles/iap.httpsResourceAccessor" \
    --region=REGION

次のように置き換えます。

  • MCP_SERVICE_NAME: MCP サーバー サービスの名前。
  • PRINCIPAL: プリンシパルまたはメンバーの識別子。通常、PRINCIPAL:ID の形式です(たとえば、user:my-user@example.com)。PRINCIPAL に使用できる値の一覧については、ポリシー バインディングのリファレンスをご覧ください。
  • REGION: サービスがデプロイされているリージョン。

IAP を使用してアクセスを構成する

デフォルトでは、IAP はブラウザベースのユーザー ログインのみをサポートする Google 管理の OAuth クライアントを使用します。CLI ツールとエージェントが MCP サーバーにプログラムでアクセスできるようにするには、カスタム OAuth クライアント ID を構成する必要があります。

  1. Google Cloud コンソールの [API とサービス > 認証情報] で OAuth クライアントを作成します。クライアント IDクライアント シークレットをメモします。
    • Antigravity CLI などのローカル デベロッパー ツール用に構成する場合は、許可リストに登録されたリダイレクト URL に http://localhost:7777/oauth/callback を追加します。
  2. OAuth クライアントを共有するのガイドに沿って、IAP 設定でプログラムによるアクセスのための許可リストに OAuth クライアントを追加します。

接続するためのクライアント設定を更新する

プログラムによるアクセスを設定したら、接続の詳細とカスタム OAuth クライアント ID の認証情報を指定するようにクライアント構成を更新します。

たとえば、保護された MCP サーバーに接続するように Antigravity CLI などのツールを構成するには、設定の mcpServers ブロックを更新します。

{
  "mcpServers": {
    "my-mcp-server": {
      "httpUrl": "https://my-mcp-server-<PROJECT_NUMBER>.<REGION>.run.app",
      "oauth": {
        "enabled": "true",
        "clientId": "YOUR_CUSTOM_OAUTH_CLIENT_ID",
        "clientSecret": "YOUR_CLIENT_SECRET",
        "scopes": [
          "email",
          "openid"
        ],
        "redirectUri": "http://localhost:7777/oauth/callback"
      }
    }
  }
}