这是一个集成AI助手与Terraform Cloud API的模型上下文协议(MCP)服务器,允许您通过自然对话管理您的基础设施。该服务器基于Pydantic模型构建,并围绕特定领域的模块进行组织,兼容任何支持MCP的平台,包括Claude、Claude Code CLI、Claude Desktop、Cursor、Copilot Studio等。
READ_ONLY_TOOLS=true在生产环境中达到最大安全性。uv 包管理器(推荐)或 pip要使用此MCP服务器,您需要一个Terraform Cloud(或Terraform Enterprise)API令牌:
在下面的配置步骤中,将此令牌作为TFC_TOKEN环境变量使用。
有关API令牌类型和权限的更多信息,请参阅HCP Terraform API 令牌文档。
TFC_TOKEN - Terraform Cloud API 令牌(必需)TFC_ADDRESS - Terraform Cloud/Enterprise 地址(可选,默认为 https://app.terraform.io)ENABLE_DELETE_TOOLS - 启用/禁用破坏性操作(可选,默认为 false)READ_ONLY_TOOLS - 启用仅读操作(可选,默认为 false)ENABLE_RAW_RESPONSE - 返回原始而非过滤的响应(可选,默认为 false)# 克隆仓库
git clone https://github.com/severity1/terraform-cloud-mcp.git
cd terraform-cloud-mcp
# 创建虚拟环境并激活它
uv venv
source .venv/bin/activate
# 安装包
uv pip install .
# 克隆仓库
git clone https://github.com/severity1/terraform-cloud-mcp.git
cd terraform-cloud-mcp
# 构建 Docker 镜像
docker build -t terraform-cloud-mcp:latest .
# 使用您的Terraform Cloud令牌添加到Claude Code
claude mcp add -e TFC_TOKEN=YOUR_TF_TOKEN -e ENABLE_DELETE_TOOLS=false -s user terraform-cloud-mcp -- "terraform-cloud-mcp"
# 要使用自托管的Terraform Enterprise实例:
# claude mcp add -e TFC_TOKEN=YOUR_TF_TOKEN -e TFC_ADDRESS=https://terraform.example.com -s user terraform-cloud-mcp -- "terraform-cloud-mcp"
# 要启用删除操作(谨慎使用):
# claude mcp add -e TFC_TOKEN=YOUR_TF_TOKEN -e ENABLE_DELETE_TOOLS=true -s user terraform-cloud-mcp -- "terraform-cloud-mcp"
创建一个claude_desktop_config.json配置文件:
{
"mcpServers": {
"terraform-cloud-mcp": {
"command": "/path/to/uv", # 通过运行`which uv`获取
"args": [
"--directory",
"/path/to/your/terraform-cloud-mcp", # 此项目的完整路径
"run",
"terraform-cloud-mcp"
],
"env": {
"TFC_TOKEN": "your_actual_token_here", # 替换为实际令牌
"TFC_ADDRESS": "https://app.terraform.io", # 可选,更改以使用自托管TFE
"ENABLE_DELETE_TOOLS": "false", # 设置为"true"以启用破坏性操作/工具
"READ_ONLY_TOOLS": "false" # 设置为"true"以仅启用只读操作/工具
}
}
}
}
{
"mcpServers": {
"terraform-cloud-mcp": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "TFC_TOKEN",
"-e", "TFC_ADDRESS",
"-e", "ENABLE_DELETE_TOOLS",
"-e", "READ_ONLY_TOOLS",
"terraform-cloud-mcp:latest"
],
"env": {
"TFC_TOKEN": "your_actual_token_here",
"TFC_ADDRESS": "https://app.terraform.io",
"ENABLE_DELETE_TOOLS": "false",
"READ_ONLY_TOOLS": "false"
}
}
}
}
将your_terraform_cloud_token替换为您实际的Terraform Cloud API令牌。
对于其他平台(如Cursor、Copilot Studio或Glama),请遵循其特定于平台的指令来添加MCP服务器。大多数平台需要:
TFC_TOKEN)。TFC_ADDRESS)。ENABLE_DELETE_TOOLS=true用于破坏性操作)。READ_ONLY_TOOLS=true以禁用所有写操作)。注意:当READ_ONLY_TOOLS=true时,所有创建、更新、删除、应用及状态修改操作均被禁用。只有读操作(列表、获取、查看)仍然可用。
get_account_details():获取已认证用户或服务账户的账户信息。list_workspaces(organization, page_number, page_size, search):列出并筛选工作区。get_workspace_details(workspace_id, organization, workspace_name):获取特定工作区的详细信息。create_workspace(organization, name, params):使用可选参数创建新的工作区。update_workspace(organization, workspace_name, params):更新现有工作区的配置。ENABLE_DELETE_TOOLS=true)delete_workspace(organization, workspace_name):删除工作区及其所有内容。safe_delete_workspace(organization, workspace_name):仅在工作区未管理任何资源时删除。注意:默认情况下禁用删除操作以确保安全。设置ENABLE_DELETE_TOOLS=true以启用这些破坏性操作。
lock_workspace(workspace_id, reason):锁定工作区以防止运行。unlock_workspace(workspace_id):解锁工作区以允许运行。force_unlock_workspace(workspace_id):强制解锁由其他用户锁定的工作区。create_run(workspace_id, params):使用工作区ID创建并排队Terraform运行。list_runs_in_workspace(workspace_id, ...):使用工作区ID列出并筛选特定工作区中的运行。list_runs_in_organization(organization, ...):列出并筛选整个组织中的运行。get_run_details(run_id):获取特定运行的详细信息。apply_run(run_id, comment):等待确认的应用运行。discard_run(run_id, comment):等待确认的丢弃运行。cancel_run(run_id, comment):取消当前正在规划或应用的运行。force_cancel_run(run_id, comment):立即强制取消运行。force_execute_run(run_id):通过取消先前的运行强制执行待处理的运行。get_plan_details(plan_id):获取特定计划的详细信息。get_plan_json_output(plan_id):检索特定计划的JSON执行计划,具有适当的重定向处理。get_run_plan_json_output(run_id):从运行中检索JSON执行计划,具有适当的重定向处理。get_plan_logs(plan_id):从计划操作中检索日志。get_apply_details(apply_id):获取特定应用的详细信息。get_errored_state(apply_id):从失败的应用中检索错误状态以便恢复。get_apply_logs(apply_id):从应用操作中检索日志。create_project(organization, name, params):使用可选参数创建新的项目。update_project(project_id, params):更新现有项目的配置。list_projects(organization, ...):列出并筛选组织中的项目。get_project_details(project_id):获取特定项目的详细信息。delete_project(project_id):删除项目(如果包含工作区则失败)。需ENABLE_DELETE_TOOLS=truelist_project_tag_bindings(project_id):列出绑定到项目的标签。add_update_project_tag_bindings(project_id, tag_bindings):在项目上添加或更新标签绑定。move_workspaces_to_project(project_id, workspace_ids):将工作区移动到项目中。get_organization_details(organization):获取特定组织的详细信息。get_organization_entitlements(organization):显示组织功能的授权集。list_organizations(page_number, page_size, query, query_email, query_name):列出并筛选组织。create_organization(name, email, params):使用可选参数创建新的组织。update_organization(organization, params):更新现有组织的设置。delete_organization(organization):删除组织及其所有内容。需ENABLE_DELETE_TOOLS=trueget_cost_estimate_details(cost_estimate_id):获取特定成本估算的详细信息,包括资源数量(匹配和不匹配)、先前的每月成本、提议的每月成本及月度成本估算的差异。使用运行关系查找特定运行的成本估算ID。get_assessment_result_details(assessment_result_id):获取特定健康评估结果的详细信息。get_assessment_json_output(assessment_result_id):从评估结果中检索JSON执行计划。get_assessment_json_schema(assessment_result_id):从评估结果中检索JSON模式文件。get_assessment_log_output(assessment_result_id):从评估结果操作中检索日志。list_state_versions(organization, workspace_name, page_number, page_size, filter_status):列出并筛选工作区中的状态版本。get_current_state_version(workspace_id):获取工作区的当前状态版本。get_state_version(state_version_id):获取特定状态版本的详细信息。create_state_version(workspace_id, serial, md5, params):在工作区中创建新的状态版本。download_state_file(state_version_id, json_format):下载原始或JSON格式的状态文件。list_state_version_outputs(state_version_id, page_number, page_size):列出特定状态版本的输出。get_state_version_output(state_version_output_id):获取特定状态版本输出的详细信息。list_workspace_variables(workspace_id):列出工作区的所有变量(Terraform和环境)。create_workspace_variable(workspace_id, key, category, params):在工作区中创建新的变量。update_workspace_variable(workspace_id, variable_id, params):更新现有的工作区变量。delete_workspace_variable(workspace_id, variable_id):删除工作区变量。需ENABLE_DELETE_TOOLS=truelist_variable_sets(organization, page_number, page_size):列出组织中的变量集。get_variable_set(varset_id):获取特定变量集的详细信息。create_variable_set(organization, name, params):创建新的变量集。update_variable_set(varset_id, params):更新现有的变量集。delete_variable_set(varset_id):删除变量集及其所有变量。需ENABLE_DELETE_TOOLS=trueassign_variable_set_to_workspaces(varset_id, workspace_ids):将变量集分配给工作区。unassign_variable_set_from_workspaces(varset_id, workspace_ids):从工作区移除变量集。assign_variable_set_to_projects(varset_id, project_ids):将变量集分配给项目。unassign_variable_set_from_projects(varset_id, project_ids):从项目移除变量集。list_variables_in_variable_set(varset_id):列出变量集中的所有变量。create_variable_in_variable_set(varset_id, key, category, params):在变量集中创建变量。update_variable_in_variable_set(varset_id, var_id, params):更新变量集中的变量。delete_variable_from_variable_set(varset_id, var_id):从变量集中删除变量。需ENABLE_DELETE_TOOLS=true注意:变量管理包括Terraform输入变量和环境变量。敏感变量的值会被隐藏以保证安全。默认情况下禁用删除操作,需要ENABLE_DELETE_TOOLS=true。
有关详细的开发指导,包括代码标准、Pydantic模式及贡献流程,请参阅我们的开发文档。
# 克隆仓库
git clone https://github.com/severity1/terraform-cloud-mcp.git
cd terraform-cloud-mcp
# 创建虚拟环境并激活它
uv venv
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
# 以开发模式安装依赖项
uv pip install -e .
uv pip install black mypy pydantic ruff
# 在开发模式下运行服务器
mcp dev terraform_cloud_mcp/server.py
# 运行测试和质量检查
uv run -m mypy .
uv run -m ruff check .
uv run -m black .
有关代码组织、架构、开发流程及代码质量指南的详细信息,请参阅docs/DEVELOPMENT.md。
代码库包含全面的文档:
docs/目录包含每个领域的详细示例:
docs/FILTERING_SYSTEM.md:全面的审计安全响应过滤系统指南(5-15%令牌减少,100%符合审计要求)docs/DEVELOPMENT.md:开发标准和编码指南,附有对实际代码的引用