Skip to main content
Glama

platform-mcp

一个只读Model Context Protocol 服务器,它能把 AI 智能体(Claude Code、Claude Desktop 或任何 MCP 客户端)变成 GCP 平台工程师。将其指向你的 Google Cloud 项目,然后让它调查事件、盘点资源并揭示成本优化机会——全程没有任何更改基础设施的能力。

仅观察。 此服务器中的任何工具都不会变更状态。结合下文所述的仅查看身份,这为你提供了硬性的纵深防御保证:智能体可以查看,但绝不触碰。

它能做什么

领域

工具

环境

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

多环境

一个服务器可以访问多个项目。通过 PLATFORM_MCP_ENVIRONMENTS 定义它们(参见配置),智能体会根据你的提示措辞选择一个:

  • "最近一小时内 staging 中是否有任何错误?"

  • "比较 stagingprod 之间的 Cloud Run 服务。"

每个工具都接受可选的 environment 参数。省略该参数时使用默认环境;传入 environment="production" 可指向另一个环境。名称、你定义的任何别名、常见简写(prodstgqa、…)以及裸项目 ID 均可解析。无法识别的名称会报错并列出有效选项——拼写错误绝不会悄悄地将请求重定向到错误项目。

每个环境都有自己的服务账号,因此 staging 和 production 通过同一进程中的不同身份进行访问,并且每个结果都会回显其来源的 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 设置

对你想要访问的每个项目运行一次这些步骤——staging 和 production 都需要各自启用 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. 向服务器运行时使用的身份授予只读访问权限。

对于使用你自己的登录(应用默认凭据)进行本地开发:

gcloud auth application-default login

该身份需要项目上的以下查看者角色,以及结算账号上的 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 解析到的任何身份执行的。如果你的 ADC 本身是一个被模拟的服务账号,那么需要的是该服务账号(而非你的用户)在每个 platform-mcp-ro 上拥有 roles/iam.serviceAccountTokenCreator

安全模型

只读性由 IAM,而非 OAuth 范围 强制执行。服务器请求宽泛的 cloud-platform 范围,并保持只读,纯粹是因为它从不调用变更 API。不要仅依赖代码——在上文步骤 3 的仅查看身份下运行它,以便凭据本身无法写入,无论执行什么代码。这为你提供了两个独立的层面:服务器不会尝试写入,而且即使尝试,身份也无法写入。

在多环境下,这仍然是按项目进行的:每个环境都作为自己的服务账号进行身份验证,因此 staging 身份绝不会被用来访问 production。请为每个环境仅授予其自身项目的仅查看访问权限。

配置

复制示例配置并填写你的值:

cp .mcp.json.example .mcp.json

.mcp.json 被 git 忽略,因此你的项目 ID 和服务账号电子邮件保持本地。以下环境变量可以通过它(或你的 shell)设置:

Variable

Purpose

PLATFORM_MCP_ENVIRONMENTS

环境名称 → 设置的 JSON 映射。推荐的服务器配置方式。

PLATFORM_MCP_DEFAULT_ENVIRONMENT

工具调用省略 environment 时使用的环境。如果配置了 staging,则默认为 staging,否则为第一个条目。

GOOGLE_APPLICATION_CREDENTIALS

只读服务账号密钥文件的路径(模拟的替代方案)。

PLATFORM_MCP_DEFAULT_LIMIT

列表类工具的默认最大行数(默认 50)。

PLATFORM_MCP_ENVIRONMENTS 包含一个 JSON 对象;每个条目可接受:

Key

Purpose

project

必需。 GCP 项目 ID。

impersonate

此环境要模拟的只读服务账号(无需密钥文件)。

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 的环境:

Variable

Purpose

GCP_PROJECT

目标项目。如果未设置,则回退到你的 ADC 默认项目。

IMPERSONATE_SERVICE_ACCOUNT

要模拟的只读服务账号。也是没有 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

说明

  • 所有工具都会限制结果数量并截断较长的负载,以保持对 token 友好。

  • GCP 客户端按环境惰性构建并缓存,因此在对话中途在 staging 和 production 之间切换时,每个环境只需构建一次客户端。

  • 成本建议器是可用区/区域级别的;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