返回市场
terraform-mcp服务器

terraform-mcp服务器

作者:thrashr888118 星标更新:2025-05-21

项目介绍

Terraform Registry MCP Server

一个提供与Terraform Registry API交互工具的Model Context Protocol (MCP)服务器。此服务器使AI代理能够查询供应商信息、资源详情和模块元数据。

[!IMPORTANT] 此项目作为新的官方Terraform MCP服务器的PoC被使用。此仓库已被存档,以支持那个项目。

安装

在Cursor中安装

要在Cursor中安装并使用此MCP服务器:

  1. 在Cursor中,打开设置(⌘+,),然后导航到“MCP”标签页。

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

  3. 输入以下内容:

    • 名称:terraform-registry
    • 类型:命令
    • 命令:npx -y terraform-mcp-server
  4. 点击“添加”,然后滚动到服务器并点击“禁用”以启用服务器。

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

terraform-registry MCP设置用于Cursor

在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工具

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

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

资源

MCP服务器支持通过resources/*方法列出和读取以下资源URI:

资源类型示例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_URLTerraform Registry API的基础URLhttps://registry.terraform.io
DEFAULT_PROVIDER_NAMESPACE提供商的默认命名空间hashicorp
LOG_LEVEL日志级别(error, warn, info, debug)info
REQUEST_TIMEOUT_MSAPI请求超时时间(毫秒)10000
RATE_LIMIT_ENABLED启用API请求速率限制false
RATE_LIMIT_REQUESTS时间窗口内允许的请求数量60
RATE_LIMIT_WINDOW_MS速率限制的时间窗口(毫秒)60000
TFC_TOKENTerraform Cloud API令牌,用于访问私有注册表(可选)

使用环境变量的示例:

# 设置环境变量
export LOG_LEVEL="debug"
export REQUEST_TIMEOUT_MS="15000"
export TFC_TOKEN="your-terraform-cloud-token"

# 运行服务器
npm start

测试

关于测试此项目的更多信息,请参阅TESTS.md文件。