Terraform Registry MCP 服务器

一个提供与Terraform Registry API交互工具的MCP服务器,支持查询提供商信息、资源详情和模块元数据。

  • by thrashr888
  • TypeScript
  • 本地部署
  • 120 星标
  • 更新于
在 GitHub 查看 thrashr888/terraform-mcp-server

使用说明

Terraform注册表MCP服务器

模型上下文协议(MCP)服务器,提供与Terraform注册表API交互的工具。此服务器使AI代理能够查询提供者信息、资源详细信息和模块元数据。

[!重要] 该项目被用作新官员的PoC Terraform MCP服务器。此回购已存档,以支持该回购。

安装

在Cursor中安装

要在中安装和使用此MCP服务器 光标:

  1. 在光标中,打开设置(⌘+,)并导航到“MCP”选项卡。

  2. 点击“+添加新的MCP服务器。”

  3. 输入以下内容:

    • 名称:地形注册表
    • 类型:命令
    • 命令:npx-y地形mcp服务器
  4. 单击“添加”,然后滚动到服务器,单击“禁用”以启用服务器。

  5. 如果需要,请重新启动Cursor,以确保MCP服务器已正确加载。

在Claude Desktop中安装

要在Claude Desktop中安装和使用此MCP服务器:

  1. 在Claude Desktop中,打开设置(⌘+,)并导航到“开发人员”选项卡。

  2. 单击窗口底部的“编辑配置”。

  3. 编辑文件(~/Library/Application Support/Claude/claude_desktop_config.json)要添加以下代码,请单击“保存文件”。

{
  "mcpServers": {
    "terraform-registry": {
      "command": "npx",
      "args": ["-y", "terraform-mcp-server"]
    }
  }
}
  1. 重新启动Claude Desktop以确保MCP服务器已正确加载。

工具

此MCP服务器中提供以下工具:

核心注册表工具

工具 说明
providerDetails 获取有关Terraform提供程序的详细信息
resourceUsage 获取Terraform资源和相关资源的示例用法
moduleSearch 根据查询搜索并推荐Terraform模块
listDataSources 列出提供程序的所有可用数据源及其基本详细信息
resourceArgumentDetails 获取有关资源类型参数的全面详细信息
moduleDetails 检索Terraform模块的详细元数据
functionDetails 获取有关Terraform提供程序函数的详细信息
providerGuides 列出和查看特定于提供商的指南和文档
policySearch 在Terraform注册表中搜索策略库
policyDetails 获取特定策略库的详细信息

地形云工具

这些工具需要Terraform Cloud API令牌(TFC_TOKEN):

工具 说明
listOrganizations 列出经过身份验证的用户有权访问的所有组织
privateModuleSearch 在组织中搜索私有模块
privateModuleDetails 获取私有模块的详细信息
explorerQuery 查询Terraform Cloud Explorer API以分析数据
listWorkspaces 列出组织中的工作空间
workspaceDetails 获取特定工作区的详细信息
lockWorkspace 锁定工作区以防止运行
unlockWorkspace 解锁工作区以允许跑步
listRuns 列出工作区的运行
runDetails 获取特定运行的详细信息
createRun 为工作区创建新运行
applyRun 应用计划好的跑步
cancelRun 取消正在进行的跑步
listWorkspaceResources 列出工作区中的资源

资源

MCP服务器支持以下资源URI,用于通过 resources/* 方法:

资源类型 URI示例 描述
提供商 terraform:providers 列出所有命名空间/提供程序
terraform:provider:<namespace>/<name> 获取特定提供商的详细信息
提供商版本 terraform:provider:<namespace>/<name>/versions 列出提供程序的可用版本
提供商资源 terraform:provider:<namespace>/<name>/resources 列出提供者的资源
terraform:resource:<namespace>/<name>/<resource_name> 获取特定资源类型的详细信息
提供商数据源 terraform:provider:<namespace>/<name>/dataSources 列出提供程序的数据源
terraform:dataSource:<namespace>/<name>/<data_source_name> 获取特定数据源的详细信息
提供者功能 terraform:provider:<namespace>/<name>/functions 列出提供程序的函数
terraform:function:<namespace>/<name>/<function_name> 获取特定功能的详细信息

服务器还支持 resources/templates/list 提供创建模板:

  • terraform:provider
  • terraform:resource
  • terraform:dataSource

提示

以下提示可用于生成上下文响应:

提示 描述 必填参数
migrate-clouds 生成Terraform代码以在云提供商之间迁移基础设施 sourceCloud, targetCloud, terraformCode
generate-resource-skeleton 使用最佳实践帮助用户快速构建新的Terraform资源 resourceType
optimize-terraform-module 为改进Terraform代码提供可操作的建议 terraformCode
migrate-provider-version 协助提供商进行版本升级和突破性更改 providerName, currentVersion, targetVersion, terraformCode (可选)
analyze-workspace-runs 分析最近的运行故障,并为Terraform Cloud工作区提供故障排除指导 workspaceId, runsToAnalyze (可选,默认值:5)

提示的已知问题

备注:存在已知问题 getPrompt 可能导致服务器崩溃的功能。服务器正确注册提示并可以列出它们,但可以使用 getPrompt 方法可能会导致连接问题。这正在调查中,可能与SDK兼容性或实现细节有关。在解决之前,请使用 listPrompts 查看可用提示,但避免直接 getPrompt 电话。

运行服务器

服务器使用stdio传输进行MCP通信:

npm install
npm start

使用环境变量进行配置

可以使用环境变量配置服务器:

环境变量 描述 默认值
TERRAFORM_REGISTRY_URL Terraform注册表API的基本URL https://registry.terraform.io
DEFAULT_PROVIDER_NAMESPACE 提供程序的默认命名空间 hashicorp
LOG_LEVEL 日志记录级别(错误、警告、信息、调试) info
REQUEST_TIMEOUT_MS API请求超时(以毫秒为单位) 10000
RATE_LIMIT_ENABLED 为API请求启用速率限制 false
RATE_LIMIT_REQUESTS 时间窗口内允许的请求数 60
RATE_LIMIT_WINDOW_MS 速率限制的时间窗口(毫秒) 60000
TFC_TOKEN Terraform Cloud API令牌,用于私有注册表访问(可选)

环境变量的示例用法:

# Set environment variables
export LOG_LEVEL="debug"
export REQUEST_TIMEOUT_MS="15000"
export TFC_TOKEN="your-terraform-cloud-token"

# Run the server
npm start

测试

请参阅 TESTS.md 文件以获取有关测试此项目的信息。