GKE リモート MCP サーバーを使用する

Model Context Protocol(MCP)により、大規模言語モデル(LLM)と AI アプリケーション(エージェント)が外部のデータソースに接続する方法が標準化されます。MCP サーバーを使用すると、そのツール、リソース、プロンプトを使用してアクションを実行し、バックエンド サービスから更新されたデータを取得できます。

ローカル MCP サーバーは通常、ローカルマシンで実行され、同じデバイス上のサービス間の通信に標準の入力ストリームと出力ストリーム(stdio)を使用します。リモート MCP サーバーはサービスのインフラストラクチャで実行され、AI アプリケーションに HTTP エンドポイントを提供して、AI MCP クライアントと MCP サーバー間の通信を行います。MCP アーキテクチャの詳細については、MCP アーキテクチャをご覧ください。

このドキュメントでは、GKE リモート Model Context Protocol(MCP)サーバーを使用して、Gemini CLI、Gemini Code Assist のエージェント モード、Claude Code などの AI アプリケーション、または開発中の AI アプリケーションから GKE に接続する方法について説明します。

GKE ローカル MCP サーバーについては、GitHub の GKE MCP サーバーをご覧ください。

Google と Google Cloud リモート MCP サーバーには、次の機能とメリットがあります。

  • 簡素化された一元的な検出。
  • マネージド グローバルまたはリージョン HTTP エンドポイント。
  • きめ細かい認可。
  • Model Armor 保護によるプロンプトとレスポンスのセキュリティ(オプション)。
  • 一元的な監査ロギング。

他の MCP サーバーと、Google Cloud MCP サーバーで使用可能なセキュリティとガバナンスの制御については、Google Cloud MCP サーバーの概要をご覧ください。

GKE ローカル MCP サーバーを使用する理由としては、次のようなものがあります。

  • ローカルで開発とテストを行う
  • オフラインでの MCP の使用
  • クラスタとワークロードの作成(AI/ML ワークロードのマニフェスト生成を含む)
  • ローカル クライアント構成(kubeconfig を使用)
  • クエリログ
  • GKE 環境の費用とセキュリティに関する推奨事項を取得する

ローカル MCP サーバーの使用方法については、GKE MCP サーバーをご覧ください。次のセクションは、GKE リモート MCP サーバーにのみ適用されます。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable container.googleapis.com
  8. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/container.clusterViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: Your project ID.
    • USER_IDENTIFIER: The identifier for your user account. For example, myemail@example.com.
    • ROLE: The IAM role that you grant to your user account.
  9. Install the Google Cloud CLI.

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. Verify that billing is enabled for your Google Cloud project.

  14. Enable the Kubernetes Engine API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable container.googleapis.com
  15. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/container.clusterViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: Your project ID.
    • USER_IDENTIFIER: The identifier for your user account. For example, myemail@example.com.
    • ROLE: The IAM role that you grant to your user account.
  16. 必要なロール

    GKE リモート MCP サーバーを有効にする 1 回限りの設定を行うには、管理者に次のロールが必要です。

    • 組織ポリシー管理者roles/orgpolicy.policyAdmin): Google Cloud 組織にこのロールを付与すると、カスタム組織ポリシーの作成が許可されます。
    • Service Usage 管理者roles/serviceusage.serviceUsageAdmin): このロールを Google Cloud プロジェクトに付与して、リモート MCP サービス エンドポイントを有効にできるようにします。このロールには、serviceusage.mcppolicy.get 権限と serviceusage.mcppolicy.update 権限が含まれています。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    サービスを使用するためのロール

    リモート MCP サーバーツールを呼び出すプリンシパルには、GKE リソースにアクセスする権限が必要です。このプリンシパルは、ユーザーまたは自動サービス アカウントにできます。少なくとも、Google Cloud プロジェクトに次のロールを付与します。

    • MCP ツールユーザーroles/mcp.toolUser): MCP サーバー エンドポイントへのツール呼び出しを行う権限を付与します。
    • Kubernetes Engine クラスタ閲覧者roles/container.clusterViewer): このロールは、リモート サーバーのツールに必要な読み取り専用アクセス権を提供します。

    このロールを付与する対象:

    • Gemini CLI などのクライアントを介して MCP サーバーを操作するユーザーのユーザー アカウント
    • MCP サーバーを呼び出す自律型エージェントまたはアプリケーションを構築する場合のサービス アカウント

    GKE リモート MCP サーバーを有効または無効にする

    プロジェクトで GKE リモート MCP サーバーを有効または無効にするには、gcloud beta services mcp enable コマンドを使用します。詳しくは、以下のセクションをご覧ください。

    プロジェクトで GKE リモート MCP サーバーを有効にする

    サービス アカウント キー、OAuth クライアント ID、API キーなどのクライアント認証情報と、リソースのホスティングに異なるプロジェクトを使用している場合は、両方のプロジェクトで GKE サービスと GKE リモート MCP サーバーを有効にする必要があります。

    Google Cloud プロジェクトで GKE リモート MCP サーバーを有効にするには、次のコマンドを実行します。

    gcloud beta services mcp enable container.googleapis.com \
        --project=PROJECT_ID
    

    PROJECT_ID は、 Google Cloud プロジェクト ID に置き換えます。

    Google Cloud プロジェクトで使用できるように GKE リモート MCP サーバーが有効になっています。Google Cloud プロジェクトで GKE サービスが有効になっていない場合は、GKE リモート MCP サーバーを有効にする前に、このサービスを有効にするよう求められます。

    セキュリティのベスト プラクティスとして、AI アプリケーションの機能に必要なサービスに対してのみ MCP サーバーを有効にすることをおすすめします。

    プロジェクトで GKE リモート MCP サーバーを無効にする

    Google Cloud プロジェクトで GKE リモート MCP サーバーを無効にするには、次のコマンドを実行します。

    gcloud beta services mcp disable SERVICE \
        --project=PROJECT_ID
    

    Google Cloud プロジェクトでの GKE リモート MCP サーバーの使用が無効になっています。

    認証と認可

    GKE リモート MCP サーバーは、認証と認可に Identity and Access Management(IAM)OAuth 2.0 プロトコルを使用します。MCP サーバーへの認証では、すべての Google Cloud ID がサポートされています。

    GKE リモート MCP サーバーは、認証に API キーを使用できません。

    リソースへのアクセスを制御してモニタリングできるように、MCP ツールを使用してエージェント用に別個の ID を作成することをおすすめします。認証の詳細については、MCP サーバーに対して認証するをご覧ください。

    GKE リモート MCP の OAuth スコープ

    OAuth 2.0 では、スコープと認証情報を使用して、認証されたプリンシパルがリソースに対して特定のアクションを実行する権限があるかどうかを判断します。Google の OAuth 2.0 スコープの詳細については、OAuth 2.0 を使用して Google API にアクセスするをご覧ください。

    GKE には、次の MCP ツール OAuth スコープがあります。

    gcloud CLI のスコープの URI 説明
    https://www.googleapis.com/auth/cloud-platform Google Cloud プロジェクトに対する広範な読み取り専用アクセス権を付与します。

    ツール呼び出し中にアクセスされるリソースに追加のスコープが必要になる場合があります。GKE に必要なスコープの一覧を表示するには、GKE API をご覧ください。

    GKE MCP サーバーを使用するように MCP クライアントを構成する

    Claude や Gemini CLI などのホスト プログラムは、単一の MCP サーバーに接続する MCP クライアントをインスタンス化できます。ホスト プログラムには、さまざまな MCP サーバーに接続する複数のクライアントを設定できます。リモート MCP サーバーに接続するには、MCP クライアントが少なくともリモート MCP サーバーの URL を認識している必要があります。

    ホストで、リモート MCP サーバーに接続する方法を探します。サーバー名や URL などのサーバーの詳細情報を入力するよう求められます。

    GKE リモート MCP サーバーの場合は、必要に応じて次の情報を入力します。

    • サーバー名: GKE リモート MCP サーバー
    • サーバー URL またはエンドポイント: https://container.googleapis.com/mcp
    • トランスポート: HTTP
    • 認証の詳細: 認証方法に応じて、 Google Cloud 認証情報、OAuth クライアント ID とシークレット、またはエージェントの ID と認証情報を入力できます。認証の詳細については、MCP サーバーに対して認証するをご覧ください。

    ホスト固有のガイダンスについては、以下をご覧ください。

    一般的なガイダンスについては、リモート MCP サーバーに接続するをご覧ください。

    使用可能なツール

    読み取り専用の MCP ツールでは、MCP 属性 mcp.tool.isReadOnlytrue に設定されています。組織のポリシーを使用して、特定の環境で読み取り専用ツールのみを許可することがあります。

    GKE MCP サーバーで使用可能な MCP ツールの詳細とその説明を表示するには、GKE MCP リファレンスをご覧ください。

    ツールの一覧表示

    MCP インスペクタを使用してツールを一覧表示するか、tools/list HTTP リクエストを GKE リモート MCP サーバーに直接送信します。tools/list メソッド: 認証を必要としません。

    POST /mcp HTTP/1.1
    Host: container.googleapis.com
    Content-Type: application/json
    
    {
      "jsonrpc": "2.0",
      "method": "tools/list",
    }
    

    サンプルのユースケース

    GKE リモート MCP サーバーのユースケースの例を次に示します。

    • GKE クラスタとノードプールの構成とステータスを検査します。たとえば、「production-cluster の詳細を表示して、すべてのノードプールを一覧表示して」というプロンプトを使用します。
    • kubectl を使用せずに、クラスタ内の Kubernetes リソース構成とコンテナログを表示します。たとえば、「default」名前空間の「frontend-deployment」の YAML を取得します。
    • クラスタのアップグレードなど、長時間実行される GKE オペレーションのステータスをモニタリングします。たとえば、「過去 1 時間のプロジェクト内のすべての GKE オペレーションを一覧表示して」というプロンプトを使用します。

    セキュリティと安全に関するオプションの構成

    MCP ツールで実行できるアクションが多岐にわたるため、MCP によって新たなセキュリティ リスクと考慮事項が加わります。これらのリスクを最小限に抑えて管理するために、Google Cloud は、 Google Cloud組織またはプロジェクトでの MCP ツールの使用を制御するデフォルトのポリシーとカスタマイズ可能なポリシーを提供します。

    MCP のセキュリティとガバナンスの詳細については、AI のセキュリティと安全性をご覧ください。

    Model Armor

    Model Armor は、AI アプリケーションのセキュリティと安全性を強化するために設計されたGoogle Cloud サービスです。LLM のプロンプトとレスポンスを事前にスクリーニングすることで、さまざまなリスクから保護し、責任ある AI への取り組みをサポートします。AI を自社のクラウド環境と外部のクラウド プロバイダのいずれにデプロイする場合も、Model Armor は、悪意のある入力の防止、コンテンツの安全性の検証、機密データの保護、コンプライアンスの維持、多様な AI 環境全体での AI の安全性とセキュリティ ポリシーの一貫した適用に役立ちます。

    Model Armor は、特定のリージョンのロケーションでのみ使用できます。プロジェクトで Model Armor が有効化されており、サポート対象外のリージョンからそのプロジェクトへの呼び出しが行われた場合、Model Armor はリージョン間の呼び出しを行います。詳細については、Model Armor のロケーションをご覧ください。

    Model Armor を有効にする

    Model Armor を有効にする手順は、次のとおりです。

    1. Google Cloud プロジェクトで Model Armor を有効にするには、次の gcloud CLI コマンドを実行します。

      gcloud services enable modelarmor.googleapis.com \
          --project=PROJECT_ID
      

      PROJECT_ID は、実際のGoogle Cloud プロジェクト ID に置き換えます。

    2. 推奨される Model Armor のフロア設定を構成するには、次の gcloud CLI コマンドを実行します。

      gcloud model-armor floorsettings update \
          --full-uri='projects/PROJECT_ID/locations/global/floorSetting' \
          --mcp-sanitization=ENABLED \
          --malicious-uri-filter-settings-enforcement=ENABLED
      

      PROJECT_ID は、実際のGoogle Cloud プロジェクト ID に置き換えます。

      Model Armor は、悪意のある URL の試行をスキャンするように構成されています。

      構成可能な Model Armor フィルタの詳細については、Model Armor フィルタをご覧ください。

    3. MCP サービスのコンテンツ セキュリティ プロバイダとして Model Armor を追加するには、次の gcloud CLI コマンドを実行します。

      gcloud beta services mcp content-security add modelarmor.googleapis.com \
          --project=PROJECT_ID
      

      PROJECT_ID は、Google Cloud プロジェクト ID に置き換えます。

    4. MCP トラフィックが Model Armor に送信されていることを確認するには、次のコマンドを実行します。

      gcloud beta services mcp content-security get \
          --project=PROJECT_ID
      

      PROJECT_ID は、Google Cloud プロジェクト ID に置き換えます。

    Model Armor のロギング

    Model Armor の監査ログとプラットフォーム ログについては、Model Armor の監査ロギングをご覧ください。

    プロジェクトで Model Armor を無効にする

    Google Cloud プロジェクトで Model Armor を無効にするには、次のコマンドを実行します。

    gcloud beta services mcp content-security remove modelarmor.googleapis.com \
        --project=PROJECT_ID
    

    PROJECT_ID は、Google Cloud プロジェクト ID に置き換えます。

    指定されたプロジェクトでは、Model Armor による Google Cloud の MCP トラフィックのスキャンは行われません。

    Model Armor による MCP トラフィックのスキャンを無効にする

    プロジェクトで Model Armor を引き続き使用するものの、Model Armor による MCP トラフィックのスキャンを停止する場合は、次のコマンドを実行します。

    gcloud model-armor floorsettings update \
      --full-uri='projects/PROJECT_ID/locations/global/floorSetting' \
      --mcp-sanitization=DISABLED
    

    PROJECT_ID は、Google Cloud プロジェクト ID に置き換えます。

    Model Armor はGoogle Cloudで MCP トラフィックをスキャンしません。

    組織レベルの MCP 制御

    gcp.managed.allowedMCPService 制約を使用して、 Google Cloud 組織での MCP サーバーの使用を制御するカスタムの組織のポリシーを作成できます。詳細と使用例については、Google Cloud MCP サーバーの IAM によるアクセス制御をご覧ください。

    次のステップ