项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在将 Terragrunt 和 Google Cloud Platform (GCP) 的基础设施管理能力暴露给 LLM (大型语言模型) 或其他 MCP 客户端。它充当 LLM 与 GCP 基础设施之间的桥梁,允许 LLM 理解、查询、规划和执行基础设施变更,支持 Terragrunt 的新 CLI 设计和实验性功能,如并行栈执行。
主要功能点
- 资源管理: 发现、查询、验证、创建、更新和删除 GCP 基础设施资源。
- 部署操作: 生成部署计划,安全地应用基础设施变更,以及执行回滚。
- 可视化与分析: 生成资源树和依赖关系图,帮助理解基础设施结构和关系。
- 实验性栈支持: 利用 Terragrunt 的实验性栈功能,实现并行部署和增强的依赖管理。
- 成本管理: 提供基础设施成本分析、预算告警和优化建议。
- 自动化助手集成: 提供用于配置 LLM 自动化助手的系统 Prompt,指导 LLM 如何利用工具进行基础设施管理。
- 监控与通知: 集成状态监控、配置漂移检测和团队通知功能。
安装步骤
- 克隆仓库: 将项目代码从 GitHub 克隆到本地机器。
git clone https://github.com/spolspol/terragrunt-gcp-tool-mcp.git cd terragrunt-gcp-tool-mcp - 安装依赖: 使用 pip 安装所需的 Python 依赖。
pip install -r requirements.txt # 或者为了开发目的: # pip install -e . - 配置服务器: 复制示例配置文件并根据你的 GCP 环境和 Terragrunt 设置进行编辑。
cp config/config.example.yaml config/config.yaml # 编辑 config/config.yaml 文件,填写你的 GCP 项目 ID、凭据路径、Terragrunt 仓库路径等
服务器配置 (供 MCP 客户端使用)
为了让 MCP 客户端(如支持 MCP 的 LLM 应用)连接到此服务器,你需要在客户端配置中指定如何启动此服务器进程。通常这包括:
- 服务器名称: 客户端用于标识此 MCP 服务器的名称(例如:'terragrunt-gcp')。
- 启动命令 (command): 执行服务器的命令,例如:'python3'。
- 命令参数 (args): 传递给命令的参数,例如:'["-m", "terragrunt_gcp_mcp.server"]' 或 '["run_server.py", "config/config.yaml"]'。这会告诉 Python 解释器运行服务器模块或启动脚本。
- 工作目录 (cwd): 启动命令需要在此项目的根目录下执行,所以需要将工作目录设置为你克隆仓库的本地路径(例如:'/path/to/terragrunt-gcp-tool-mcp')。
- 环境变量 (env): 可能需要设置 GCP 凭据路径等环境变量,例如:'{"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/gcp-credentials.json"}'。
请参考你的 MCP 客户端文档,根据上述信息配置服务器启动方式。
基本使用方法
服务器启动后,MCP 客户端即可通过标准输入/输出 (stdio) 或其他配置的传输协议与服务器通信。客户端会通过 JSON-RPC 调用服务器暴露的“工具”(methods),例如:
- 调用工具 'list_resources' 获取资源列表。
- 调用工具 'plan_resource_deployment' 生成部署计划。
- 调用工具 'execute_stack_command' 执行栈命令。
- 调用工具 'get_cost_analysis' 获取成本分析数据。
LLM 客户端可以根据用户的自然语言指令,理解用户的意图,然后调用相应的 MCP 工具来完成任务,并利用工具返回的数据生成响应。
你也可以使用项目提供的命令行工具 ('terragrunt-gcp-mcp') 直接与后端功能交互进行测试和手动操作。例如:
# 列出所有资源 python3 -m terragrunt_gcp_mcp.cli list-resources # 验证特定资源 python3 -m terragrunt_gcp_mcp.cli validate-resource live/dev-account/test-dev/dev-99/project # 生成部署计划 python3 -m terragrunt_gcp_mcp.cli plan-deployment live/dev-account/test-dev/dev-99/project
信息
分类
开发者工具