Terraform注册表MCP服务器
模型上下文协议(MCP)服务器,提供与Terraform注册表API交互的工具。此服务器使AI代理能够查询提供者信息、资源详细信息和模块元数据。
[!重要] 该项目被用作新官员的PoC Terraform MCP服务器。此回购已存档,以支持该回购。
安装
在Cursor中安装
要在中安装和使用此MCP服务器 光标:
- 在光标中,打开设置(⌘+,)并导航到“MCP”选项卡。
- 点击“+添加新的MCP服务器。”
- 输入以下内容:
- 名称:地形注册表
- 类型:命令
- 命令:npx-y地形mcp服务器
- 单击“添加”,然后滚动到服务器,单击“禁用”以启用服务器。
- 如果需要,请重新启动Cursor,以确保MCP服务器已正确加载。
在Claude Desktop中安装
要在Claude Desktop中安装和使用此MCP服务器:
- 在Claude Desktop中,打开设置(⌘+,)并导航到“开发人员”选项卡。
- 单击窗口底部的“编辑配置”。
- 编辑文件(
~/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_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令牌,用于私有注册表访问(可选) |
环境变量的示例用法:
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 文件以获取有关测试此项目的信息。