关于 tfmcp: Terraform Model Context Protocol Tool
tfmcp 是一个通过 MCP 在本地运行 Terraform 工作流的命令行工具,供 AI 助手检查项目、审阅已保存的计划并执行变更。它强调计划审阅与应用权限检查,并支持注册表与 HCP Terraform / TFE 工具。
主要功能
- 01读取配置并检测项目入口
- 02保存计划并通过 plan_id 审阅后应用
- 03应用与销毁均需显式权限确认
- 04输出脱敏与状态验证
- 05支持 stdio 与 Streamable HTTP 传输
适用场景
- 01让 AI 助手审阅 Terraform 计划并生成 PR 摘要
- 02在受控权限下应用已审阅的基础设施变更
- 03检查状态安全性与漂移风险
MCP 相关
tfmcp 是 MCP 服务,向 MCP 客户端暴露 Terraform 相关的工具、资源与提示词,涵盖计划、应用、状态与分析等操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
tfmcp:Terraform 模型上下文协议工具
⚠️ 此项目包含可用于生产环境的安全功能,但仍在积极开发中。虽然安全系统提供了可靠的保护,请在生产环境中仔细检查所有操作。⚠️
tfmcp 通过模型上下文协议(MCP)运行本地 Terraform 工作流。 它可帮助 AI 助手检查项目、准备执行、审查已保存的计划、 应用同一计划并检查结果。注册表和 HCP/TFE 工具可支持这些本地工作流。
🎮 演示
观看 Claude Desktop 中的 tfmcp 实际演示:

- 读取 Terraform 配置文件
- 分析 Terraform 计划输出
- 应用 Terraform 配置
- 管理 Terraform 状态
- 创建和修改 Terraform 配置
🎉 当前版本
tfmcp v0.2.4 是当前版本:
cargo install tfmcp --version 0.2.4
v0.2.4 有哪些新内容
- 使用与 apply 相同的已保存计划和权限检查来审查销毁计划
- 列出和处置已保存的计划,以释放 64 个计划的容量
- 保留 apply 结果、失败或未知状态的结果以及恢复指南
- 对完整输出和指定名称的输出查询进行敏感信息脱敏
- RMCP 3.5.0,更新依赖项和镜像,并保留 Rust 1.88 MSRV
功能
| 领域 | 功能 |
|---|---|
| 本地 Terraform | 验证、格式化、计划/应用工作流、导入指南、输出、提供程序、依赖关系图、仅刷新流程和受保护的状态操作 |
| 仓库智能 | 入口点/项目检测、配置分析、质量检查、安全检查、模块健康状况、计划审查,以及漂移/状态安全检查 |
| 注册表 | 公有/私有提供程序、模块和策略查询,支持 HashiCorp 兼容别名 |
| HCP Terraform / TFE | 组织、项目、工作区、运行、计划、应用、变量、策略集、变量集、标签、堆栈和受控操作 |
| MCP 部署 | stdio 和 Streamable HTTP、MCP 2026-07-28 发现、结构化工具结果、缓存提示、工具集、资源、健康状态/指标、会话、Host/Origin 验证、速率限制、TLS 配置和审计日志 |
| 打包 | Cargo、Docker/OCI 元数据、MCP Registry 元数据、Rust Edition 2024 |
安装
从源代码安装
# Clone the repository
git clone https://github.com/nwiizo/tfmcp
cd tfmcp
# Build and install
cargo install --path .
从 Crates.io 安装
cargo install tfmcp
使用 Docker
# Clone the repository
git clone https://github.com/nwiizo/tfmcp
cd tfmcp
# Build the Docker image
docker build -t tfmcp .
# Run the container
docker run -it tfmcp
要求
- Rust 1.88.0+(Rust Edition 2024)
- 已安装 Terraform CLI 1.15.8,并可在
PATH中使用 - 兼容 MCP 的 AI 客户端(例如 Claude Desktop 或 Codex)
- Docker(可选,用于容器化部署)
用法
$ tfmcp --help
✨ A CLI tool to manage Terraform configurations and operate Terraform through the Model Context Protocol (MCP).
Usage: tfmcp [OPTIONS] [COMMAND]
Commands:
mcp Launch tfmcp as an MCP server
analyze Analyze Terraform configurations
help Print this message or the help of the given subcommand(s)
Options:
-c, --config <PATH> Path to the configuration file
-d, --dir <PATH> Terraform project directory
-V, --version Print version
-h, --help Print help
使用 Docker
使用 Docker 时,可以这样运行 tfmcp 命令:
# Run as MCP server (default)
docker run -it tfmcp
# Run with specific command and options
docker run -it tfmcp analyze --dir /app/example
# Mount your Terraform project directory
docker run -it -v /path/to/your/terraform:/app/terraform tfmcp --dir /app/terraform
# Set environment variables
docker run -it -e TFMCP_LOG_LEVEL=debug tfmcp
与 Claude Desktop 集成
要在 Claude Desktop 中使用 tfmcp:
-
如果尚未安装,请先安装 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", // Replace with the actual path from step 2
"args": ["mcp"],
"env": {
"HOME": "/Users/yourusername", // Replace with your username
"PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
"TERRAFORM_DIR": "/path/to/your/terraform/project" // Optional: specify your Terraform project
}
}
}
}
如果在 Claude Desktop 中使用 Docker,可以按如下方式设置配置:
{
"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目录中的示例。
本地 plan/apply 工作流
从 tfmcp --dir /path/to/project mcp --toolsets terraform 开始。
默认工具集支持执行准备和计划审查;terraform
工具集还提供初始化和受控的本地写入操作。
- 调用
prepare_terraform_change检查所选目录、Terraform 版本、工作区、后端、配置有效性和状态可读性。ready表示检查的前置条件均已通过;输入变量和提供程序凭据将在实际计划中检查。需要时,使用init_terraform初始化,然后再次执行准备检查。 - 调用
get_terraform_plan并传入{},或例如传入{"var_files":["environment.tfvars"]}。结果包含plan_id、target、created_at、has_changes,以及经过脱敏的 Terraform JSONplan字符串。 使用replace指定资源替换地址,或使用refresh_only:true预览偏差而不修改状态。 - 将返回的
plan_id传给analyze_plan、review_terraform_plan和summarize_plan_for_pr。这些调用会复用已保存的结果。省略 ID 会创建新计划。审核决定仅供参考,不构成授权应用更改。 - 审核并批准更改后,调用
apply_terraform并传入{"plan_id":"<returned ID>","auto_approve":true}。服务器必须已配置TFMCP_ALLOW_DANGEROUS_OPS=true和TFMCP_ALLOW_AUTO_APPROVE=true。已保存的计划决定要应用的更改,即使之后配置文件已被编辑也不例外。 - 检查应用结果中的
success、status、exit_code、diagnostics、state_verified和recovery.next_steps。使用get_terraform_plan({"plan_id":"<returned ID>"})获取计划的最终状态和保留的apply_result。失败或超时后,请检查状态并创建新计划;已尝试的 ID 不能再次应用。
从 v0.2.2 迁移:apply_terraform 需要 plan_id;仅提供
auto_approve 的调用现在会返回说明性错误。批准操作在调用前由客户端完成,因为 Terraform 不会接收交互式输入。
对于已审核的拆除操作,请使用 get_terraform_plan({"destroy":true}) 创建计划,
审核其 plan_id,然后将该 ID 和
auto_approve:true 传给 destroy_terraform。除了两项应用权限外,服务器还必须配置 TFMCP_DELETE_ENABLED=true。将拆除计划传给 apply_terraform 也会强制执行相同权限。destroy 不能与 refresh_only 或 replace 同时使用。从 v0.2.3 迁移:destroy_terraform 现在需要已保存的拆除计划;它不再创建未经审核的计划,也不再等待提示。
使用 list_terraform_plans 查找保留的 ID、目标和状态。
使用 discard_terraform_plan({"plan_id":"<ID>"}) 删除不需要的计划的临时文件并释放容量。丢弃操作不会更改基础设施、取消操作或回滚应用;删除失败或结果未知的记录前,请先检查相关情况。这些工具在默认工具集和 Terraform 工具集中均可用。
已保存的计划使用私有临时目录,并绑定到项目、工作区、已初始化的后端元数据、Terraform 版本和提供程序锁文件。计划 ID 仅在当前服务器进程中有效,最多保留 64 个计划。服务器正常关闭时会删除临时文件。failed 表示 Terraform 返回了非零退出代码,且可能已应用部分更改。outcome_unknown 表示未获得明确的退出结果,包括超时或取消。这两种情况都不允许重新应用同一计划,并会提供恢复指引:确认操作已停止,检查记录的目标和实际资源,解决原因,然后生成并审核新计划。不会执行回滚或自动重试。如果请求在结果得以保留前被取消,apply_result 将为 null。状态验证会检查资源地址,但不会检查所有属性值或输出值。
获取状态时会等待正在进行的操作完成;此版本不提供实时进度和重启恢复。
MCP 工具
tfmcp 为 AI 助手提供以下 MCP 工具:
Terraform 核心操作
| 工具 | 描述 |
|---|---|
init_terraform | 初始化 Terraform 工作目录 |
get_terraform_plan | 生成已保存的计划,或按计划 ID 获取其脱敏结果和状态 |
list_terraform_plans | 列出已保存的计划 ID、目标、状态和销毁标记 |
discard_terraform_plan | 移除不再需要的已保存计划并释放保留容量 |
analyze_plan | NEW 分析计划并提供风险评分和建议 |
apply_terraform | 应用已审核的已保存计划 ID,并验证状态中的资源地址 |
destroy_terraform | 应用已审核的已保存销毁计划,并明确授予删除权限 |
validate_terraform | 验证配置语法 |
validate_terraform_detailed | 提供包含指南的详细验证 |
get_terraform_state | 显示当前状态 |
analyze_state | NEW 分析状态并检测漂移 |
review_terraform_plan | 审核计划的风险、阻碍项、破坏性变更和建议 |
summarize_plan_for_pr | 生成用于 PR 评论的 Markdown 计划摘要 |
run_terraform_quality_checks | 运行适用于 CI 的验证、模块健康度、指南和锁文件检查 |
inspect_state_safety | 检查状态可读性、漂移风险、锁文件状态和阻碍项 |
detect_drift_candidates | 根据可读状态检测可能的漂移,不修改基础设施 |
prepare_terraform_change | 生成阻碍项、警告和建议的变更顺序 |
list_terraform_resources | 列出所有受管理的资源 |
set_terraform_directory | 更改当前项目目录 |
工作区与状态(v0.1.9)
| 工具 | 描述 |
|---|---|
terraform_workspace | NEW 管理工作区(列出、显示、新建、选择、删除) |
terraform_import | NEW 导入现有资源 |
terraform_taint | NEW 将资源标记为污点或取消污点 |
terraform_refresh | NEW 刷新状态 |
代码与输出(v0.1.9)
| 工具 | 描述 |
|---|---|
terraform_fmt | NEW 格式化代码 |
terraform_graph | NEW 生成依赖关系图 |
terraform_output | 获取输出值,并对敏感值进行脱敏,包括命名查询 |
terraform_providers | NEW 获取包含锁文件的 Provider 信息 |
check_provider_lockfile | 检查 .terraform.lock.hcl,确保 Provider 选择可复现 |
分析与安全
| 工具 | 描述 |
|---|---|
analyze_terraform | 分析配置 |
inspect_terraform_project | 检查本地 Terraform 目录、模块和可能的入口点 |
detect_terraform_entrypoints | 检测可能的根模块入口点 |
analyze_module_health | 分析模块健康度并提供内聚性/耦合度指标 |
get_resource_dependency_graph | 可视化资源依赖关系 |
suggest_module_refactoring | 提供重构建议 |
get_security_status | 执行安全扫描并检测密钥 |
Registry
| 工具 | 描述 |
|---|---|
search_providers | 搜索 Provider(兼容 HashiCorp 的别名) |
search_terraform_providers | 搜索 Provider |
get_provider_details | 获取 Provider 详情(兼容 HashiCorp 的别名) |
get_provider_info | 获取 Provider 详情 |
get_provider_docs | 获取 Provider 文档 |
get_provider_capabilities | 获取 Provider 资源、数据源、函数和指南 |
search_modules | 搜索模块(兼容 HashiCorp 的别名) |
search_terraform_modules | 搜索模块 |
get_module_details | 获取模块详情 |
get_latest_module_version | 获取最新模块版本 |
get_latest_provider_version | 获取最新 Provider 版本 |
search_policies | 搜索 Sentinel/OPA 策略库 |
get_policy_details | 获取策略库详情 |
HCP Terraform / Terraform Enterprise(只读)
| 工具 | 描述 |
|---|---|
get_token_permissions | 检查已配置的令牌账户详情,不暴露令牌 |
list_terraform_orgs | 列出可见的组织 |
list_terraform_projects | 列出组织中的项目 |
list_workspaces | 列出组织中的工作区 |
get_workspace_details | 按 ID 或组织/名称获取工作区详情 |
list_runs | 列出工作区运行记录 |
get_run_details | 获取运行详情 |
get_plan_details | 获取计划详情 |
get_plan_logs | 获取计划日志 |
get_plan_json_output | 获取 Terraform JSON 计划输出 |
get_apply_details | 获取应用详情 |
get_apply_logs | 获取应用日志 |
get_workspace_policy_sets | 获取附加到工作区的策略集 |
list_workspace_variables | 列出工作区变量 |
list_variable_sets | 列出组织变量集 |
read_workspace_tags | 读取工作区标签 |
list_stacks | 列出 Terraform 堆栈 |
get_stack_details | 获取 Terraform 堆栈详情 |
search_private_modules | 搜索私有注册表模块 |
get_private_module_details | 获取私有注册表模块详情 |
search_private_providers | 搜索私有注册表提供程序 |
get_private_provider_details | 获取私有注册表提供程序详情 |
HCP Terraform / Terraform Enterprise(受限操作)
| 工具 | 描述 |
|---|---|
create_workspace | 在 ENABLE_TF_OPERATIONS=true 时创建工作区 |
update_workspace | 在 ENABLE_TF_OPERATIONS=true 时更新工作区设置 |
delete_workspace_safely | 在 ENABLE_TF_OPERATIONS=true 时使用安全删除工作区操作 |
create_run | 在 ENABLE_TF_OPERATIONS=true 时将运行加入队列 |
action_run | 在 ENABLE_TF_OPERATIONS=true 时应用、丢弃、取消、强制取消或强制执行运行 |
create_workspace_variable | 在 ENABLE_TF_OPERATIONS=true 时创建工作区变量 |
update_workspace_variable | 在 ENABLE_TF_OPERATIONS=true 时更新工作区变量 |
attach_policy_set_to_workspace | 在 ENABLE_TF_OPERATIONS=true 时将策略集附加到工作区 |
create_variable_set | 在 ENABLE_TF_OPERATIONS=true 时创建变量集 |
create_variable_in_variable_set | 在 ENABLE_TF_OPERATIONS=true 时在变量集中创建变量 |
delete_variable_in_variable_set | 在 ENABLE_TF_OPERATIONS=true 时从变量集中删除变量 |
attach_variable_set_to_workspaces | 在 ENABLE_TF_OPERATIONS=true 时将变量集附加到工作区 |
detach_variable_set_from_workspaces | 在 ENABLE_TF_OPERATIONS=true 时从工作区分离变量集 |
create_workspace_tags | 在 ENABLE_TF_OPERATIONS=true 时创建或附加工作区标签 |
MCP 资源
| URI | 描述 |
|---|---|
terraform://style-guide / /terraform/style-guide | Terraform 风格指南 |
terraform://module-development / /terraform/module-development | Terraform 模块开发指南 |
terraform://best-practices | tfmcp 安全和运维最佳实践 |
/terraform/providers/{namespace}/name/{name}/version/{version} | 与 HashiCorp 兼容的提供程序文档模板 |
日志和故障排除
tfmcp 服务日志位于:
~/Library/Logs/Claude/mcp-server-tfmcp.log
常见问题及解决方案:
- Claude 无法连接到服务:确保配置中的 tfmcp 可执行文件路径正确
- Terraform 项目问题:如果未找到 Terraform 项目,tfmcp 会自动创建一个示例项目
- 找不到方法错误:tfmcp 会公布并实现 tools/list、resources/list、resources/templates/list 和 resources/read
- Docker 问题:如果使用 Docker,请确保容器具有正确的卷挂载和权限
环境变量
核心配置
TERRAFORM_DIR:设置此项以指定自定义 Terraform 项目目录。如果未设置,tfmcp 将使用命令行参数或配置文件提供的目录,否则回退到~/terraform。你也可以在运行时使用set_terraform_directory工具更改项目目录。TFMCP_LOG_LEVEL:设置为debug、info、warn或error,以控制日志详细程度。TFMCP_DEMO_MODE:设置为true,以启用具有额外安全功能的演示模式。TFMCP_COMMAND_TIMEOUT_SECONDS:init、plan、已保存计划的 apply、验证和执行准备的正数超时秒数(默认值:900)。超时的写入操作可能已部分完成;重试前请检查状态。
安全配置
ENABLE_TF_OPERATIONS:设置为true,以启用受门控的 HCP Terraform / Terraform Enterprise 写入工具(默认值:false)TFMCP_ALLOW_DANGEROUS_OPS:设置为true,以启用 apply/destroy 操作(默认值:false)TFMCP_DELETE_ENABLED:设置为true,以应用已保存的 destroy 计划;还必须具备两项 apply 权限(默认值: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)
HCP Terraform / Terraform Enterprise
TFE_ADDRESS:HCP Terraform 或 Terraform Enterprise 的基础 URL(默认值:https://app.terraform.io)TFE_TOKEN:HCP Terraform / Terraform Enterprise 工具的 API 令牌TFE_SKIP_TLS_VERIFY:仅对使用自定义 TLS 的可信私有 TFE 安装设置为trueTFE_MAX_RESPONSE_BYTES:截断前返回给 MCP 客户端的 HCP/TFE 响应字节数上限(默认值:65536)
HCP/TFE 写入工具默认处于禁用状态,除非设置
ENABLE_TF_OPERATIONS=true,否则会以关闭方式拒绝操作。default 工具集会隐藏写入工具;使用 --toolsets operations 或 --toolsets all 可将其显示出来。
MCP 传输
TRANSPORT_MODE:MCP 传输模式。本地桌面客户端使用stdio(默认),远程/CI 客户端使用streamable-http。TRANSPORT_HOST:流式 HTTP 模式的 HTTP 绑定主机(默认:127.0.0.1)。TRANSPORT_PORT:流式 HTTP 模式的 HTTP 绑定端口(默认:8080)。MCP_ENDPOINT:流式 HTTP MCP 端点路径(默认:/mcp)。MCP_HEALTH_ENDPOINT:健康检查端点路径(默认:/health)。MCP_METRICS_ENDPOINT:兼容 OTel 的 JSON 指标快照端点路径(默认:/metrics)。MCP_SESSION_MODE:普通 MCP 客户端使用stateful,CI 风格的 JSON 响应使用stateless(默认:stateful)。仅适用于协商的协议版本早于2026-07-28的客户端;该规范已移除会话,因此此类请求始终以无状态方式处理。MCP_HEARTBEAT_INTERVAL:流式 HTTP SSE 保活间隔,单位为秒。设为0可禁用(默认:15)。MCP_CORS_MODE:响应 CORS 策略:strict、development或disabled(默认:strict)。所有模式下均会验证 MCP 请求的 Origin。MCP_ALLOWED_ORIGINS:以逗号分隔的允许访问的浏览器来源。默认使用环回来源。MCP_ALLOWED_HOSTS:以逗号分隔的流式 HTTP 接受的 HTTPHost/ authority 值。未设置时,使用 rmcp 仅允许环回地址的默认值。MCP_ORGANIZATION_ALLOWLIST:以逗号分隔的 HCP/TFE 组织名称,远程请求可访问这些组织。MCP_RATE_LIMIT_GLOBAL:整个服务每分钟允许的最大 HTTP 请求数(设为0或不设置可禁用)。MCP_RATE_LIMIT_SESSION:每个Mcp-Session-Id每分钟允许的最大 HTTP 请求数(设为0或不设置可禁用)。协商2026-07-28的客户端不会发送会话标头,因此仅受MCP_RATE_LIMIT_GLOBAL限制。MCP_TLS_CERT_FILE:用于 HTTPS 流式 HTTP 的 PEM 证书文件。MCP_TLS_KEY_FILE:用于 HTTPS 流式 HTTP 的 PEM 私钥文件。
HCP/TFE 凭据和地址属于服务配置。tfmcp 有意不接受请求范围内的 TFE_TOKEN、Authorization 或 TFE_ADDRESS 覆盖值用于下游透传。启用组织允许列表时,账户范围和仅使用 ID 的 HCP/TFE 请求会默认拒绝,因为无法在本地验证其所属组织。
流式 HTTP 启动示例:
TRANSPORT_MODE=streamable-http \
TRANSPORT_HOST=127.0.0.1 \
TRANSPORT_PORT=8080 \
tfmcp mcp --toolsets default
MCP 端点为 http://127.0.0.1:8080/mcp,健康检查端点为
http://127.0.0.1:8080/health,指标端点为
http://127.0.0.1:8080/metrics。
安全注意事项
tfmcp 包含全面的安全功能,旨在满足生产环境使用需求:
🔒 内置安全功能
- 访问控制:自动阻止与生产环境/敏感文件相关的模式
- 操作限制:默认禁用危险操作(apply/destroy)
- 资源限制:可配置的最大资源数量保护
- 审计日志:完整记录操作、时间戳和用户身份
- 目录验证:对项目目录执行安全策略
🛡️ 安全最佳实践
- 默认安全:默认禁用 apply/destroy 操作,仅在需要时显式启用
- 检查计划:应用前务必检查 Terraform 计划,尤其是 AI 生成的计划
- IAM 边界:在云环境中使用适当的 IAM 权限和角色边界
- 审计监控:定期检查
~/.tfmcp/audit.log中的审计日志 - 文件模式:内置保护机制,防止访问符合
prod*、production*和secret*模式的文件 - Docker 安全:使用容器时,仔细考虑卷挂载和暴露的数据
⚙️ 生产环境配置
# Recommended production settings
export TFMCP_ALLOW_DANGEROUS_OPS=false # Keep disabled for safety
export TFMCP_ALLOW_AUTO_APPROVE=false # Require manual approval
export TFMCP_MAX_RESOURCES=10 # Limit resource scope
export TFMCP_AUDIT_ENABLED=true # Enable audit logging
export TFMCP_AUDIT_LOG_SENSITIVE=false # Don't log sensitive data
贡献
欢迎贡献!欢迎提交 Pull Request。
- Fork 此仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 每次克隆后启用由仓库管理的快速 pre-commit 检查:
git config core.hooksPath .githooks - 推送前运行完整的正确性检查:
cargo fmt --all -- --check cargo clippy --all-targets --all-features -- -D warnings cargo test --locked --all-targets --all-features - 提交更改(
git commit -m 'Add some amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 发起 Pull Request
pre-commit 钩子始终检查已暂存文件的空白字符,并根据受影响的文件有条件地运行
cargo fmt、actionlint、Registry 元数据验证、模块耦合检查和重复代码检查。可选的架构工具
在 Release.sh 中仍是必需项;安装 cargo-coupling 和 similarity-rs,即可在开发时
获得同样的快速反馈。
发布流程
通过本地发布检查后,手动进行发布:
- 确认
Cargo.toml、Cargo.lock、server.json、Dockerfile、README 和CHANGELOG.md使用目标版本。 - 运行本地发布检查:
./Release.sh v0.2.4。 - 检查
CHANGELOG.md和生成的软件包。 - 提交并推送
main,然后确认 CI 已通过该确切提交。 - 从干净的提交开始,使用
./Release.sh v0.2.4 --publish发布。
路线图
以下是 tfmcp 计划改进的内容和未来功能:
合并后的 v0.2.1 范围和未来工作,请参阅 docs/releases/v0.2-roadmap.md。发布变更 记录在 CHANGELOG.md 中。
本地开发要求 将当前实现与 Terraform 文档以及本地的 Terraform in Depth / Terraform at Scale 资料进行对比,并列出 未来工作的优先事项和验收标准。
如需通过真实的本地 Web 应用进行实践检查,请参阅 本地应用示例。它会验证已保存计划的部署、HTTP 响应、实际 Terraform 参数、审计记录和拆除流程,并保留报告和日志。
已完成
-
Terraform 基础集成 集成 Terraform CLI,用于分析和执行操作。
-
MCP 服务实现 初步实现面向 AI 助手的模型上下文协议服务。
-
自动创建项目 添加了在需要时自动创建 Terraform 示例项目的功能。
-
Claude Desktop 集成 支持与 Claude Desktop 无缝集成。
-
核心 MCP 方法 实现了必需的 MCP 方法,包括 tools/list、resources/list、resources/templates/list 和 resources/read。
-
错误处理改进 改进了错误处理和恢复机制,确保稳定运行。
-
动态切换项目目录 添加了无需重启服务即可更改当前 Terraform 项目目录的功能。
-
发布到 Crates.io 将软件包发布到 Crates.io,方便通过 Cargo 安装。
-
Docker 支持 添加了容器化支持,便于部署并兼容多个平台。
-
安全性增强 提供全面的安全系统,包含可配置的策略、审计日志、访问控制和适用于生产环境的安全功能。
-
模块健康度分析(v0.1.6) 采用 IaC 白盒分析方法,提供内聚度和耦合度指标、健康度评分及重构建议。
-
资源依赖关系图(v0.1.6) 可视化资源关系,包括显式和隐式依赖关系。
-
模块注册表集成(v0.1.6) 搜索并浏览注册表中的 Terraform 模块。
-
全面的测试框架 包含 85 项以上测试,其中包括使用真实 Terraform 配置的集成测试。
-
迁移至 RMCP SDK(v0.1.8) 迁移至官方 RMCP SDK,并添加适当的工具注解,以更好地符合 MCP 规范。
-
Future Architect 指南(v0.1.8) 检查 Terraform 编码标准的符合情况,包括机密信息检测和变量质量验证。
进行中
- 多环境支持 添加对管理多个 Terraform 环境、工作区和模块的支持。
计划中
-
扩展 MCP 协议支持 实现更多 MCP 方法和功能,以便与 AI 助手进行更丰富的集成。
-
性能优化 优化大型 Terraform 项目的资源使用和响应时间。
-
成本估算 集成云服务提供商的定价 API,为 Terraform 执行计划提供成本估算。
-
交互式 TUI 开发基于终端的用户界面,方便本地使用和调试。
-
集成其他 AI 平台 将支持范围扩展至 Claude 之外,支持其他 AI 助手和平台。
-
插件系统 开发插件架构,以便扩展核心功能。
许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。