Terraform MCP服务器
用于作为代码操作的Terraform基础设施的模型上下文协议(MCP)服务器。提供25个全面的工具,用于管理Terraform配置、状态、工作区和执行基础设施操作。
特性
核心操作(6个工具)
tf_version-获取Terraform版本信息tf_init-初始化Terraform工作目录(可选提供程序升级)tf_validate-验证Terraform配置语法tf_plan-创建显示拟议变更的执行计划tf_apply-将Terraform更改应用于基础架构tf_destroy-摧毁Terraform管理的基础设施
输出管理(1个工具)
tf_output-获取Terraform输出值(JSON或纯文本)
状态管理(6个工具)
tf_state_list-列出Terraform状态下的所有资源tf_state_show-显示特定资源的详细信息tf_state_rm-从Terraform状态中删除资源tf_state_mv-在Terraform状态下移动/重命名资源tf_import-将现有基础设施导入Terraform状态tf_refresh-从真实基础设施刷新地形状态
代码格式化(1个工具)
tf_fmt-格式化Terraform配置文件(检查或修改)
工作空间管理(4个工具)
tf_workspace_list-列出所有Terraform工作区tf_workspace_select-切换到其他工作区tf_workspace_new-创建新工作区tf_workspace_delete-删除工作区
提供商管理(1个工具)
tf_providers-列出正在使用的Terraform提供程序
高级操作(3个工具)
tf_graph-以DOT格式生成资源依赖关系图tf_taint-在下次申请时标记娱乐资源tf_untaint-从资源中删除污染标记
计划管理(1个工具)
tf_show_plan-显示已保存的执行计划文件的详细信息
文件操作(3个工具)
tf_list_files-列出目录(.tf、.tfvars、.tfstate)中的Terraform文件tf_read_file-读取Terraform配置文件的内容tf_write_file-将内容写入Terraform配置文件
安装
npm install
npm run build配置
服务器使用可选的环境变量来设置默认工作目录:
export TERRAFORM_WORKING_DIR="/path/to/your/terraform/projects"如果未设置,服务器将使用当前工作目录。
使用Claude Desktop
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"terraform": {
"command": "node",
"args": ["/path/to/mcp-terraform/dist/index.js"],
"env": {
"TERRAFORM_WORKING_DIR": "/path/to/terraform/projects"
}
}
}
}发展
在热重载的开发模式下运行:
npm run dev需求
- 必须在PATH中安装并提供Terraform CLI
- 配置了适当的云提供商凭据(AWS、Azure、GCP等)
- 包含配置文件的Terraform工作目录
示例用例
- 基础设施规划:在应用更改之前对其进行审查
- 状态管理:导入现有资源,在模块之间移动资源
- 工作空间管理:管理多个环境(开发、暂存、生产)
- 代码质量:统一格式化Terraform文件
- 故障排除:检查状态,可视化资源依赖关系
- 选择性操作:使用目标将更改应用于特定资源
- 配置管理:读取和修改Terraform配置文件
刀具参数
公共参数
dir(可选):用于Terraform操作的工作目录。默认为TERRAFORM_WORKING_DIR或当前目录auto_approve(可选):跳过应用/销毁操作的交互式审批target(可选):将操作限制到特定资源(例如。,aws_instance.example)var(可选):将变量传递给Terraform命令(具有键值对的对象)
计划运营
{
"dir": "/path/to/project",
"out": "plan.tfplan",
"target": "aws_instance.web",
"var": {
"region": "us-west-2",
"instance_type": "t3.micro"
}
}州运营
{
"dir": "/path/to/project",
"address": "aws_instance.example",
"source": "aws_instance.old_name",
"destination": "aws_instance.new_name"
}安全注意事项
- 服务器以完全权限执行Terraform命令
- 确保对工作目录进行适当的访问控制
- 小心
auto_approve应用/销毁操作标志 - 将敏感变量存储在Terraform变量文件或环境变量中,而不是以纯文本形式存储
- 在对生产基础设施进行更改之前,仔细审查计划
输出格式
- 大多数命令从Terraform CLI返回纯文本输出
- 使用
json: true随着tf_output用于结构化JSON响应 - 状态操作返回格式化的资源信息
- 图形操作返回可视化工具的DOT格式
可视化
这 tf_graph 该工具以DOT格式生成依赖关系图。使用Graphviz等工具进行可视化:
# Save graph output to file
terraform graph > graph.dot
# Generate PNG image
dot -Tpng graph.dot -o graph.png错误处理
服务器从Terraform命令中捕获stdout和stderr。失败的操作会返回带有退出代码的错误消息以进行故障排除。
api参考
有关详细的Terraform CLI文档,请参阅:https://developer.hashicorp.com/terraform/cli
许可证
麻省理工学院
贡献
欢迎投稿!请随时提交拉取请求。
