Skip to main content
Glama

Terraform Registry MCP Server

by Qvakk
README.md5.5 kB
# Terraform Registry MCP Server A Model Context Protocol (MCP) server that provides comprehensive access to the Terraform public registry. This server enables AI assistants to search and retrieve information about Terraform providers, modules, and documentation. ## Features ### Module Tools - 🔍 **search_modules** - Search for Terraform modules by name or keywords - 📦 **get_module_details** - Get detailed information about a specific module - 🏷️ **get_latest_module_version** - Get the latest version of a module - 📋 **list_module_versions** - List all available versions of a module ### Provider Tools - 🔍 **search_providers** - Search for Terraform providers - 📦 **get_provider_details** - Get detailed information about a provider - 🏷️ **get_latest_provider_version** - Get the latest version of a provider - 📋 **list_provider_versions** - List all available versions of a provider - 📚 **get_provider_docs** - Fetch full provider documentation (setup, auth, version notes) - 📄 **get_provider_resource_docs** - Fetch complete resource docs (args, attributes, examples) - 📄 **get_provider_data_source_docs** - Fetch complete data source docs - 🔎 **search_provider_docs** - Search within provider documentation for specific errors, topics, or troubleshooting > **New!** Documentation tools now fetch the actual markdown content from the registry, including version-specific information, breaking changes, upgrade guides, and complete argument/attribute references. ## Installation ### Using Docker (Recommended) Build and run with Docker Compose: ```bash docker-compose up -d ``` Or build manually: ```bash docker build -t terraform-registry-mcp-server . docker run -d -p 3002:3002 --name terraform-registry-mcp-server \ -e TRANSPORT_MODE=http \ -e PORT=3002 \ terraform-registry-mcp-server ``` ### Local Development Install dependencies: ```bash pip install -e . ``` Run in stdio mode (for local MCP clients): ```bash terraform-mcp-server ``` Run in HTTP mode: ```bash export TRANSPORT_MODE=http export PORT=3002 terraform-mcp-server ``` ## Configuration ### Environment Variables - `TRANSPORT_MODE` - Transport mode: `stdio` (default) or `http` - `PORT` - HTTP server port (default: 3002) ### VS Code MCP Configuration Add to your VS Code `mcp.json`: ```json { "mcpServers": { "terraform": { "command": "docker", "args": [ "run", "-i", "--rm", "terraform-mcp-server" ] } } } ``` Or for HTTP transport: ```json { "mcpServers": { "terraform": { "url": "http://localhost:3002/mcp" } } } ``` ## Usage Examples ### Search for AWS VPC modules ```python search_modules(query="vpc", provider="aws", limit=10) ``` ### Get module details ```python get_module_details( namespace="terraform-aws-modules", name="vpc", provider="aws" ) ``` ### Search for providers ```python search_providers(query="azure", tier="official") ``` ### Get latest provider version ```python get_latest_provider_version(namespace="hashicorp", name="aws") ``` ### Get provider documentation ```python # Get full provider overview with version info and breaking changes get_provider_docs(namespace="hashicorp", name="azurerm") # Get specific version documentation (useful for compatibility checks) get_provider_docs(namespace="hashicorp", name="azurerm", version="3.0.0") ``` ### Get specific resource documentation ```python # Fetches complete documentation including all arguments and attributes get_provider_resource_docs( namespace="hashicorp", name="aws", resource_name="aws_instance" ) # Check a specific version's resource documentation get_provider_resource_docs( namespace="hashicorp", name="azurerm", resource_name="azurerm_virtual_machine", version="3.85.0" ) ``` ### Get data source documentation ```python get_provider_data_source_docs( namespace="hashicorp", name="aws", data_source_name="aws_ami" ) ``` ## Deployment to Azure Container Apps This server is designed for easy deployment to Azure Container Apps: 1. Build and push to Azure Container Registry: ```bash az acr build --registry <your-acr> --image terraform-mcp-server:latest . ``` 2. Deploy to Container Apps: ```bash az containerapp create \ --name terraform-mcp-server \ --resource-group <your-rg> \ --environment <your-env> \ --image <your-acr>.azurecr.io/terraform-mcp-server:latest \ --target-port 3002 \ --ingress external \ --env-vars TRANSPORT_MODE=http PORT=3002 ``` ## Architecture - **FastMCP** - Uses the official MCP Python SDK with FastMCP for simplified server creation - **StreamableHTTP Transport** - Supports modern HTTP transport for cloud deployment - **Public Registry Only** - Focuses on public Terraform registry (no authentication required) - **Lightweight** - Minimal dependencies, fast startup ## Comparison with HashiCorp's Server This is a simplified version compared to HashiCorp's official terraform-mcp-server: **Included:** - ✅ Public registry search (modules & providers) - ✅ Module and provider details - ✅ Version management - ✅ HTTP transport for cloud deployment - ✅ Docker support **Not Included:** - ❌ HCP Terraform / Terraform Enterprise integration - ❌ Workspace management - ❌ Run execution - ❌ Variable management - ❌ Private registry access ## License MIT License ## Contributing Contributions are welcome! Please feel free to submit a Pull Request.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Qvakk/terraform-registry-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server