Terraform Registry MCP 服务器

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

作者 By thrashr888
本地部署 可托管 Terraform
GitHub

Terraform注册表MCP服务器

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

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

安装

在Cursor中安装

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

  1. 在光标中,打开设置(⌘+,)并导航到“MCP”选项卡。
  2. 点击“+添加新的MCP服务器。”
  3. 输入以下内容:
  • 名称:地形注册表
  • 类型:命令
  • 命令:npx-y地形mcp服务器
  1. 单击“添加”,然后滚动到服务器,单击“禁用”以启用服务器。
  2. 如果需要,请重新启动Cursor,以确保MCP服务器已正确加载。

在Claude Desktop中安装

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

  1. 在Claude Desktop中,打开设置(⌘+,)并导航到“开发人员”选项卡。
  2. 单击窗口底部的“编辑配置”。
  3. 编辑文件(~/Library/Application Support/Claude/claude_desktop_config.json)要添加以下代码,请单击“保存文件”。

JSON``` 1 2 3 4 5 6 7 8{ “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通信:


BASH```
1
2npm install
npm start

使用环境变量进行配置

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

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

环境变量的示例用法:

BASH``` 1 2 3 4 5 6# 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 文件以获取有关测试此项目的信息。