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 とリモート MCP サーバーには、次の機能とメリットがあります。 Google Cloud

  • 簡素化された一元的な検出。
  • マネージド グローバルまたはリージョン 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 に置き換えます。

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

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

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

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

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

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

    認証と認可

    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 に設定されています。組織のポリシーを使用して、特定の環境で読み取り専用ツールのみを許可することもできます。

    使用可能な 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 をデプロイする場合でも、外部のクラウド プロバイダに 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. Model Armor を MCP サービスのコンテンツ セキュリティ プロバイダとして追加するには、次の 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 に置き換えます。

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

    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 によるアクセス制御をご覧ください。

    次のステップ