Google Cloud资源协议服务器

一个连接Google Cloud服务的模型上下文协议服务器,提供与Google Cloud资源交互的上下文和工具。

  • by nsilicani
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 nsilicani/gcp-mcp

使用说明

重要

这是一把叉子 谷歌云mcp.我的贡献只是:

  • 流式HTTP传输支持
  • Dockerfile更新
  • deploy.sh 部署到Google Cloud Run的脚本

谷歌云MCP服务器

一个模型上下文协议服务器,连接到谷歌云服务,为与谷歌云资源交互提供上下文和工具。

服务

支持的Google Cloud服务:

计费

使用成本优化见解管理和分析Google Cloud计费:

工具: gcp-billing-list-accounts, gcp-billing-get-account-details, gcp-billing-list-projects, gcp-billing-get-project-info, gcp-billing-list-services, gcp-billing-list-skus, gcp-billing-analyse-costs, gcp-billing-detect-anomalies, gcp-billing-cost-recommendations, gcp-billing-service-breakdown

示例提示:

  • “显示我的所有账单帐户”
  • “分析过去30天my-app-pro-123项目的成本”
  • “为账单账户生成成本建议账单账户/123456-789ABC-DEF012”
  • “检查my-ecommerce-456项目中的计费异常”

错误报告

通过自动调查和补救建议监控和分析应用程序错误:

工具: gcp-error-reporting-list-groups, gcp-error-reporting-get-group-details, gcp-error-reporting-analyse-trends

示例提示:

  • “显示项目my-webapp-prod-789最后一小时的错误组”
  • “获取错误组项目/my-app-123/groups/xyz789的详细信息”
  • “在项目分析-prod-456中分析服务我的api的错误趋势”

身份和访问管理

查询和分析IAM策略和权限:

工具: gcp-iam-get-project-policy, gcp-iam-test-project-permissions, gcp-iam-test-resource-permissions, gcp-iam-validate-deployment-permissions, gcp-iam-list-deployment-services, gcp-iam-analyse-permission-gaps

示例提示:

  • “获取my-webapp-pro-123项目的IAM策略”
  • “测试我是否有storage.buckets.create对项目data-lake-456的权限”
  • “检查项目微服务中Cloud Run的部署权限-789”
  • “分析项目k8s-prod-321中部署到GKE集群的权限差距”

日志记录

从Google Cloud日志中查询和过滤日志条目:

工具: gcp-logging-query-logs, gcp-logging-query-time-range, gcp-logging-search-comprehensive

示例提示:

  • “显示最近一小时my-app-prod-123项目的日志,严重性为ERROR”
  • “在项目后端456中从service my api搜索包含'timeout'的日志”
  • “项目compute-prod-789中资源类型gce_instance的查询日志”

扳手

与Google Cloud Spanner数据库交互:

工具: gcp-spanner-execute-query, gcp-spanner-list-tables, gcp-spanner-list-instances, gcp-spanner-list-databases, gcp-spanner-query-natural-language, gcp-spanner-query-count

示例提示:

  • “列出Spanner实例中的所有数据库,我在项目ecommerce-prod-123中的实例”
  • “执行SQL:从项目my-app-456中的数据库用户数据库中的用户处选择COUNT(*)”
  • “显示retail-789项目中数据库库存数据库中订单的表结构”

监控

从谷歌云监控中检索和分析指标:

工具: gcp-monitoring-query-metrics, gcp-monitoring-list-metric-types, gcp-monitoring-query-natural-language

示例提示:

  • “显示过去6小时内项目web-app-prod-123的CPU利用率指标”
  • “列出项目基础架构中计算引擎的可用度量类型-456”
  • “查询项目后端服务-789中实例的内存使用情况”

分析器

使用Google Cloud Profiler分析应用程序性能:

工具: gcp-profiler-list-profiles, gcp-profiler-analyse-performance, gcp-profiler-compare-trends

示例提示:

  • “列出过去24小时内项目my-java-app-123的CPU配置文件”
  • “分析项目后端prod-456中服务我的api的性能瓶颈”
  • “比较项目性能测试-789中部署v1.2和v1.3的堆配置文件”

追踪

分析来自Google Cloud Trace的分布式跟踪:

工具: gcp-trace-get-trace, gcp-trace-list-traces, gcp-trace-find-from-logs, gcp-trace-query-natural-language

示例提示:

  • “获取项目distributed-app-789中ID abc123def456的跟踪详细信息”
  • “显示项目微服务prod-123在过去一小时的失败痕迹”
  • “在项目web-backend-456中查找与跟踪xyz789相关的日志”
  • “项目ecommerce-prod-321中服务结账api的查询跟踪”

快速开始

配置后,您可以使用自然语言与Google Cloud服务进行交互:

"What are my current billing costs for project my-webapp-prod-123?"
"Show me errors from project ecommerce-api-456 in the last hour"
"Check if I have permission to deploy to Cloud Run in project microservices-789"
"Find logs containing 'database timeout' from project backend-prod-321 yesterday"
"List Spanner databases in instance prod-db for project data-store-654"
"What's the CPU usage of Compute Engine instances in project infrastructure-987?"

认证

此服务器支持Google Cloud的两种身份验证方法:

  1. 服务帐户密钥文件 (推荐):设置 GOOGLE_APPLICATION_CREDENTIALS 将环境变量设置为服务帐户密钥文件的路径。这是标准的Google Cloud身份验证方法。

  2. 环境变量:设置 GOOGLE_CLIENT_EMAIL 和 GOOGLE_PRIVATE_KEY 环境变量直接。这对于存储密钥文件不切实际的环境非常有用。

服务器也将使用 GOOGLE_CLOUD_PROJECT 如果设置了环境变量,否则它将尝试从身份验证凭据中确定项目ID。

安装

# Clone the repository
git clone https://github.com/krzko/google-cloud-mcp.git
cd google-cloud-mcp

# Install dependencies
pnpm install

# Build
pnpm build

通过Google Cloud进行身份验证:

gcloud auth application-default login

配置 mcpServers 在您的客户中:

{
  "mcpServers": {
      "google-cloud-mcp": {
          "command": "node",
          "args": [
              "/Users/foo/code/google-cloud-mcp/dist/index.js"
          ],
          "env": {
              "GOOGLE_APPLICATION_CREDENTIALS": "/Users/foo/.config/gcloud/application_default_credentials.json"
          }
      }
  }
}

发展

启动服务器

# Build the project
pnpm build

# Start the server
pnpm start

开发模式

# Build the project
pnpm build

# Start the server and inspector
npx -y @modelcontextprotocol/inspector node dist/index.js

故障排除

服务器超时问题

如果在使用Smithery运行服务器时遇到超时问题,请尝试以下操作:

  1. 通过设置启用调试日志记录 debug: true 在您的配置中
  2. 确保 lazyAuth: true 设置为将身份验证推迟到实际需要时
  3. 确保您的凭据文件可访问且有效
  4. 检查日志中是否有任何错误消息

重要:操作仍然需要身份验证,但启用延迟加载后,服务器将立即启动并在需要时进行身份验证,而不是在初始化期间。

身份验证问题

服务器支持两种身份验证方法:

  1. 服务帐户密钥文件:设置 GOOGLE_APPLICATION_CREDENTIALS 将环境变量设置为服务帐户密钥文件的路径
  2. 环境变量:设置 GOOGLE_CLIENT_EMAIL 和 GOOGLE_PRIVATE_KEY 环境变量

如果您遇到身份验证问题,请确保:

  • 您的服务帐户具有必要的权限
  • 密钥文件格式正确且可访问
  • 环境变量设置正确

容器化

要将mcp服务器作为docker容器运行:

docker build -t gcp-mcp:latest .
docker run --rm --name gcp-mcp-container -p 3001:3001 -v "path\to\GOOGLE_APPLICATION_CREDENTIALS\gcp_key.json:/app/gcp_key.json:ro" -e GOOGLE_APPLICATION_CREDENTIALS=/app/gcp_key.json gcp-mcp:latest

MCP HTTP服务器正在侦听 http://localhost:3001/mcp

部署到云端运行

为了部署到Cloud Run,请设置以下环境变量:

export GCLOUD_USER=<your_gcloud_user@gmail.com>

部署脚本 deploy.sh 假设创建的Google服务帐户名为 gcp-mcp-sa。请授予此服务帐户所需的权限。如果要更改名称,请更新部署脚本。 设置服务帐户很重要,因为Cloud Run以服务帐户运行:

  • Google SDK自动进行身份验证
  • 没有JSON密钥文件
  • 没有私钥
  • 不要启动 这被称为应用程序默认凭据(ADC)。 在您的代码中,我们有:
initGoogleAuth()

这将:

  • 只需在Cloud Run上工作
  • 使用服务帐户标识
  • 无需保密 部署脚本使用基于源代码的部署。特别是,工作流程包括:
  1. 构建容器映像
  2. 将其推送到工件注册表
  3. 将其部署到Cloud Run 所有这些都是自动发生的。要运行脚本,请执行以下操作:
./deploy.sh