tfmcp: Terraform模型上下文协议工具
⚠️ 本项目包含适用于生产环境的安全功能,但仍在积极开发中。虽然安全系统提供了强大的保护,但在生产环境中请仔细审查所有操作。 ⚠️
tfmcp 是一个命令行工具,通过模型上下文协议(MCP)帮助您与 Terraform 交互。它允许大型语言模型(LLM)管理和操作您的 Terraform 环境,包括:
🎮 演示
使用 Claude Desktop 查看tfmcp的演示效果:

- 读取 Terraform 配置文件
- 分析 Terraform 计划输出
- 应用 Terraform 配置
- 管理Terraform状态
- 创建和修改 Terraform 配置
🎉 最新版本
tfmcp 的最新版本(v0.1.3)现已发布于 Crates.io!您可以使用 Cargo 轻松安装:
cargo install tfmcp
🆕 v0.1.3中的新功能
- 🔐 全面安全系统:适用于生产环境的安全控制,包含审计日志
- 📊 增强Terraform分析:详细的验证和最佳实践建议
- 🛡️ 访问控制:基于文件模式的限制和资源限制
- 📝 审计日志:完整的操作跟踪,用于合规和监控
功能
-
🚀 Terraform集成
深度集成 Terraform CLI,用于分析和执行操作。 -
📄 MCP服务器功能
作为模型上下文协议服务器运行,允许AI助手访问和管理Terraform。 -
🔐 企业级安全
适用于生产环境的安全控制,包含可配置策略、审计日志和访问限制。 -
📊 高级分析
详细的Terraform配置分析,包含最佳实践建议和安全检查。 -
⚡️ 极速性能
由Rust生态系统提供的高速处理,包含优化的解析和缓存。 -
🛠️ 自动设置
在需要时自动创建示例Terraform项目,确保新用户也能顺畅使用。 -
🐳 Docker支持
在容器化环境中运行tfmcp,所有依赖项均已预装。
安装
从源代码安装
# 克隆仓库
git clone https://github.com/nwiizo/tfmcp
cd tfmcp
# 构建并安装
cargo install --path .
从Crates.io安装
cargo install tfmcp
使用Docker
# 克隆仓库
git clone https://github.com/nwiizo/tfmcp
cd tfmcp
# 构建Docker镜像
docker build -t tfmcp .
# 运行容器
docker run -it tfmcp
依赖项
- Rust (2021版本)
- 已安装并可在PATH中访问的Terraform CLI
- Claude Desktop (用于AI助手集成)
- Docker (可选,用于容器化部署)
使用方法
$ tfmcp --help
✨ 一个用于管理Terraform配置并通过模型上下文协议(MCP)操作Terraform的CLI工具。
用法:tfmcp [选项] [命令]
命令:
mcp 以MCP服务器模式启动tfmcp
analyze 分析Terraform配置
help 打印此消息或给定子命令的帮助信息
选项:
-c, --config <路径> 配置文件路径
-d, --dir <路径> Terraform项目目录
-V, --version 打印版本信息
-h, --help 打印帮助信息
使用Docker
使用Docker时,您可以像这样运行tfmcp命令:
# 以MCP服务器模式运行(默认)
docker run -it tfmcp
# 带有特定命令和选项运行
docker run -it tfmcp analyze --dir /app/example
# 挂载您的Terraform项目目录
docker run -it -v /path/to/your/terraform:/app/terraform tfmcp --dir /app/terraform
# 设置环境变量
docker run -it -e TFMCP_LOG_LEVEL=debug tfmcp
与Claude Desktop集成
要使用tfmcp与Claude Desktop集成:
-
如果尚未安装,请安装tfmcp:
cargo install tfmcp或者,您可以使用Docker:
docker build -t tfmcp . -
找到已安装的tfmcp可执行文件的路径:
which tfmcp -
将以下配置添加到
~/Library/Application\ Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tfmcp": {
"command": "/path/to/your/tfmcp", // 替换为步骤2中的实际路径
"args": ["mcp"],
"env": {
"HOME": "/Users/yourusername", // 替换为您的用户名
"PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
"TERRAFORM_DIR": "/path/to/your/terraform/project" // 可选:指定您的Terraform项目
}
}
}
}
如果您使用Docker与Claude Desktop集成,可以像这样设置配置:
{
"mcpServers": {
"tfmcp": {
"command": "docker",
"args": ["run", "--rm", "-v", "/path/to/your/terraform:/app/terraform", "tfmcp", "mcp"],
"env": {
"TERRAFORM_DIR": "/app/terraform"
}
}
}
}
-
重新启动Claude Desktop并启用tfmcp工具。
-
如果
~/terraform目录不存在,tfmcp将自动创建一个示例Terraform项目,确保Claude可以立即开始使用Terraform。该示例项目基于本仓库example/demo目录中包含的示例。
日志和故障排除
tfmcp服务器的日志位于:
~/Library/Logs/Claude/mcp-server-tfmcp.log
常见问题和解决方案:
- Claude无法连接到服务器:确保配置中tfmcp可执行文件的路径正确
- Terraform项目问题:如果未找到Terraform项目,tfmcp将自动创建一个示例项目
- 方法未找到错误:MCP协议支持
resources/list和prompts/list方法 - Docker问题:如果使用Docker,请确保容器具有正确的卷挂载和权限
环境变量
核心配置
TERRAFORM_DIR:设置此值以指定自定义Terraform项目目录。如果未设置,tfmcp将使用命令行参数、配置文件或回退到~/terraform中的目录。您也可以使用set_terraform_directory工具在运行时更改项目目录。TFMCP_LOG_LEVEL:设置为debug、info、warn或error以控制日志详细程度。TFMCP_DEMO_MODE:设置为true以启用带有额外安全功能的演示模式。
安全配置
TFMCP_ALLOW_DANGEROUS_OPS:设置为true以启用apply/destroy操作(默认:false)TFMCP_ALLOW_AUTO_APPROVE:设置为true以启用危险操作的自动批准(默认:false)TFMCP_MAX_RESOURCES:设置可管理的最大资源数量(默认:50)TFMCP_AUDIT_ENABLED:设置为false以禁用审计日志(默认:true)TFMCP_AUDIT_LOG_FILE:自定义审计日志文件路径(默认:~/.tfmcp/audit.log)TFMCP_AUDIT_LOG_SENSITIVE:设置为true以在审计日志中包含敏感信息(默认:false)
安全注意事项
tfmcp包含适用于生产环境的安全功能:
🔒 内置安全功能
- 访问控制:自动阻止生产/敏感文件模式
- 操作限制:默认禁用危险操作(
apply/destroy) - 资源限制:可配置的最大资源数量保护
- 审计日志:带时间戳和用户识别的完整操作跟踪
- 目录验证:项目目录的安全策略执行
🛡️ 安全最佳实践
- 默认安全:默认禁用
apply/destroy操作 - 仅在需要时显式启用 - 审查计划:始终在应用前审查Terraform计划,特别是AI生成的计划
- IAM边界:在云环境中使用适当的IAM权限和角色边界
- 审计监控:定期审查
~/.tfmcp/audit.log中的审计日志 - 文件模式:内置保护,防止访问
prod*、production*和secret*模式 - Docker安全:使用容器时,仔细考虑卷挂载和暴露的数据
⚙️ 生产环境配置
# 推荐的生产设置
export TFMCP_ALLOW_DANGEROUS_OPS=false # 为安全起见保持禁用
export TFMCP_ALLOW_AUTO_APPROVE=false # 需要手动批准
export TFMCP_MAX_RESOURCES=10 # 限制资源范围
export TFMCP_AUDIT_ENABLED=true # 启用审计日志
export TFMCP_AUDIT_LOG_SENSITIVE=false # 不记录敏感数据
贡献
欢迎贡献!请随时提交Pull Request。
- 分支仓库
- 创建您的功能分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开Pull Request
路线图
以下是tfmcp计划改进和未来功能:
已完成
-
基础Terraform集成
与Terraform CLI的核心集成,用于分析和执行操作。 -
MCP服务器实现
模型上下文协议服务器的初始实现,用于AI助手。 -
自动项目创建
添加了在需要时自动创建示例Terraform项目的功能。 -
Claude Desktop集成
支持与Claude Desktop的无缝集成。 -
核心MCP方法
实现了关键的MCP方法,包括resources/list和prompts/list。 -
错误处理改进
更好的错误处理和恢复机制,确保稳健运行。 -
动态项目目录切换
添加了无需重启服务即可切换活动Terraform项目目录的功能。 -
Crates.io发布
将包发布到Crates.io,可通过Cargo轻松安装。 -
Docker支持
添加了容器化支持,便于部署和跨平台兼容。 -
安全增强
包含适用于生产环境的安全系统,具有可配置策略、审计日志、访问控制和生产级安全功能。
进行中
-
增强Terraform分析
实现对Terraform配置、计划和状态文件的深度解析和分析。 -
全面测试框架
扩展测试覆盖率,包括与真实Terraform配置的集成测试。
计划
-
多环境支持
添加管理多个Terraform环境、工作空间和模块的支持。 -
扩展MCP协议支持
实现额外的MCP方法,以实现与AI助手的更丰富集成。 -
性能优化
优化资源使用和响应时间,以支持大型Terraform项目。 -
成本估算
集成云提供商定价API,为Terraform计划提供成本估算。 -
交互式TUI
开发基于终端的用户界面,便于本地使用和调试。 -
与其他AI平台集成
支持其他AI助手和平台,而不仅仅是Claude。 -
插件系统
开发插件架构,允许扩展核心功能。
许可证
本项目根据MIT许可证授权 - 详细内容请参阅LICENSE文件。