mcpField
T
tfmcp: Terraform Model Context Protocol Tool

tfmcp: Terraform Model Context Protocol Tool

本地服务
crates.io云与基础设施3724 周前更新

关于 tfmcp: Terraform Model Context Protocol Tool

tfmcp 是一个通过 MCP 在本地运行 Terraform 工作流的命令行工具,供 AI 助手检查项目、审阅已保存的计划并执行变更。它强调计划审阅与应用权限检查,并支持注册表与 HCP Terraform / TFE 工具。

主要功能

  1. 01读取配置并检测项目入口
  2. 02保存计划并通过 plan_id 审阅后应用
  3. 03应用与销毁均需显式权限确认
  4. 04输出脱敏与状态验证
  5. 05支持 stdio 与 Streamable HTTP 传输

适用场景

  1. 01让 AI 助手审阅 Terraform 计划并生成 PR 摘要
  2. 02在受控权限下应用已审阅的基础设施变更
  3. 03检查状态安全性与漂移风险

MCP 相关

tfmcp 是 MCP 服务,向 MCP 客户端暴露 Terraform 相关的工具、资源与提示词,涵盖计划、应用、状态与分析等操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"tfmcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

tfmcp:Terraform 模型上下文协议工具

Trust Score

⚠️ 此项目包含可用于生产环境的安全功能,但仍在积极开发中。虽然安全系统提供了可靠的保护,请在生产环境中仔细检查所有操作。⚠️

tfmcp 通过模型上下文协议(MCP)运行本地 Terraform 工作流。 它可帮助 AI 助手检查项目、准备执行、审查已保存的计划、 应用同一计划并检查结果。注册表和 HCP/TFE 工具可支持这些本地工作流。

🎮 演示

观看 Claude Desktop 中的 tfmcp 实际演示:

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:

  1. 如果尚未安装,请先安装 tfmcp:

    cargo install tfmcp
    

    也可以使用 Docker:

    docker build -t tfmcp .
    
  2. 查找已安装的 tfmcp 可执行文件的路径:

    which tfmcp
    
  3. 将以下配置添加到 ~/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"
      }
    }
  }
}
  1. 重启 Claude Desktop 并启用 tfmcp 工具。

  2. 如果 ~/terraform 不存在,tfmcp 会自动在此处创建示例 Terraform 项目,确保 Claude 可以立即开始使用 Terraform。此示例项目基于本仓库 example/demo 目录中的示例。

本地 plan/apply 工作流

从 tfmcp --dir /path/to/project mcp --toolsets terraform 开始。 默认工具集支持执行准备和计划审查;terraform 工具集还提供初始化和受控的本地写入操作。

  1. 调用 prepare_terraform_change 检查所选目录、Terraform 版本、工作区、后端、配置有效性和状态可读性。ready 表示检查的前置条件均已通过;输入变量和提供程序凭据将在实际计划中检查。需要时,使用 init_terraform 初始化,然后再次执行准备检查。
  2. 调用 get_terraform_plan 并传入 {},或例如传入 {"var_files":["environment.tfvars"]}。结果包含 plan_id、 target、created_at、has_changes,以及经过脱敏的 Terraform JSON plan 字符串。 使用 replace 指定资源替换地址,或使用 refresh_only:true 预览偏差而不修改状态。
  3. 将返回的 plan_id 传给 analyze_plan、review_terraform_plan 和 summarize_plan_for_pr。这些调用会复用已保存的结果。省略 ID 会创建新计划。审核决定仅供参考,不构成授权应用更改。
  4. 审核并批准更改后,调用 apply_terraform 并传入 {"plan_id":"<returned ID>","auto_approve":true}。服务器必须已配置 TFMCP_ALLOW_DANGEROUS_OPS=true 和 TFMCP_ALLOW_AUTO_APPROVE=true。已保存的计划决定要应用的更改,即使之后配置文件已被编辑也不例外。
  5. 检查应用结果中的 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_planNEW 分析计划并提供风险评分和建议
apply_terraform应用已审核的已保存计划 ID,并验证状态中的资源地址
destroy_terraform应用已审核的已保存销毁计划,并明确授予删除权限
validate_terraform验证配置语法
validate_terraform_detailed提供包含指南的详细验证
get_terraform_state显示当前状态
analyze_stateNEW 分析状态并检测漂移
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_workspaceNEW 管理工作区(列出、显示、新建、选择、删除)
terraform_importNEW 导入现有资源
terraform_taintNEW 将资源标记为污点或取消污点
terraform_refreshNEW 刷新状态
代码与输出(v0.1.9)
工具描述
terraform_fmtNEW 格式化代码
terraform_graphNEW 生成依赖关系图
terraform_output获取输出值,并对敏感值进行脱敏,包括命名查询
terraform_providersNEW 获取包含锁文件的 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-guideTerraform 风格指南
terraform://module-development / /terraform/module-developmentTerraform 模块开发指南
terraform://best-practicestfmcp 安全和运维最佳实践
/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 安装设置为 true
  • TFE_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 接受的 HTTP Host / 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。

  1. Fork 此仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 每次克隆后启用由仓库管理的快速 pre-commit 检查:
    git config core.hooksPath .githooks
    
  4. 推送前运行完整的正确性检查:
    cargo fmt --all -- --check
    cargo clippy --all-targets --all-features -- -D warnings
    cargo test --locked --all-targets --all-features
    
  5. 提交更改(git commit -m 'Add some amazing feature')
  6. 推送到分支(git push origin feature/amazing-feature)
  7. 发起 Pull Request

pre-commit 钩子始终检查已暂存文件的空白字符,并根据受影响的文件有条件地运行 cargo fmt、actionlint、Registry 元数据验证、模块耦合检查和重复代码检查。可选的架构工具 在 Release.sh 中仍是必需项;安装 cargo-coupling 和 similarity-rs,即可在开发时 获得同样的快速反馈。

发布流程

通过本地发布检查后,手动进行发布:

  1. 确认 Cargo.toml、Cargo.lock、server.json、Dockerfile、README 和 CHANGELOG.md 使用目标版本。
  2. 运行本地发布检查:./Release.sh v0.2.4。
  3. 检查 CHANGELOG.md 和生成的软件包。
  4. 提交并推送 main,然后确认 CI 已通过该确切提交。
  5. 从干净的提交开始,使用 ./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 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。