Terraform Registry MCP Server

Un servidor MCP para interactuar con la API del Terraform Registry. Permite consultar proveedores, recursos, módulos y admite operaciones de Terraform Cloud.

Documentación

Terraform Registry MCP Server

Un servidor de Model Context Protocol (MCP) que proporciona herramientas para interactuar con la API de Terraform Registry. Este servidor permite a los agentes de IA consultar información de proveedores, detalles de recursos y metadatos de módulos.

[!IMPORTANT] Este proyecto se utilizó como PoC para un nuevo Terraform MCP server oficial. Este repositorio ha sido archivado en favor de ese.

Instalación

Instalación en Cursor

Para instalar y usar este servidor MCP en Cursor:

  1. En Cursor, abre Configuración (⌘+,) y navega a la pestaña "MCP".

  2. Haz clic en "+ Agregar nuevo servidor MCP".

  3. Ingresa lo siguiente:

    • Nombre: terraform-registry
    • Tipo: command
    • Comando: npx -y terraform-mcp-server
  4. Haz clic en "Agregar" y luego desplázate hasta el servidor y haz clic en "Deshabilitado" para habilitar el servidor.

  5. Reinicia Cursor, si es necesario, para asegurarte de que el servidor MCP se cargue correctamente.

terraform-registry MCP settings for Cursor

Instalación en Claude Desktop

Para instalar y usar este servidor MCP en Claude Desktop:

  1. En Claude Desktop, abre Configuración (⌘+,) y navega a la pestaña "Desarrollador".

  2. Haz clic en "Editar configuración" en la parte inferior de la ventana.

  3. Edita el archivo (~/Library/Application Support/Claude/claude_desktop_config.json) para agregar el siguiente código y luego guarda el archivo.

{
  "mcpServers": {
    "terraform-registry": {
      "command": "npx",
      "args": ["-y", "terraform-mcp-server"]
    }
  }
}
  1. Reinicia Claude Desktop para asegurarte de que el servidor MCP se cargue correctamente.

Herramientas

Las siguientes herramientas están disponibles en este servidor MCP:

Herramientas principales del registro

HerramientaDescripción
providerDetailsObtiene información detallada sobre un proveedor de Terraform
resourceUsageObtiene ejemplos de uso de un recurso de Terraform y recursos relacionados
moduleSearchBusca y recomienda módulos de Terraform según una consulta
listDataSourcesEnumera todas las fuentes de datos disponibles para un proveedor y sus detalles básicos
resourceArgumentDetailsObtiene detalles completos sobre los argumentos de un tipo de recurso
moduleDetailsRecupera metadatos detallados de un módulo de Terraform
functionDetailsObtiene detalles sobre una función de proveedor de Terraform
providerGuidesEnumera y muestra guías y documentación específicas del proveedor
policySearchBusca bibliotecas de políticas en el Terraform Registry
policyDetailsObtiene información detallada sobre una biblioteca de políticas específica

Herramientas de Terraform Cloud

Estas herramientas requieren un token de API de Terraform Cloud (TFC_TOKEN):

HerramientaDescripción
listOrganizationsEnumera todas las organizaciones a las que el usuario autenticado tiene acceso
privateModuleSearchBusca módulos privados en una organización
privateModuleDetailsObtiene información detallada sobre un módulo privado
explorerQueryConsulta la API de Terraform Cloud Explorer para analizar datos
listWorkspacesEnumera los espacios de trabajo en una organización
workspaceDetailsObtiene información detallada sobre un espacio de trabajo específico
lockWorkspaceBloquea un espacio de trabajo para evitar ejecuciones
unlockWorkspaceDesbloquea un espacio de trabajo para permitir ejecuciones
listRunsEnumera las ejecuciones de un espacio de trabajo
runDetailsObtiene información detallada sobre una ejecución específica
createRunCrea una nueva ejecución para un espacio de trabajo
applyRunAplica una ejecución que ha sido planificada
cancelRunCancela una ejecución en curso
listWorkspaceResourcesEnumera los recursos en un espacio de trabajo

Recursos

El servidor MCP admite los siguientes URI de recursos para listar y leer mediante los métodos resources/*:

Tipo de recursoURI(s) de ejemploDescripción
Proveedoresterraform:providersEnumera todos los espacios de nombres/proveedores
terraform:provider:<namespace>/<name>Obtén detalles de un proveedor específico
Versiones de proveedorterraform:provider:<namespace>/<name>/versionsEnumera las versiones disponibles para un proveedor
Recursos de proveedorterraform:provider:<namespace>/<name>/resourcesEnumera los recursos de un proveedor
terraform:resource:<namespace>/<name>/<resource_name>Obtén detalles de un tipo de recurso específico
Fuentes de datos de proveedorterraform:provider:<namespace>/<name>/dataSourcesEnumera las fuentes de datos de un proveedor
terraform:dataSource:<namespace>/<name>/<data_source_name>Obtén detalles de una fuente de datos específica
Funciones de proveedorterraform:provider:<namespace>/<name>/functionsEnumera las funciones de un proveedor
terraform:function:<namespace>/<name>/<function_name>Obtén detalles de una función específica

El servidor también admite resources/templates/list para proporcionar plantillas para crear:

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

Prompts

Los siguientes prompts están disponibles para generar respuestas contextuales:

PromptDescripciónArgumentos requeridos
migrate-cloudsGenera código de Terraform para migrar infraestructura entre proveedores de nubesourceCloud, targetCloud, terraformCode
generate-resource-skeletonAyuda a los usuarios a crear rápidamente nuevos recursos de Terraform con mejores prácticasresourceType
optimize-terraform-moduleProporciona recomendaciones prácticas para mejorar el código de TerraformterraformCode
migrate-provider-versionAsiste con actualizaciones de versiones de proveedores y cambios importantesproviderName, currentVersion, targetVersion, terraformCode (opcional)
analyze-workspace-runsAnaliza fallos recientes de ejecuciones y proporciona guía de solución de problemas para espacios de trabajo de Terraform CloudworkspaceId, runsToAnalyze (opcional, predeterminado: 5)

Problemas conocidos con los Prompts

Nota: Hay un problema conocido con la funcionalidad getPrompt que puede causar fallos en el servidor. El servidor registra correctamente los prompts y puede listarlos, pero las solicitudes directas que usan el método getPrompt pueden causar problemas de conectividad. Esto está siendo investigado y puede estar relacionado con la compatibilidad del SDK o detalles de implementación. Hasta que se resuelva, usa listPrompts para ver los prompts disponibles, pero evita llamadas directas a getPrompt.

Ejecutar el servidor

El servidor se ejecuta usando transporte stdio para la comunicación MCP:

npm install
npm start

Configuración con variables de entorno

El servidor se puede configurar usando variables de entorno:

Variable de entornoDescripciónValor predeterminado
TERRAFORM_REGISTRY_URLURL base para la API de Terraform Registryhttps://registry.terraform.io
DEFAULT_PROVIDER_NAMESPACEEspacio de nombres predeterminado para proveedoreshashicorp
LOG_LEVELNivel de registro (error, warn, info, debug)info
REQUEST_TIMEOUT_MSTiempo de espera para solicitudes de API en milisegundos10000
RATE_LIMIT_ENABLEDHabilitar limitación de velocidad para solicitudes de APIfalse
RATE_LIMIT_REQUESTSNúmero de solicitudes permitidas en la ventana de tiempo60
RATE_LIMIT_WINDOW_MSVentana de tiempo para limitación de velocidad en milisegundos60000
TFC_TOKENToken de API de Terraform Cloud para acceso a registro privado (opcional)

Ejemplo de uso con variables de entorno:

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

# Run the server
npm start

Pruebas

Consulta el archivo TESTS.md para obtener información sobre cómo probar este proyecto.