MCP Reference: cloudcli.googleapis.com

Cloud CLI MCP サーバーは、リモート サンドボックス環境で Cloud CLI コマンドを実行するためのツールを提供します。

Model Context Protocol(MCP)サーバーは、大規模言語モデル(LLM)または AI アプリケーションにコンテキスト、データ、機能を提供する外部サービスとの間のプロキシとして機能します。MCP サーバーは、AI アプリケーションをデータベースやウェブサービスなどの外部システムに接続し、そのレスポンスを AI アプリケーションが理解できる形式に変換します。

サーバーのセットアップ

使用する前に、MCP サーバーを有効にして、認証を設定する必要があります。Google と Google Cloud のリモート MCP サーバーの使用方法については、Google Cloud MCP サーバーの概要をご覧ください。

サーバー エンドポイント

MCP サービス エンドポイントは、安全で標準化された接続を確立するために AI アプリケーション(MCP クライアントのホスト)が使用する MCP サーバーのネットワーク アドレスと通信インターフェース(通常は URL)です。これは、LLM がコンテキストをリクエストしたり、ツールを呼び出したり、リソースにアクセスしたりするための接続ポイントとなります。Google MCP エンドポイントをグローバルまたはリージョンにすることができます。

Cloud CLI Execution API MCP サーバーには、次のグローバル MCP エンドポイントがあります。

  • https://cloudcli.googleapis.com/mcp

MCP ツール

MCP ツールは、現実世界でアクションを実行する目的で MCP サーバーが LLM または AI アプリケーションに対して公開する関数または実行可能な機能です。

ツール

cloudcli.googleapis.com MCP サーバーには、次のツールがあります。

MCP ツール
run_gcloud_command

ユーザーの Google Cloud プロジェクト内で単一の gcloud CLI コマンドを実行します。

重大な安全上の警告(破壊的な可能性あり): このツールは、GCP リソースの作成、更新、削除を行うことができます(例: gcloud compute instances delete)。読み取り専用コマンドに限定されません。十分にご注意ください。

禁止されているコマンド: エージェントは、次の gcloud コマンド(アルファ版/ベータ版を含む)を実行してはなりません: app deployapp instances sshauthbillingcomponentsconfigdockerfeedbackinfoinitmetasurvey

厳格な実行ルール:

  1. このツールを使用する場合は、必ず「project」パラメータ(project="projects/PROJECT_ID" など)を指定してください(Cloud CLI Execution API の有効化チェック、課金、割り当てなどに使用されます)。これは、gcloud が動作するプロジェクトを指定するために使用される gcloud コマンドの --project フラグと同じではありません。
  2. フラグの形式: すべての長いオプションで、フラグキーとその値を区切るために常に「=」記号を使用しなければなりません。正しい値: --zone=us-central1-a または --project=my-project。不正解: --zone us-central1-a または --project my-project
  3. 課金プロジェクト: 実行環境で事前構成されたプロジェクトや課金設定を想定することはできません。プロジェクト以外のスコープのコマンド(フォルダレベルや組織レベルなど)や、Cloud Storage Requester Pays などの特定のシナリオでは、--billing-project=PROJECT フラグを渡す必要があります。プロジェクト スコープのコマンドでは、--billing-project=PROJECT を指定して割り当てプロジェクトをオーバーライドすることもできます。これは、リソース プロジェクトのオーバーライドをサポートしていない GCP API に有効になります。
  4. プロジェクト スコープ: プロジェクト スコープのコマンドには、常に --project=PROJECT_ID フラグを渡すべきです。組織レベルまたはフォルダレベルのコマンドには使用しないでください。プロジェクト スコープのコマンドに --project flag を指定しない場合、リソース プロジェクトは --billing-project フラグで設定されたプロジェクトにデフォルト設定されます。
  5. gcloud コマンドで --billing-project フラグを指定する場合は、値がプロジェクト ID またはプロジェクト番号であることを確認してください。値は特殊な値(LEGACY、CURRENT_PROJECT、CURRENT_PROJECT_WITH_FALLBACK など)であってはなりません。
  6. コマンド文字列で --project または --billing-project の少なくとも 1 つを指定しなければなりません。
  7. 非同期オペレーション: 長時間実行される同期オペレーション(VM やデータベースの作成など)では、エージェントのタイムアウトを防ぐために、常に --async フラグを渡すべきです。
  8. ログのレート制限: gcloud logging read を使用する場合は、認証情報と接続のタイムアウトを防ぐために、常に --limit フラグ(--limit=100 など)を含める必要があります。
  9. 自己修正: コマンドがエラーを返した場合は、stderr を分析し、構文またはフラグを修正して、次のイテレーションで再試行します。
  10. input_files:(省略可)コマンドを実行する前に環境に作成されるファイルのリスト。各ファイルには、(現在のディレクトリを基準とした)「path」と「contents」が必要です。「contents」は、ファイルの内容を表すプレーン テキストである必要があります。これは、ファイルから読み取るコマンド(gcloud builds submit --config=cloudbuild.yaml --async --project=PROJECT_ID など)に便利です。

gcloud コマンド/パターンの例:

  1. 重大度が ERROR 以上の GCE インスタンス ログを読み取る: gcloud logging read "severity>=ERROR AND resource.type='gce_instance'" --limit=10 --order=DESC --project=PROJECT_ID
    • フィルタ式で引用符を使用していることに注意してください。
  2. すべての PSC エンドポイントを一覧表示します。gcloud compute forwarding-rules list --project=PROJECT_ID
  3. PSC エンドポイントの説明を取得します。gcloud compute forwarding-rules describe FORWARDING_RULE_NAME --region=REGION --project=PROJECT_ID
    • --region フラグに「=」が使用されていることに注意してください。
  4. すべてのクラスタを一覧表示します。gcloud container clusters list --project=PROJECT_ID
  5. クラスタの説明を取得する: gcloud container clusters describe CLUSTER_NAME --region=REGION --project=PROJECT_ID
  6. コンピューティング インスタンスを一覧表示する: gcloud compute instances list --project=PROJECT_ID
  7. プロジェクトの IAM ポリシーを取得する: gcloud projects get-iam-policy PROJECT_ID --project=PROJECT_ID

レスポンス文字列は、デフォルトでターミナル出力(stdout または stderr)用にフォーマットされます。形式を変更するには、--format フラグを使用します。

run_bq_command

単一の BigQuery CLI(bq)コマンドを実行します。このツールを使用すると、ユーザーのプロジェクトで任意の bq コマンドを実行できます。これには、GCP リソースの作成、更新、削除を行うコマンド(ミューテーション)も含まれます。

重大な安全上の警告(破壊的な可能性あり): このツールは、BigQuery リソース(bq rmbq cancelbq query など)の作成、更新、削除を行うことができます。読み取り専用コマンドに限定されません。十分にご注意ください。

禁止されているコマンド: エージェントは、bq initbq pyshellbq shell の bq コマンドを実行してはなりません。

厳格な実行ルール:

  1. コマンド文字列で --project_id または --quota_project_id の少なくとも 1 つを指定しなければなりません。
  2. プロジェクト ID と割り当てプロジェクト: --project_id フラグは、コマンドが動作するリソース プロジェクトを指定します(gcloud の --project フラグをミラーリングします)。--quota_project_id フラグは、ダウンストリーム BigQuery API 呼び出しの課金/割り当てに対して課金されるプロジェクトを指定します(gcloud の --billing-project フラグをミラーリングします)。コマンドで --project_id が指定されている場合は、課金/割り当てプロジェクトとして使用されます。--project_id が指定されていないか、--quota_project_id が追加で指定されている場合、課金/割り当てプロジェクトは --quota_project_id フラグで設定されたプロジェクトになります。
  3. フラグの形式: すべての長いオプションで、フラグキーとその値を区切るために常に「=」記号を使用しなければなりません。正しい値: '--project_id=my-project' または '--location=us'。不正解: '--project_id my-project' または '--location us'。フラグとその値の間にスペースは使用しないでください。
  4. 構成のデフォルトなし: bq コマンドはステートレスで実行されます。.bigqueryrc などのローカル構成ファイルは読み込まれません。したがって、すべてのリージョン オペレーション(データセットの作成やリージョン データセットのクエリなど)では、--location フラグ(--location=us--location=EU など)を明示的に指定する必要があります。
  5. 非同期オペレーション: 一部のコマンドは、同期の長時間実行オペレーション(クエリジョブの実行など)を開始します。エージェントのタイムアウトを防ぐため、これらのコマンドには常に --nosync フラグを渡す必要があります。
  6. コマンドの制限: 次の bq コマンドは使用しないでください。bq initbq pyshellbq shell。コマンドのパイプ処理やチェーン処理はサポートされていません。
  7. 自己修正: コマンドがエラーを返した場合は、stderr を分析し、構文またはフラグを修正して、次のイテレーションで再試行します。

変更を行う bq コマンドの例: bq mkbq rmbq updatebq insertbq query--dry_run なし)など。使用方法: RunBq(command="bq query --project_id=PROJECT_ID 'SELECT 1'", project="projects/PROJECT_ID", input_files=[{"path": "PATH", "contents": "CONTENTS"}])。'command' パラメータで完全な bq コマンドを 1 つの文字列として指定する必要があります。課金、API の有効化、割り当て使用量のチェックを行う API 実行プロジェクトとして、「project」パラメータ(形式: projects/PROJECT_ID)を指定する必要があります。

bq コマンド/パターンの例:

  1. クエリを実行する: bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10'
  2. データセットを作成する: bq mk --dataset --location=us --project_id=PROJECT_ID myDataset
  3. テーブルを作成する: bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer
  4. データセットを削除する: bq rm -f --dataset --project_id=PROJECT_ID myDataset
  5. テーブルを削除する: bq rm -f -t --project_id=PROJECT_ID myDataset.myTable
  6. テーブルの説明を更新: bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable
  7. プロジェクト内のデータセットを一覧表示する: bq ls --datasets=true --project_id=PROJECT_ID

MCP ツールの仕様を取得する

MCP サーバー内のすべてのツールの MCP ツール仕様を取得するには、tools/list メソッドを使用します。次の例は、curl を使用して、MCP サーバー内で現在使用可能なすべてのツールとその仕様を一覧表示する方法を示しています。

Curl リクエスト
curl --location 'https://cloudcli.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
    "method": "tools/list",
    "jsonrpc": "2.0",
    "id": 1
}'