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:
-
En Cursor, abre Configuración (⌘+,) y navega a la pestaña "MCP".
-
Haz clic en "+ Agregar nuevo servidor MCP".
-
Ingresa lo siguiente:
- Nombre: terraform-registry
- Tipo: command
- Comando: npx -y terraform-mcp-server
-
Haz clic en "Agregar" y luego desplázate hasta el servidor y haz clic en "Deshabilitado" para habilitar el servidor.
-
Reinicia Cursor, si es necesario, para asegurarte de que el servidor MCP se cargue correctamente.
Instalación en Claude Desktop
Para instalar y usar este servidor MCP en Claude Desktop:
-
En Claude Desktop, abre Configuración (⌘+,) y navega a la pestaña "Desarrollador".
-
Haz clic en "Editar configuración" en la parte inferior de la ventana.
-
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"]
}
}
}
- 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
| Herramienta | Descripción |
|---|---|
providerDetails | Obtiene información detallada sobre un proveedor de Terraform |
resourceUsage | Obtiene ejemplos de uso de un recurso de Terraform y recursos relacionados |
moduleSearch | Busca y recomienda módulos de Terraform según una consulta |
listDataSources | Enumera todas las fuentes de datos disponibles para un proveedor y sus detalles básicos |
resourceArgumentDetails | Obtiene detalles completos sobre los argumentos de un tipo de recurso |
moduleDetails | Recupera metadatos detallados de un módulo de Terraform |
functionDetails | Obtiene detalles sobre una función de proveedor de Terraform |
providerGuides | Enumera y muestra guías y documentación específicas del proveedor |
policySearch | Busca bibliotecas de políticas en el Terraform Registry |
policyDetails | Obtiene 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):
| Herramienta | Descripción |
|---|---|
listOrganizations | Enumera todas las organizaciones a las que el usuario autenticado tiene acceso |
privateModuleSearch | Busca módulos privados en una organización |
privateModuleDetails | Obtiene información detallada sobre un módulo privado |
explorerQuery | Consulta la API de Terraform Cloud Explorer para analizar datos |
listWorkspaces | Enumera los espacios de trabajo en una organización |
workspaceDetails | Obtiene información detallada sobre un espacio de trabajo específico |
lockWorkspace | Bloquea un espacio de trabajo para evitar ejecuciones |
unlockWorkspace | Desbloquea un espacio de trabajo para permitir ejecuciones |
listRuns | Enumera las ejecuciones de un espacio de trabajo |
runDetails | Obtiene información detallada sobre una ejecución específica |
createRun | Crea una nueva ejecución para un espacio de trabajo |
applyRun | Aplica una ejecución que ha sido planificada |
cancelRun | Cancela una ejecución en curso |
listWorkspaceResources | Enumera 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 recurso | URI(s) de ejemplo | Descripción |
|---|---|---|
| Proveedores | terraform:providers | Enumera todos los espacios de nombres/proveedores |
terraform:provider:<namespace>/<name> | Obtén detalles de un proveedor específico | |
| Versiones de proveedor | terraform:provider:<namespace>/<name>/versions | Enumera las versiones disponibles para un proveedor |
| Recursos de proveedor | terraform:provider:<namespace>/<name>/resources | Enumera 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 proveedor | terraform:provider:<namespace>/<name>/dataSources | Enumera 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 proveedor | terraform:provider:<namespace>/<name>/functions | Enumera 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:providerterraform:resourceterraform:dataSource
Prompts
Los siguientes prompts están disponibles para generar respuestas contextuales:
| Prompt | Descripción | Argumentos requeridos |
|---|---|---|
migrate-clouds | Genera código de Terraform para migrar infraestructura entre proveedores de nube | sourceCloud, targetCloud, terraformCode |
generate-resource-skeleton | Ayuda a los usuarios a crear rápidamente nuevos recursos de Terraform con mejores prácticas | resourceType |
optimize-terraform-module | Proporciona recomendaciones prácticas para mejorar el código de Terraform | terraformCode |
migrate-provider-version | Asiste con actualizaciones de versiones de proveedores y cambios importantes | providerName, currentVersion, targetVersion, terraformCode (opcional) |
analyze-workspace-runs | Analiza fallos recientes de ejecuciones y proporciona guía de solución de problemas para espacios de trabajo de Terraform Cloud | workspaceId, 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 entorno | Descripción | Valor predeterminado |
|---|---|---|
TERRAFORM_REGISTRY_URL | URL base para la API de Terraform Registry | https://registry.terraform.io |
DEFAULT_PROVIDER_NAMESPACE | Espacio de nombres predeterminado para proveedores | hashicorp |
LOG_LEVEL | Nivel de registro (error, warn, info, debug) | info |
REQUEST_TIMEOUT_MS | Tiempo de espera para solicitudes de API en milisegundos | 10000 |
RATE_LIMIT_ENABLED | Habilitar limitación de velocidad para solicitudes de API | false |
RATE_LIMIT_REQUESTS | Número de solicitudes permitidas en la ventana de tiempo | 60 |
RATE_LIMIT_WINDOW_MS | Ventana de tiempo para limitación de velocidad en milisegundos | 60000 |
TFC_TOKEN | Token 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.