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)要添加以下代码,请单击“保存文件”。
{
"mcpServers": {
"terraform-registry": {
"command": "npx",
"args": ["-y", "terraform-mcp-server"]
}
}
}- 重新启动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:/ | 获取特定提供商的详细信息 | |
| 提供商版本 | terraform:provider://versions | 列出提供程序的可用版本 |
| 提供商资源 | terraform:provider://resources | 列出提供者的资源 |
terraform:resource:// | 获取特定资源类型的详细信息 | |
| 提供商数据源 | terraform:provider://dataSources | 列出提供程序的数据源 |
terraform:dataSource:// | 获取特定数据源的详细信息 | |
| 提供者功能 | terraform:provider://functions | 列出提供程序的函数 |
terraform:function:// | 获取特定功能的详细信息 |
服务器还支持 resources/templates/list 提供创建模板:
terraform:providerterraform:resourceterraform: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 文件以获取有关测试此项目的信息。
