Skip to main content
Glama

platform-mcp

読み取り専用Model Context Protocolサーバーで、AIエージェント(Claude Code、Claude Desktop、その他のMCPクライアント)をGCPプラットフォームエンジニアに変えます。Google Cloudプロジェクトを指定して、インシデントの調査、インベントリの取得、コスト最適化の機会の抽出を依頼できます。インフラストラクチャを変更する能力は一切ありません。

観察のみ。 このサーバーのどのツールも状態を変更しません。後述の閲覧専用IDと組み合わせることで、エージェントは見ることはできても触れることはできないという、堅牢な多層防御の保証が得られます。

できること

領域

ツール

環境

list_environments

ログとエラー

query_logs, get_recent_errors, list_error_groups

メトリクスとアラート

query_metric, list_alert_policies, list_uptime_checks

コストと推奨事項

get_cost_breakdown, get_billing_info, list_cost_recommendations, list_recommendations

リソースインベントリ

search_assets, list_compute_instances, list_cloud_run_services, list_gke_clusters, list_sql_instances

接続後の典型的なプロンプト:

  • 「過去24時間の上位エラーグループはどれですか?また、最も新しいものはどれですか?」

  • 「過剰にプロビジョニングされているGKEノードプールはどれですか?マシンタイプ別の平均CPUを表示してください。」

  • 「このプロジェクトでコストを削減できる箇所はどこですか?」

Related MCP server: k8s-readonly-mcp

複数環境

1つのサーバーで複数のプロジェクトにアクセスできます。PLATFORM_MCP_ENVIRONMENTS設定を参照)で定義し、エージェントはプロンプトの文言から環境を選択します:

  • *「ステージングで過去1時間にエラーはありますか?」*

  • *「ステージング本番のCloud Runサービスを比較してください。」*

すべてのツールはオプションのenvironment引数を受け取ります。省略するとデフォルト環境が使用され、environment="production"を渡すと別の環境をターゲットにできます。名前、定義したエイリアス、一般的な略称(prodstgqaなど)、およびプロジェクトIDそのものもすべて解決されます。認識されない名前は、有効なオプションを列挙したエラーになります。タイプミスによって誤ったプロジェクトに静かにリターゲットされることは決してありません。

各環境には独自のサービスアカウントが設定されているため、ステージングと本番は同じプロセスから別々のIDでアクセスされ、すべての結果には取得元のenvironmentprojectがエコーバックされます。

要件

  • Python 3.11以上

  • Google Cloudプロジェクトと認証情報(自分のログイン、またはサービスアカウント)

  • 初期設定用のgcloud CLI

インストール

git clone https://github.com/deBilla/platform-mcp.git
cd platform-mcp
python3 -m venv .venv
./.venv/bin/pip install -e .

初回のGCP設定

アクセスしたいプロジェクトごとに一度実行してください。ステージングと本番では、それぞれ独自のAPI有効化と読み取り専用サービスアカウントが必要です。

1. ツールが依存するAPIを有効にします:

gcloud services enable \
  logging.googleapis.com monitoring.googleapis.com clouderrorreporting.googleapis.com \
  recommender.googleapis.com cloudasset.googleapis.com cloudbilling.googleapis.com \
  bigquery.googleapis.com \
  --project YOUR_PROJECT_ID

2. サーバーが実行されるIDに読み取り専用アクセスを付与します。

自分のログイン(アプリケーションデフォルト認証情報)を使用したローカル開発の場合:

gcloud auth application-default login

IDには、プロジェクトに対する次のビューアーロールに加えて、請求先アカウントに対するroles/billing.viewerが必要です:

roles/viewer                # broad read (compute, run, gke, sql via Asset Inventory)
roles/logging.viewer
roles/monitoring.viewer
roles/errorreporting.viewer
roles/recommender.viewer
roles/cloudasset.viewer
roles/bigquery.dataViewer    # only for get_cost_breakdown
roles/bigquery.jobUser       # only for get_cost_breakdown

3.(推奨)ログインの代わりに専用の読み取り専用サービスアカウントを使用します:

PROJECT=YOUR_PROJECT_ID
gcloud iam service-accounts create platform-mcp-ro \
  --display-name "platform-mcp read-only" --project $PROJECT

SA=platform-mcp-ro@$PROJECT.iam.gserviceaccount.com
for ROLE in roles/viewer roles/logging.viewer roles/monitoring.viewer \
  roles/errorreporting.viewer roles/recommender.viewer roles/cloudasset.viewer; do
  gcloud projects add-iam-policy-binding $PROJECT \
    --member="serviceAccount:$SA" --role="$ROLE"
done

# Let your own login impersonate it (no key file to manage):
gcloud iam service-accounts add-iam-policy-binding $SA \
  --member="user:you@example.com" \
  --role="roles/iam.serviceAccountTokenCreator" --project $PROJECT

次に、PLATFORM_MCP_ENVIRONMENTS内のその環境のimpersonate値として参照します(推奨。キーファイルは不要)。または、ダウンロードしたキーをGOOGLE_APPLICATION_CREDENTIALSで指定します。

権限借用は、ADCが解決するIDによって実行されます。ADC自体が権限借用されたサービスアカウントである場合、そのSA(ユーザーではなく)に、各platform-mcp-roに対するroles/iam.serviceAccountTokenCreatorが必要です。

セキュリティモデル

読み取り専用はOAuthスコープではなくIAMによって強制されます。サーバーは広範なcloud-platformスコープを要求し、変更を伴うAPIを決して呼び出さないという理由だけで読み取り専用を維持します。コードだけに依存しないでください — 上記の手順3のように、ビューアー専用IDで実行し、実行されるコードに関係なく、認証情報自体が書き込みできないようにします。これにより、サーバーが書き込みを試みない、IDが書き込みできない、という2つの独立した層が得られます。

複数環境でもこれはプロジェクトごとに維持されます。各環境は独自のサービスアカウントとして認証されるため、ステージングのIDが本番にアクセスするために使用されることはありません。各環境には、そのプロジェクトのみへのビューアー専用アクセスを付与してください。

設定

サンプル設定をコピーして値を入力してください:

cp .mcp.json.example .mcp.json

.mcp.jsonはgit無視されるため、プロジェクトIDとサービスアカウントのメールアドレスはローカルに保持されます。設定できる環境変数(またはシェル):

変数

目的

PLATFORM_MCP_ENVIRONMENTS

環境名→設定のJSONマップ。サーバーを設定する推奨方法。

PLATFORM_MCP_DEFAULT_ENVIRONMENT

ツール呼び出しでenvironmentが省略された場合に使用される環境。設定されている場合はstaging、それ以外は最初のエントリがデフォルト。

GOOGLE_APPLICATION_CREDENTIALS

読み取り専用SAキーファイルへのパス(権限借用の代替)。

PLATFORM_MCP_DEFAULT_LIMIT

リスト型ツールのデフォルトの最大行数(デフォルト50)。

PLATFORM_MCP_ENVIRONMENTSはJSONオブジェクトを保持し、各エントリは次を受け入れます:

キー

目的

project

必須。 GCPプロジェクトID。

impersonate

この環境で権限借用する読み取り専用SA(キーファイルは不要)。

billing_export_table

完全修飾のBigQuery請求エクスポートテーブル。get_cost_breakdownにのみ必要(例: YOUR_PROJECT_ID.billing.gcp_billing_export_v1_XXXXXX)。

aliases

エージェントがこの環境に使用できる追加の名前。

裸の文字列値は{"project": "..."}の省略形です。.mcp.json内のJSONでは引用符をエスケープする必要があります。エスケープしないと次のように読み取られます:

{
  "staging": {
    "project": "my-app-staging",
    "impersonate": "platform-mcp-ro@my-app-staging.iam.gserviceaccount.com"
  },
  "production": {
    "project": "my-app",
    "impersonate": "platform-mcp-ro@my-app.iam.gserviceaccount.com",
    "billing_export_table": "my-app.billing.gcp_billing_export_v1_XXXXXX"
  }
}

単一環境モード。 PLATFORM_MCP_ENVIRONMENTSが設定されていない場合、サーバーは以前と同じように動作し、defaultという名前の1つの環境を公開します:

変数

目的

GCP_PROJECT

ターゲットプロジェクト。未設定の場合はADCのデフォルトプロジェクトにフォールバック。

IMPERSONATE_SERVICE_ACCOUNT

権限借用する読み取り専用SA。レジストリエントリにimpersonateがない場合のフォールバックでもある。

BILLING_EXPORT_TABLE

請求エクスポートテーブル。レジストリエントリにbilling_export_tableがない場合のフォールバックでもある。

クライアントに登録

Claude Code / Claude Desktop.mcp.json.exampleのブロックをMCP設定(Claude Codeの場合はプロジェクト内の.mcp.json、Desktopの場合はclaude_desktop_config.json)に追加し、commandをvenvのコンソールスクリプトに指定します。グローバルインストールは不要です:

{
  "mcpServers": {
    "platform-mcp": {
      "command": "/absolute/path/to/platform-mcp/.venv/bin/platform-mcp",
      "env": {
        "PLATFORM_MCP_DEFAULT_ENVIRONMENT": "staging",
        "PLATFORM_MCP_ENVIRONMENTS": "{\"staging\":{\"project\":\"YOUR_STAGING_PROJECT_ID\",\"impersonate\":\"platform-mcp-ro@YOUR_STAGING_PROJECT_ID.iam.gserviceaccount.com\"},\"production\":{\"project\":\"YOUR_PROD_PROJECT_ID\",\"impersonate\":\"platform-mcp-ro@YOUR_PROD_PROJECT_ID.iam.gserviceaccount.com\"}}"
      }
    }
  }
}

MCP Inspector — 対話型テスト用:

./.venv/bin/mcp dev src/platform_mcp/server.py

注記

  • すべてのツールは結果数を制限し、長いペイロードをトークンに優しいように切り詰めます。

  • GCPクライアントは遅延構築され、環境ごとにキャッシュされるため、会話中にステージングと本番を切り替えても、クライアントの構築はそれぞれ1回だけです。

  • コストレコメンダーはゾーン/リージョン単位です。list_cost_recommendationsは、リソースがある場所(Asset Inventory経由)を自動検出してファンアウトし、空または利用できない場所とレコメンダーをスキップします。

  • get_cost_breakdownは、許可リスト化されたグループ化列のセットを使用したパラメータ化されたBigQueryクエリを使用します。

ライセンス

MIT © 2026 Dimuthu Wickramanayake

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server for inspecting Kubernetes clusters, allowing LLMs to list resources, describe pods, and read logs without mutation.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A read-only MCP server that lets an LLM inspect an AWS account — list EC2 instances, S3 buckets, IAM users, and cost — with a structural guarantee against any mutations.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A secure, read-only MCP server for AI-powered system monitoring. It provides real-time OS metrics, config discovery, and safe log tailing to enable autonomous infrastructure audits without shell access risks.
    4

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/deBilla/platform-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server