platform-mcp
platform-mcp
読み取り専用のModel Context Protocolサーバーで、AIエージェント(Claude Code、Claude Desktop、その他のMCPクライアント)をGCPプラットフォームエンジニアに変えます。Google Cloudプロジェクトを指定して、インシデントの調査、インベントリの取得、コスト最適化の機会の抽出を依頼できます。インフラストラクチャを変更する能力は一切ありません。
観察のみ。 このサーバーのどのツールも状態を変更しません。後述の閲覧専用IDと組み合わせることで、エージェントは見ることはできても触れることはできないという、堅牢な多層防御の保証が得られます。
できること
領域 | ツール |
環境 |
|
ログとエラー |
|
メトリクスとアラート |
|
コストと推奨事項 |
|
リソースインベントリ |
|
接続後の典型的なプロンプト:
「過去24時間の上位エラーグループはどれですか?また、最も新しいものはどれですか?」
「過剰にプロビジョニングされているGKEノードプールはどれですか?マシンタイプ別の平均CPUを表示してください。」
「このプロジェクトでコストを削減できる箇所はどこですか?」
Related MCP server: k8s-readonly-mcp
複数環境
1つのサーバーで複数のプロジェクトにアクセスできます。PLATFORM_MCP_ENVIRONMENTS(設定を参照)で定義し、エージェントはプロンプトの文言から環境を選択します:
*「ステージングで過去1時間にエラーはありますか?」*
*「ステージングと本番のCloud Runサービスを比較してください。」*
すべてのツールはオプションのenvironment引数を受け取ります。省略するとデフォルト環境が使用され、environment="production"を渡すと別の環境をターゲットにできます。名前、定義したエイリアス、一般的な略称(prod、stg、qaなど)、およびプロジェクトIDそのものもすべて解決されます。認識されない名前は、有効なオプションを列挙したエラーになります。タイプミスによって誤ったプロジェクトに静かにリターゲットされることは決してありません。
各環境には独自のサービスアカウントが設定されているため、ステージングと本番は同じプロセスから別々のIDでアクセスされ、すべての結果には取得元のenvironmentとprojectがエコーバックされます。
要件
インストール
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_ID2. サーバーが実行されるIDに読み取り専用アクセスを付与します。
自分のログイン(アプリケーションデフォルト認証情報)を使用したローカル開発の場合:
gcloud auth application-default loginIDには、プロジェクトに対する次のビューアーロールに加えて、請求先アカウントに対する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_breakdown3.(推奨)ログインの代わりに専用の読み取り専用サービスアカウントを使用します:
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とサービスアカウントのメールアドレスはローカルに保持されます。設定できる環境変数(またはシェル):
変数 | 目的 |
| 環境名→設定のJSONマップ。サーバーを設定する推奨方法。 |
| ツール呼び出しで |
| 読み取り専用SAキーファイルへのパス(権限借用の代替)。 |
| リスト型ツールのデフォルトの最大行数(デフォルト50)。 |
PLATFORM_MCP_ENVIRONMENTSはJSONオブジェクトを保持し、各エントリは次を受け入れます:
キー | 目的 |
| 必須。 GCPプロジェクトID。 |
| この環境で権限借用する読み取り専用SA(キーファイルは不要)。 |
| 完全修飾のBigQuery請求エクスポートテーブル。 |
| エージェントがこの環境に使用できる追加の名前。 |
裸の文字列値は{"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つの環境を公開します:
変数 | 目的 |
| ターゲットプロジェクト。未設定の場合はADCのデフォルトプロジェクトにフォールバック。 |
| 権限借用する読み取り専用SA。レジストリエントリに |
| 請求エクスポートテーブル。レジストリエントリに |
クライアントに登録
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
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server for AI coding agents to inspect repositories, audit code quality, route engineering skills, and plan safe issue/PR workflows.1MIT
- AlicenseAqualityCmaintenanceA read-only MCP server for inspecting Kubernetes clusters, allowing LLMs to list resources, describe pods, and read logs without mutation.5MIT
- AlicenseNot gradedqualityCmaintenanceA 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
- FlicenseAqualityCmaintenanceA 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
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Read-only Remote MCP for externally grounded AI agent trust receipts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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