Terraform Registry MCP Server

Um servidor MCP para interagir com a API do Terraform Registry. Ele permite consultar provedores, recursos, módulos e suporta operações do Terraform Cloud.

Documentação

Terraform Registry MCP Server

Um servidor Model Context Protocol (MCP) que fornece ferramentas para interagir com a API do Terraform Registry. Este servidor permite que agentes de IA consultem informações de provedores, detalhes de recursos e metadados de módulos.

[!IMPORTANT] Este projeto foi usado como uma PoC para um novo servidor MCP oficial do Terraform. Este repositório foi arquivado em favor daquele.

Instalação

Instalando no Cursor

Para instalar e usar este servidor MCP no Cursor:

  1. No Cursor, abra as Configurações (⌘+,) e navegue até a aba "MCP".

  2. Clique em "+ Adicionar novo servidor MCP."

  3. Insira o seguinte:

    • Nome: terraform-registry
    • Tipo: comando
    • Comando: npx -y terraform-mcp-server
  4. Clique em "Adicionar" e depois role até o servidor e clique em "Desativado" para habilitar o servidor.

  5. Reinicie o Cursor, se necessário, para garantir que o servidor MCP seja carregado corretamente.

terraform-registry MCP settings for Cursor

Instalando no Claude Desktop

Para instalar e usar este servidor MCP no Claude Desktop:

  1. No Claude Desktop, abra as Configurações (⌘+,) e navegue até a aba "Desenvolvedor".

  2. Clique em "Editar Configuração" na parte inferior da janela.

  3. Edite o arquivo (~/Library/Application Support/Claude/claude_desktop_config.json) para adicionar o seguinte código e salve o arquivo.

{
  "mcpServers": {
    "terraform-registry": {
      "command": "npx",
      "args": ["-y", "terraform-mcp-server"]
    }
  }
}
  1. Reinicie o Claude Desktop para garantir que o servidor MCP seja carregado corretamente.

Ferramentas

As seguintes ferramentas estão disponíveis neste servidor MCP:

Ferramentas Principais do Registry

FerramentaDescrição
providerDetailsObtém informações detalhadas sobre um provedor do Terraform
resourceUsageObtém exemplos de uso de um recurso do Terraform e recursos relacionados
moduleSearchPesquisa e recomenda módulos do Terraform com base em uma consulta
listDataSourcesLista todas as fontes de dados disponíveis para um provedor e seus detalhes básicos
resourceArgumentDetailsBusca detalhes abrangentes sobre os argumentos de um tipo de recurso
moduleDetailsRecupera metadados detalhados de um módulo do Terraform
functionDetailsObtém detalhes sobre uma função de provedor do Terraform
providerGuidesLista e visualiza guias e documentações específicas do provedor
policySearchPesquisa bibliotecas de políticas no Terraform Registry
policyDetailsObtém informações detalhadas sobre uma biblioteca de políticas específica

Ferramentas do Terraform Cloud

Estas ferramentas exigem um token da API do Terraform Cloud (TFC_TOKEN):

FerramentaDescrição
listOrganizationsLista todas as organizações às quais o usuário autenticado tem acesso
privateModuleSearchPesquisa módulos privados em uma organização
privateModuleDetailsObtém informações detalhadas sobre um módulo privado
explorerQueryConsulta a API Explorer do Terraform Cloud para analisar dados
listWorkspacesLista workspaces em uma organização
workspaceDetailsObtém informações detalhadas sobre um workspace específico
lockWorkspaceBloqueia um workspace para impedir execuções
unlockWorkspaceDesbloqueia um workspace para permitir execuções
listRunsLista execuções de um workspace
runDetailsObtém informações detalhadas sobre uma execução específica
createRunCria uma nova execução para um workspace
applyRunAplica uma execução que foi planejada
cancelRunCancela uma execução em andamento
listWorkspaceResourcesLista recursos em um workspace

Recursos

O servidor MCP suporta os seguintes URIs de recursos para listagem e leitura por meio dos métodos resources/*:

Tipo de RecursoURI(s) de ExemploDescrição
Provedoresterraform:providersLista todos os namespaces/provedores
terraform:provider:<namespace>/<name>Obtém detalhes de um provedor específico
Versões de Provedoresterraform:provider:<namespace>/<name>/versionsLista as versões disponíveis para um provedor
Recursos de Provedoresterraform:provider:<namespace>/<name>/resourcesLista recursos de um provedor
terraform:resource:<namespace>/<name>/<resource_name>Obtém detalhes de um tipo de recurso específico
Fontes de Dados de Provedoresterraform:provider:<namespace>/<name>/dataSourcesLista fontes de dados de um provedor
terraform:dataSource:<namespace>/<name>/<data_source_name>Obtém detalhes de uma fonte de dados específica
Funções de Provedoresterraform:provider:<namespace>/<name>/functionsLista funções de um provedor
terraform:function:<namespace>/<name>/<function_name>Obtém detalhes de uma função específica

O servidor também suporta resources/templates/list para fornecer modelos para criar:

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

Prompts

Os seguintes prompts estão disponíveis para gerar respostas contextuais:

PromptDescriçãoArgumentos Obrigatórios
migrate-cloudsGera código Terraform para migrar infraestrutura entre provedores de nuvemsourceCloud, targetCloud, terraformCode
generate-resource-skeletonAjuda os usuários a criar rapidamente novos recursos do Terraform com boas práticasresourceType
optimize-terraform-moduleFornece recomendações acionáveis para melhorar o código TerraformterraformCode
migrate-provider-versionAuxilia com atualizações de versão de provedores e mudanças que quebram compatibilidadeproviderName, currentVersion, targetVersion, terraformCode (opcional)
analyze-workspace-runsAnalisa falhas recentes de execução e fornece orientação de solução de problemas para workspaces do Terraform CloudworkspaceId, runsToAnalyze (opcional, padrão: 5)

Problemas Conhecidos com Prompts

Nota: Há um problema conhecido com a funcionalidade getPrompt que pode causar falhas no servidor. O servidor registra corretamente os prompts e pode listá-los, mas solicitações diretas usando o método getPrompt podem causar problemas de conectividade. Isso está sendo investigado e pode estar relacionado à compatibilidade do SDK ou a detalhes de implementação. Até que seja resolvido, use listPrompts para ver os prompts disponíveis, mas evite chamadas diretas de getPrompt.

Executando o Servidor

O servidor é executado usando transporte stdio para comunicação MCP:

npm install
npm start

Configuração com Variáveis de Ambiente

O servidor pode ser configurado usando variáveis de ambiente:

Variável de AmbienteDescriçãoValor Padrão
TERRAFORM_REGISTRY_URLURL base para a API do Terraform Registryhttps://registry.terraform.io
DEFAULT_PROVIDER_NAMESPACENamespace padrão para provedoreshashicorp
LOG_LEVELNível de registro (error, warn, info, debug)info
REQUEST_TIMEOUT_MSTempo limite para solicitações de API em milissegundos10000
RATE_LIMIT_ENABLEDHabilita limitação de taxa para solicitações de APIfalse
RATE_LIMIT_REQUESTSNúmero de solicitações permitidas na janela de tempo60
RATE_LIMIT_WINDOW_MSJanela de tempo para limitação de taxa em milissegundos60000
TFC_TOKENToken da API do Terraform Cloud para acesso ao registry privado (opcional)

Exemplo de uso com variáveis de ambiente:

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

# Run the server
npm start

Testes

Consulte o arquivo TESTS.md para obter informações sobre como testar este projeto.