tf-mcp-server

liuwuliuyun/tf-mcp-server

3.2

If you are the rightful owner of tf-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A Model Context Protocol (MCP) server for Azure Terraform operations, providing intelligent assistance for infrastructure as code development with Azure resources.

Tools
5
Resources
0
Prompts
0

Azure Terraform MCP Server

A Model Context Protocol (MCP) server for Azure Terraform operations, providing intelligent assistance for infrastructure as code development with Azure resources.

Overview

This MCP server provides support for Azure Terraform development, including:

  • Azure provider documentation retrieval of AzureRM, AzAPI and Azure Verified Module(AVM)
  • HCL code validation and static analysis with TFLint
  • Security scanning and compliance checking
  • Best practices guidance
  • Resource analysis and recommendations

Features

šŸ” Documentation & Discovery

  • Azure Provider Docs: Comprehensive documentation retrieval for AzureRM resources
  • AzAPI Schema: Schema lookup for Azure API resources
  • Azure Verified Modules (AVM): Discovery and documentation for verified Terraform modules including module listings, versions, variables, and outputs
  • Resource Documentation: Detailed arguments, attributes, and examples

šŸ›”ļø Security & Compliance

  • Security Scanning: Built-in security rule validation for Azure resources
  • Azure Verified Modules (AVM) Policies: Integration with Conftest and Azure Policy Library AVM for comprehensive policy validation
  • Best Practices: Azure-specific best practices and recommendations

šŸ”§ Development Tools

  • Unified Terraform Commands: Single tool to execute all Terraform commands (init, plan, apply, destroy, validate, fmt) plus full state management (list, show, mv, rm, pull, push)
  • State Management: Safe resource renaming and state manipulation using proper Terraform commands
  • HCL Validation: Syntax validation and error reporting for Terraform code
  • HCL Formatting: Automatic code formatting for Terraform configurations
  • TFLint Integration: Static analysis with TFLint including Azure ruleset support for Terraform workspaces
  • Azure Export for Terraform (aztfexport): Export existing Azure resources to Terraform configuration and state
  • Code Cleanup Workflow: Transform exported code into production-ready infrastructure as code

šŸ“‹ Schema & Provider Analysis

  • Terraform Schema Query: Query fine-grained schema information for any Terraform provider
  • Provider Item Discovery: List all available resources, data sources, and functions for providers
  • Provider Support Discovery: Find which providers are available for analysis
  • Dynamic Schema Loading: Support for all providers in the Terraform Registry

šŸ” Golang Source Code Analysis

  • Golang Namespace Discovery: Find available golang packages for source code analysis
  • Version/Tag Support: Query specific versions of provider source code
  • Source Code Retrieval: Read golang source code for functions, methods, types, and variables
  • Terraform Implementation Analysis: Understand how Terraform resources are implemented in Go

šŸš€ Integration

  • MCP Protocol: Full Model Context Protocol compliance for AI assistant integration
  • FastMCP Framework: Built on FastMCP for high-performance async operations

Quick Start

Create or edit .vscode/mcp.json in your workspace:

{
  "servers": {
    "tf-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--name", "tf-mcp-server-instance",
        "-v", "${workspaceFolder}:/workspace",
        "-e", "ARM_CLIENT_ID=${env:ARM_CLIENT_ID}",
        "-e", "ARM_CLIENT_SECRET=${env:ARM_CLIENT_SECRET}",
        "-e", "ARM_SUBSCRIPTION_ID=${env:ARM_SUBSCRIPTION_ID}",
        "-e", "ARM_TENANT_ID=${env:ARM_TENANT_ID}",
        "-e", "LOG_LEVEL=INFO",
        "ghcr.io/liuwuliuyun/tf-mcp-server:latest"
      ],
      "env": {
        "ARM_CLIENT_ID": "${env:ARM_CLIENT_ID}",
        "ARM_CLIENT_SECRET": "${env:ARM_CLIENT_SECRET}",
        "ARM_SUBSCRIPTION_ID": "${env:ARM_SUBSCRIPTION_ID}",
        "ARM_TENANT_ID": "${env:ARM_TENANT_ID}"
      }
    }
  }
}

Need More Options?

For detailed installation instructions including:

  • 🐳 Docker with Azure authentication
  • ⚔ UV installation for development
  • šŸ Traditional Python setup
  • šŸ”§ Optional tool installation
  • āš™ļø Configuration options

šŸ‘‰ See the complete

Configuration

For detailed configuration options including environment variables, configuration files, and Azure authentication setup, see the .

Available Tools

The server provides comprehensive tools across multiple categories. For complete tool reference with examples, see the .

Documentation Tools
  • get_azurerm_provider_documentation: Retrieve specific AzureRM resource or data source documentation with optional argument/attribute lookup
  • get_azapi_provider_documentation: Retrieve AzAPI resource schemas and documentation
  • get_avm_modules: Retrieve all available Azure Verified Modules with descriptions and source information
  • get_avm_latest_version: Get the latest version of a specific Azure Verified Module
  • get_avm_versions: Get all available versions of a specific Azure Verified Module
  • get_avm_variables: Retrieve the input variables schema for a specific AVM module version
  • get_avm_outputs: Retrieve the output definitions for a specific AVM module version
Terraform Command Tools
  • run_terraform_command: Execute Terraform CLI commands (init, plan, apply, destroy, validate, fmt) and state management operations (list, show, mv, rm, pull, push) inside a workspace folder
Security & Validation Tools
  • check_conftest_installation: Check Conftest installation status and get version information
  • run_conftest_workspace_validation: Validate Terraform files in a workspace folder against Azure security policies
  • run_conftest_workspace_plan_validation: Validate Terraform plan files against Azure security policies
  • check_tflint_installation: Check TFLint installation status and get version information
  • run_tflint_workspace_analysis: Run TFLint static analysis on workspace folders containing Terraform files
Azure Export Tools
  • check_aztfexport_installation: Check Azure Export for Terraform (aztfexport) installation status and version
  • export_azure_resource: Export a single Azure resource to Terraform configuration using aztfexport
  • export_azure_resource_group: Export an entire Azure resource group and its resources to Terraform configuration
  • export_azure_resources_by_query: Export Azure resources using Azure Resource Graph queries to Terraform configuration
  • get_aztfexport_config: Get aztfexport configuration settings
  • set_aztfexport_config: Set aztfexport configuration settings
Source Code Analysis Tools
  • get_terraform_source_providers: Get supported providers for source code analysis
  • query_terraform_source_code: Read Terraform provider source code implementations
  • get_golang_namespaces: Get available golang namespaces for analysis
  • get_golang_namespace_tags: Get supported version tags for a golang namespace
  • query_golang_source_code: Read golang source code for functions, methods, types, and variables
Best Practices Tools
  • get_azure_best_practices: Get comprehensive Azure and Terraform best practices for specific resources and actions
    • Supports AzureRM 4.x and AzAPI 2.x recommendations
    • Special "code-cleanup" action for aztfexport workflow
    • Clear guidance on variables vs locals
    • State management best practices
    • Security hardening recommendations

šŸ“š Documentation

For comprehensive guides and examples:

  • - Complete documentation overview
  • - Setup instructions for all platforms
  • - Environment variables and settings
  • - Complete tool reference with examples
  • - Common issues and solutions

Feature Guides

  • - AzureRM, AzAPI, and AVM documentation access
  • - Execute Terraform operations and state management
  • - Safe resource renaming and state operations
  • - Policy-based validation and compliance
  • - Export existing Azure resources
  • - Terraform and Golang code analysis
  • - Get Azure-specific recommendations and code cleanup guidance

Example Usage

For complete examples and workflows, see the .

Project Structure

tf-mcp-server/
ā”œā”€ā”€ src/                            # Main source code
│   ā”œā”€ā”€ data/                       # Data files and schemas
│   │   └── azapi_schemas_v2.6.1.json # AzAPI resource schemas
│   └── tf_mcp_server/              # Core package
│       ā”œā”€ā”€ __init__.py
│       ā”œā”€ā”€ __main__.py             # Package entry point  
│       ā”œā”€ā”€ launcher.py             # Server launcher
│       ā”œā”€ā”€ core/                   # Core functionality
│       │   ā”œā”€ā”€ __init__.py
│       │   ā”œā”€ā”€ azapi_schema_generator.py # AzAPI schema generation
│       │   ā”œā”€ā”€ config.py           # Configuration management
│       │   ā”œā”€ā”€ models.py           # Data models and types
│       │   ā”œā”€ā”€ server.py           # FastMCP server with all MCP tools
│       │   ā”œā”€ā”€ terraform_executor.py # Terraform execution utilities
│       │   └── utils.py            # Shared utility functions
│       └── tools/                  # Tool implementations
│           ā”œā”€ā”€ __init__.py
│           ā”œā”€ā”€ avm_docs_provider.py     # Azure Verified Modules provider
│           ā”œā”€ā”€ azapi_docs_provider.py   # AzAPI documentation provider  
│           ā”œā”€ā”€ azurerm_docs_provider.py # AzureRM documentation provider
│           ā”œā”€ā”€ aztfexport_runner.py     # Azure Export for Terraform (aztfexport) integration
│           ā”œā”€ā”€ conftest_avm_runner.py   # Conftest policy validation
│           ā”œā”€ā”€ terraform_runner.py      # Terraform command execution
│           └── tflint_runner.py         # TFLint static analysis
ā”œā”€ā”€ tests/                          # Test suite
│   ā”œā”€ā”€ __init__.py
│   ā”œā”€ā”€ conftest.py                 # Test configuration
│   ā”œā”€ā”€ test_*.py                   # Unit tests
│   └── integration/                # Integration tests
ā”œā”€ā”€ tfsample/                       # Sample Terraform configurations
ā”œā”€ā”€ policy/                         # Security and compliance policies
│   ā”œā”€ā”€ avmsec/                     # Azure security policies
│   ā”œā”€ā”€ Azure-Proactive-Resiliency-Library-v2/ # Azure resiliency policies  
│   └── common/                     # Common policy utilities
ā”œā”€ā”€ docs/                           # Documentation
ā”œā”€ā”€ examples/                       # Usage examples
ā”œā”€ā”€ pyproject.toml                  # Project configuration (UV/pip)
ā”œā”€ā”€ uv.lock                         # UV dependency lockfile
ā”œā”€ā”€ README.md                       # This file
└── CONTRIBUTE.md                   # Development and contribution guide

Troubleshooting

For comprehensive troubleshooting including:

  • Docker and VS Code MCP setup issues
  • Azure authentication problems
  • Tool installation and configuration
  • Performance optimization
  • Platform-specific solutions

šŸ‘‰ See the detailed

Quick Debug

Enable debug logging:

{
  "mcpServers": {
    "tf-mcp-server": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "${workspaceFolder}:/workspace",
        "-e", "LOG_LEVEL=DEBUG",
        "-e", "MCP_DEBUG=true",
        "ghcr.io/liuwuliuyun/tf-mcp-server:latest"
      ]
    }
  }
}

Check logs for detailed information and error diagnosis.

Contributing

We welcome contributions! For development setup, coding standards, and detailed contribution guidelines:

šŸ‘‰ See the complete

Quick Start for Contributors

  1. Fork the repository
  2. Set up development environment (see )
  3. Create a feature branch: git checkout -b feature/your-feature
  4. Make changes with tests
  5. Run tests and formatting: pytest && black src/ tests/
  6. Submit a pull request

License

This project is licensed under the MIT License. See LICENSE file for details.

Support

For issues and questions:

  • Create an issue in the repository
  • Check the troubleshooting section above
  • Review existing documentation and tests

Related Projects