地形图分析器MCP服务器
一种模型上下文协议(MCP)服务器,提供用于分析地形图的工具。此服务器可以执行地形命令、分析计划输出、生成报告和跟踪日志文件。
特性
- 执行地形命令:安全运行地形图和其他命令
- 计划分析:解析地形图输出并提取资源变化
- 报告生成:使用筛选结果创建降价报告
- 日志文件跟踪:跟踪生成的日志文件
- 可配置过滤:过滤掉特定的资源模式(清单版本、NAT VM等)
- 环境变量支持:使用自定义环境变量执行命令
安装
- 安装依赖项:
pip install -r requirements.txt- 确保您的PATH中已安装并可用地形模型
用法
作为MCP服务器
使用stdio传输运行服务器:
python server.py服务器将通过stdin/stdout使用模型上下文协议进行通信。
可用工具
1. run_terraform_plan
执行地形规划命令并返回输出。
参数:
command(可选):要执行的terraform命令(默认:“terraform plan”)working_directory(可选):运行命令的目录
例子:
{
"name": "run_terraform_plan",
"arguments": {
"command": "terraform plan -out=myplan.tfplan",
"working_directory": "/path/to/terraform/project"
}
}2. analyze_terraform_output
分析地形平面图输出并提取变化。
参数:
plan_output:要分析的地形图输出文本filter_patterns(可选):从结果中筛选出的模式列表
例子:
{
"name": "analyze_terraform_output",
"arguments": {
"plan_output": "# terraform plan output here...",
"filter_patterns": ["temp", "staging"]
}
}3. generate_plan_report
根据地形图输出生成全面的降价报告。
参数:
plan_output:要分析的地形图输出文本output_file(可选):保存报告的文件路径
例子:
{
"name": "generate_plan_report",
"arguments": {
"plan_output": "# terraform plan output here...",
"output_file": "/path/to/report.md"
}
}4. run_custom_terraform_command
使用可选环境变量执行自定义地形命令。
参数:
command:要执行的terraform命令working_directory(可选):运行命令的目录environment_vars(可选):要设置的环境变量
例子:
{
"name": "run_custom_terraform_command",
"arguments": {
"command": "terraform plan -var-file=staging.tfvars",
"working_directory": "/path/to/project",
"environment_vars": {
"TF_WORKSPACE": "staging",
"TF_LOG": "INFO"
}
}
}配置
过滤模式
默认情况下,分析器会过滤掉包含这些模式的资源:
manifestversionnat-vmnat_vm
您可以使用自定义这些模式 filter_patterns 参数在 analyze_terraform_output 工具。
工作目录
如果没有指定工作目录,服务器将使用启动服务器的当前工作目录。
集成示例
使用MCP客户端
服务器遵循标准的MCP协议,可以与任何兼容MCP的客户端(Claude Desktop、GitHub Copilot CLI等)集成。
配置示例:
{
"mcpServers": {
"terraform-analyzer": {
"command": "python",
"args": ["/path/to/terraform-plan-mcp-server/server.py"],
"cwd": "/path/to/your/terraform/project"
}
}
}发展
项目结构
terraform-plan-mcp-server/
├── server.py # Main MCP server implementation
├── requirements.txt # Python dependencies
├── README.md # This file
├── examples/ # Usage examples (optional)
└── tests/ # Unit tests (optional)关键组件
- 地形平面分析仪:地形操作的核心类
- MCP工具:实现MCP工具界面的装饰功能
- 异步操作:所有地形命令异步运行
- 日志记录:正确记录到stderr(不是stdout),以避免干扰MCP协议
错误处理
服务器包括全面的错误处理:
- 捕获并返回命令执行错误
- 自定义命令后的环境变量恢复
- 正确清理临时文件
- 记录调试错误
安全考虑
- 服务器执行shell命令,因此请确保它在安全的环境中运行
- 自定义命令后,环境变量会正确还原
- 日志文件是使用适当的权限创建的
- 没有记录或暴露敏感数据
扩展服务器
要添加新工具,请执行以下操作:
- 使用定义新函数
@server.tool()装饰器 - 包含正确的类型提示和文档字符串
- 返回
List[types.TextContent]结果 - 适当处理错误并记录下来
例子:
@server.tool()
async def my_custom_tool(param1: str, param2: Optional[int] = None) -> List[types.TextContent]:
"""
Description of what this tool does.
Args:
param1: Description of parameter 1
param2: Description of parameter 2 (optional)
"""
try:
# Tool implementation here
result = f"Processing {param1} with {param2}"
return [types.TextContent(type="text", text=result)]
except Exception as e:
logger.error(f"Error in my_custom_tool: {e}")
return [types.TextContent(type="text", text=f"Error: {str(e)}")]许可证
本项目按原样提供,用于教育和发展目的。
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
支持
对于问题或疑问:
- 检查日志中的错误消息
- 验证地形是否正确安装
- 确保工作目录权限正确
- 检查MCP客户端配置
