Terraform MCP Server
oficialServidor HashiCorp Terraform MCP para fluxos de trabalho de Infraestrutura como Código, incluindo descoberta de provedores e módulos através do Terraform Registry.
O que você pode fazer com Terraform MCP?
-
Pesquisar no Terraform Registry — Peça ao seu assistente para encontrar provedores ou módulos usando
search_providerseget_provider_detailsdo registro público. -
Gerenciar workspaces do HCP Terraform — Crie, atualize ou exclua workspaces, e liste-os com
list_workspaces, incluindo variáveis, tags e gerenciamento de execuções. -
Filtrar ferramentas disponíveis — Controle quais conjuntos de ferramentas ou ferramentas individuais são expostos, ex.:
--toolsets=registry,terraformou--tools=search_providers,get_provider_details. -
Executar em modo HTTP — Implante com transporte
streamable-http, permitindo acesso remoto, verificações de saúde em/healthe passagem de token por usuário via cabeçalhos. -
Impor acesso por organização — Restrinja o acesso do servidor a organizações específicas do HCP Terraform usando
MCP_ORGANIZATION_ALLOWLISTpara implantações centralizadas.
Documentação
Terraform MCP Server
O Terraform MCP Server é um servidor Model Context Protocol (MCP) que se integra perfeitamente às APIs do Terraform Registry e do HCP Terraform, permitindo automação avançada e recursos de interação para o desenvolvimento de Infrastructure as Code (IaC).
Sumário
Recursos
- Suporte a transporte duplo: Transportes Stdio e StreamableHTTP com endpoints configuráveis
- Integração com Terraform Registry: Integração direta com as APIs públicas do Terraform Registry para providers, módulos e políticas
- Suporte a HCP Terraform e Terraform Enterprise: Gerenciamento completo de workspaces, listagem de organizações/projetos e acesso a registros privados
- Operações de workspace: Criar, atualizar e excluir workspaces com suporte a variáveis, tags e gerenciamento de execuções
- Métricas OTel para monitoramento do uso de ferramentas: Integração com medidores de open telemetry para rastrear volume de chamadas de ferramentas, latência e falhas no modo Streamable HTTP. Também expõe métricas padrão do servidor HTTP quando esse recurso está habilitado
Nota de segurança: Dependendo da consulta, o servidor MCP pode expor determinados dados do Terraform ao cliente MCP e ao LLM. Não use o servidor MCP com clientes MCP ou LLMs não confiáveis.
Nota legal: O uso de um Cliente MCP/LLM de terceiros está sujeito exclusivamente aos termos de uso desse MCP/LLM, e a IBM não é responsável pelo desempenho dessas ferramentas de terceiros. A IBM renuncia expressamente a todas e quaisquer garantias e responsabilidades por Clientes MCP/LLMs de terceiros e pode não ser capaz de fornecer suporte para resolver problemas causados por ferramentas de terceiros.
Atenção: As saídas e recomendações fornecidas pelo servidor MCP são geradas dinamicamente e podem variar de acordo com a consulta, o modelo e o cliente MCP conectado. Os usuários devem revisar minuciosamente todas as saídas/recomendações para garantir que estejam alinhadas com as práticas recomendadas de segurança, metas de eficiência de custos e requisitos de conformidade da sua organização antes da implementação.
Pré-requisitos
- Certifique-se de que o Docker esteja instalado e em execução para usar o servidor em um ambiente conteinerizado.
- Instale um assistente de IA que suporte o Model Context Protocol (MCP).
Opções de linha de comando
Variáveis de ambiente:
| Variável | Descrição | Padrão |
|---|---|---|
TFE_ADDRESS | Define o endereço do Terraform Enterprise/HCP Terraform para chamadas de API. Deve incluir o protocolo (por exemplo, https://app.terraform.io). No modo streamable-http, esta é a única forma de definir o endereço; ele não pode ser fornecido pelos clientes por meio de cabeçalho ou parâmetro de consulta. | Opcional |
TFE_TOKEN | Token da API do Terraform Enterprise | "" (vazio) |
TF_MCP_SHARED_SECRET | Segredo compartilhado enviado como cabeçalho X-Tf-Mcp-Secret em solicitações ao HCP Terraform / TFE, usado para identificar solicitações originadas de uma implantação MCP hospedada. Deve ser usado somente por TLS. | "" (vazio) |
TFE_SKIP_TLS_VERIFY | Ignorar verificação TLS do HCP Terraform ou Terraform Enterprise | false |
LOG_LEVEL | Nível de registro: trace, debug, info, warn, error, fatal, panic (substitui o sinalizador --log-level) | info |
LOG_FORMAT | Formato de registro: text ou json (substitui o sinalizador --log-format) | text |
TRANSPORT_MODE | Defina como streamable-http para habilitar o transporte HTTP (o valor legado http ainda é suportado) | stdio |
TRANSPORT_HOST | Host para vincular o servidor HTTP | 127.0.0.1 |
TRANSPORT_PORT | Porta do servidor HTTP | 8080 |
MCP_ENDPOINT | Caminho do endpoint do servidor HTTP | /mcp |
MCP_REDIRECT_ROOT_URL | URL para redirecionar solicitações de / | "" |
MCP_KEEP_ALIVE | Intervalo de keep-alive para conexões SSE (por exemplo, 30s, 1m). 0 para desabilitar | 0 |
MCP_SESSION_MODE | Modo de sessão: stateful ou stateless | stateful |
MCP_ALLOWED_ORIGINS | Lista separada por vírgulas de origens permitidas para CORS | "" (vazio) |
MCP_CORS_MODE | Modo CORS: strict, development ou disabled | strict |
MCP_TLS_CERT_FILE | Caminho para o arquivo de certificado TLS, necessário para implantação fora de localhost (por exemplo, /path/to/cert.pem) | "" (vazio) |
MCP_TLS_KEY_FILE | Caminho para o arquivo de chave TLS, necessário para implantação fora de localhost (por exemplo, /path/to/key.pem) | "" (vazio) |
MCP_RATE_LIMIT_GLOBAL | Limite de taxa global (formato: rps:burst) | 10:20 |
MCP_RATE_LIMIT_SESSION | Limite de taxa por sessão (formato: rps:burst) | 5:10 |
MCP_ORGANIZATION_ALLOWLIST | Lista CSV de nomes de organizações do HCP Terraform autorizadas a acessar o servidor HTTP | "" (vazio) |
MCP_FORWARD_CLIENT_IP | Encaminhar o IP do cliente para o HCP Terraform / TFE via X-Forwarded-For. Defina como true para habilitar | false |
MCP_REMOTE_IP_METHOD | Como o IP do cliente é obtido quando o encaminhamento está habilitado: RemoteAddr (somente conexão direta), X-Real-IP ou X-Forwarded-For | RemoteAddr |
MCP_XFF_TRUSTED_HOPS | Número de saltos de proxy confiáveis contados a partir da direita da cadeia X-Forwarded-For. Usado somente quando MCP_REMOTE_IP_METHOD=X-Forwarded-For | 0 |
ENABLE_TF_OPERATIONS | Habilitar ferramentas que exigem aprovação explícita | false |
OTEL_METRICS_ENABLED | Habilitar ferramentas e métricas do servidor usando otel | false |
OTEL_METRICS_SERVICE_VERSION | Versão do terraform-mcp-server que envia métricas, usada para definir atributos de métricas. Também ajuda a rastrear métricas em diferentes implantações | latest |
OTEL_METRICS_SERVICE_NAME | Identifica a origem das métricas (por exemplo, "terraform-mcp-server") | terraform-mcp-server |
OTEL_METRICS_EXPORT_INTERVAL | Controla a frequência de liberação das métricas | 2 |
OTEL_METRICS_ENDPOINT | URL do seu OTel Collector ou backend | localhost:4318 |
INSTANA_ENABLED | Habilitar instrumentação Instana (métricas e rastreamento de solicitações HTTP) para o servidor streamable-http. Requer um agente Instana acessível pelo servidor. | false |
INSTANA_SERVICE_NAME | Se a instrumentação Instana estiver habilitada, o nome do serviço a ser usado para o servidor MCP | terraform-mcp-server |
# Stdio mode
terraform-mcp-server stdio [--log-file /path/to/log] [--log-level info] [--log-format text] [--toolsets <toolsets>] [--tools <tools>]
# StreamableHTTP mode
terraform-mcp-server streamable-http [--transport-port 8080] [--transport-host 127.0.0.1] [--mcp-endpoint /mcp] [--organization-allowlist <orgs-csv>] [--log-file /path/to/log] [--log-level info] [--log-format text] [--toolsets <toolsets>] [--tools <tools>]
Instruções
As instruções padrão do servidor MCP estão localizadas em cmd/terraform-mcp-server/instructions.md; se elas não parecerem adequadas às práticas de Terraform da sua organização ou se o servidor MCP estiver produzindo respostas imprecisas, substitua-as pelas suas próprias instruções e recompile o contêiner ou binário. Um exemplo dessas instruções está localizado em instructions/example-mcp-instructions.md
AGENTS.md essencialmente se comporta como READMEs para agentes de codificação: um local dedicado e previsível para fornecer contexto e instruções que ajudam agentes de codificação de IA a trabalhar no seu projeto. Um arquivo AGENTS.md funciona com diferentes agentes de codificação. Um exemplo dessas instruções está localizado em instructions/example-AGENTS.md; para usá-lo, faça commit de um arquivo chamado AGENTS.md no diretório onde residem suas configurações do Terraform.
Instalação
Uso com Visual Studio Code
Adicione o seguinte bloco JSON ao seu arquivo User Settings (JSON) no VS Code. Você pode fazer isso pressionando Ctrl + Shift + P e digitando Preferences: Open User Settings (JSON).
Saiba mais sobre o uso das ferramentas do servidor MCP na documentação do modo agente do VS Code.
| Versão 0.3.0+ ou superior | Versão 0.2.3 ou inferior |
|---|---|
|
|
Opcionalmente, você pode adicionar um exemplo semelhante (ou seja, sem a chave mcp) a um arquivo chamado .vscode/mcp.json no seu workspace. Isso permitirá que você compartilhe a configuração com outras pessoas.
| Versão 0.3.0+ ou superior | Versão 0.2.3 ou inferior |
|---|---|
|
|
Uso com Cursor
Adicione isso à sua configuração do Cursor (~/.cursor/mcp.json) ou via Settings → Cursor Settings → MCP:
| Versão 0.3.0+ ou superior | Versão 0.2.3 ou inferior |
|---|---|
|
|
Uso com Claude Desktop / Amazon Q Developer / Kiro CLI
Saiba mais sobre o uso de ferramentas do servidor MCP no Claude Desktop documentação do usuário. Leia mais sobre o uso do servidor MCP no Amazon Q Developer e no Kiro CLI.
| Versão 0.3.0+ ou superior | Versão 0.2.3 ou inferior |
|---|---|
|
|
Uso com Claude Code
Saiba mais sobre o uso e a adição de ferramentas do servidor MCP no Claude Code documentação do usuário
- Transporte Local (
stdio)
claude mcp add terraform -s user -t stdio -- docker run -i --rm hashicorp/terraform-mcp-server
- Transporte Remoto (
streamable-http)
# Run server (example)
docker run -p 8080:8080 --rm -e TRANSPORT_MODE=streamable-http -e TRANSPORT_HOST=0.0.0.0 hashicorp/terraform-mcp-server
# Add to Claude Code
claude mcp add --transport http terraform http://localhost:8080/mcp
Uso com Codex CLI
Saiba mais sobre o uso e a adição de ferramentas do servidor MCP no Codex CLI documentação do usuário.
Nota: Adicione
TFE_ADDRESSeTFE_TOKENaos comandos Docker para ferramentas autenticadas do HCP Terraform ou Terraform Enterprise.
- Transporte Local (
stdio)
codex mcp add terraform -- docker run -i --rm hashicorp/terraform-mcp-server
- Transporte Remoto (
streamable-http)
# Run server (example)
docker run --rm -p 127.0.0.1:8080:8080 -e TRANSPORT_MODE=streamable-http -e TRANSPORT_HOST=0.0.0.0 hashicorp/terraform-mcp-server
# Add to Codex
codex mcp add terraform --url http://localhost:8080/mcp
Uso com extensões Gemini
Por segurança, evite codificar suas credenciais; crie ou atualize ~/.gemini/.env (onde ~ é seu diretório pessoal ou de projeto) para armazenar credenciais do HCP Terraform ou Terraform Enterprise
# ~/.gemini/.env
TFE_ADDRESS=your_tfe_address_here
TFE_TOKEN=your_tfe_token_here
Instale a extensão e execute o Gemini
gemini extensions install https://github.com/hashicorp/terraform-mcp-server
gemini
Uso com Bob IDE / Shell
Saiba mais sobre o uso e a adição de ferramentas de servidores MCP no Bob IDE ou Shell Usando MCP no Bob.
| Versão 0.3.0+ ou superior | Versão 0.2.3 ou inferior |
|---|---|
|
|
Kubernetes (Helm)
Um chart Helm para implantar o servidor no Kubernetes está disponível em helm/terraform-mcp-server.
Instalar a partir do código-fonte
Use a versão de lançamento mais recente:
go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@latest
Use o branch principal:
go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@main
| Versão 0.3.0+ ou superior | Versão 0.2.3 ou inferior |
|---|---|
|
|
Construindo a imagem Docker localmente
Antes de usar o servidor, você precisa construir a imagem Docker localmente:
- Clone o repositório:
git clone https://github.com/hashicorp/terraform-mcp-server.git
cd terraform-mcp-server
- Construa a imagem Docker:
make docker-build
- Isso criará uma imagem Docker local que você pode usar na configuração a seguir.
# Run in stdio mode
docker run -i --rm terraform-mcp-server:dev
# Run in streamable-http mode
docker run -p 8080:8080 --rm -e TRANSPORT_MODE=streamable-http -e TRANSPORT_HOST=0.0.0.0 terraform-mcp-server:dev
# Filter tools (optional)
docker run -i --rm terraform-mcp-server:dev --toolsets=registry,terraform
docker run -i --rm terraform-mcp-server:dev --tools=search_providers,get_provider_details
Nota: Ao executar no Docker, você deve definir
TRANSPORT_HOST=0.0.0.0para permitir conexões de fora do contêiner.
- (Opcional) Teste a conexão no modo http
# Test the connection
curl http://localhost:8080/health
- Você pode usá-lo no seu assistente de IA da seguinte forma:
{
"mcpServers": {
"terraform": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"terraform-mcp-server:dev"
]
}
}
}
Ferramentas Disponíveis
Confira as ferramentas disponíveis aqui :link:
Recursos Disponíveis
Confira os recursos disponíveis aqui :link:
Métricas Disponíveis
Dois tipos de métricas são coletados. Primeiro, métricas padrão do servidor HTTP são adicionadas ao envolver o mux HTTP com otelhttp.NewHandler(...). Isso emite:
- http.server.request.body.size
- http.server.response.body.size
- http.server.request.duration
Segundo, o servidor MCP registra métricas personalizadas de ferramentas em torno da execução de ferramentas usando hooks MCP (BeforeCallTool / AfterCallTool). Isso emite:
- mcp_tool_calls_total
- mcp_tool_errors_total
- mcp_tool_duration_seconds
Filtragem de Ferramentas
Controle quais ferramentas estão disponíveis usando --toolsets (grupos) ou --tools (individuais):
# Enable tool groups (default: registry)
terraform-mcp-server --toolsets=registry,terraform
# Enable specific tools only
terraform-mcp-server --tools=search_providers,get_provider_details,list_workspaces
Conjuntos de ferramentas disponíveis: registry, registry-private, terraform, all, default. Consulte pkg/toolsets/mapping.go para nomes de ferramentas individuais. Não é possível usar ambas as flags juntas.
Suporte a Transporte
O Terraform MCP Server suporta múltiplos protocolos de transporte:
1. Transporte Stdio (Padrão)
Comunicação padrão de entrada/saída usando mensagens JSON-RPC. Ideal para desenvolvimento local e integração direta com clientes MCP.
2. Transporte StreamableHTTP
Transporte moderno baseado em HTTP que suporta tanto requisições HTTP diretas quanto fluxos Server-Sent Events (SSE). Este é o transporte recomendado para configurações remotas/distribuídas.
Recursos:
- Endpoint:
http://{hostname}:8080/mcp - Verificação de Saúde:
http://{hostname}:8080/health - Configuração de Ambiente: Defina
TRANSPORT_MODE=httpouTRANSPORT_PORT=8080para habilitar - Lista de Permissões de Organizações: Defina
MCP_ORGANIZATION_ALLOWLISTou--organization-allowlistcomo uma lista CSV de nomes de organizações HCP Terraform permitidas
Modos de Sessão
O Terraform MCP Server suporta dois modos de sessão ao usar o transporte StreamableHTTP:
- Modo Stateful (Padrão): Mantém o estado da sessão entre requisições, permitindo operações cientes de contexto.
- Modo Stateless: Cada requisição é processada de forma independente, sem manter o estado da sessão, o que pode ser útil para implantações de alta disponibilidade ou ao usar balanceadores de carga.
Para habilitar o modo stateless, defina a variável de ambiente:
export MCP_SESSION_MODE=stateless
Passagem de Token para Implantações Centralizadas
Ao executar o servidor MCP centralmente (modo StreamableHTTP) para múltiplos usuários, cada usuário pode passar seu próprio token Terraform via cabeçalhos HTTP para aplicação de RBAC. Isso permite que uma única instância do servidor atenda múltiplos usuários com diferentes permissões.
Quando MCP_ORGANIZATION_ALLOWLIST ou --organization-allowlist está configurado, a lista de permissões deve ser uma lista CSV de nomes de organizações HCP Terraform. O servidor exige Authorization: Bearer <token> e rejeita requisições a menos que esse token possa acessar pelo menos uma organização na lista CSV de permissões. O token bearer tem precedência se a requisição também incluir um cabeçalho TFE_TOKEN, garantindo que o token validado pela lista de permissões seja o token usado para requisições à API Terraform. A correspondência de nomes de organizações não diferencia maiúsculas de minúsculas. Se o valor CSV configurado for analisado para zero nomes de organizações, o servidor sai com um erro de lista de permissões de organizações malformada.
Encaminhamento de IP do Cliente
Ao executar o servidor MCP centralmente atrás de um proxy ou balanceador de carga, você pode encaminhar o IP do cliente de origem para HCP Terraform / TFE via cabeçalho X-Forwarded-For. Isso está desativado por padrão e deve ser habilitado com MCP_FORWARD_CLIENT_IP=true.
Quando habilitado, o servidor obtém o IP do cliente de acordo com MCP_REMOTE_IP_METHOD:
| Método | Comportamento |
|---|---|
RemoteAddr (padrão) | Usa apenas o endereço da conexão TCP direta. Ignora X-Forwarded-For e X-Real-IP. |
X-Real-IP | Usa o cabeçalho X-Real-IP se for um IP válido, caso contrário, recorre a RemoteAddr. |
X-Forwarded-For | Usa a cadeia X-Forwarded-For, selecionando a entrada MCP_XFF_TRUSTED_HOPS posições a partir da direita. Recorre a RemoteAddr se o valor estiver ausente ou for inválido. |
Modelo de confiança
X-Forwarded-For e X-Real-IP são definidos por clientes e proxies intermediários, portanto podem ser falsificados, a menos que um proxy confiável na frente do servidor os sobrescreva. Por esse motivo, o padrão é RemoteAddr, que confia apenas no peer ao qual o servidor está diretamente conectado. Habilite X-Real-IP ou X-Forwarded-For somente quando o servidor estiver atrás de um proxy que você controla e que define esses cabeçalhos.
Saltos confiáveis
Ao usar X-Forwarded-For, MCP_XFF_TRUSTED_HOPS é o número de proxies que você opera entre o servidor e a internet. Os saltos são contados a partir da direita da cadeia, pois cada proxy anexa o endereço do qual recebeu a requisição e a entrada mais à direita é definida pelo proxy mais próximo do servidor. O servidor pula esse número de entradas confiáveis e pega a próxima à esquerda.
Por exemplo, com MCP_XFF_TRUSTED_HOPS=1 e um cabeçalho de 200.1.2.3, 10.1.1.10, o servidor seleciona 200.1.2.3. Com MCP_XFF_TRUSTED_HOPS=2 e 108.0.0.1, 200.1.2.3, 10.1.1.10, 192.168.0.1, ele seleciona 200.1.2.3. Se o número de saltos for maior que o número de entradas, ou se a entrada selecionada não for um IP válido, o servidor recorre a RemoteAddr.
Definir o número de saltos muito baixo confiará em um valor fornecido pelo cliente; defini-lo muito alto confiará em um endereço mais adentro da sua própria infraestrutura. Defina-o para o número exato de proxies que você opera.
Limitações
- O servidor lê apenas o primeiro cabeçalho
X-Forwarded-Forem uma requisição. É válido que uma requisição carregue múltiplos cabeçalhosX-Forwarded-For, mas a biblioteca padrão do Go retorna apenas o primeiro, e o servidor não os une. Se sua cadeia de proxies emitir múltiplos cabeçalhos, configure-a para emitir um único cabeçalhoX-Forwarded-Forcombinado. - Endereços IPv4 e IPv6 são ambos suportados. Valores que não são IPs válidos são rejeitados e o servidor recorre a
RemoteAddr.
Migrando de versões anteriores
Versões anteriores usavam o valor X-Forwarded-For mais à esquerda quando o cabeçalho estava presente, sem configuração. Isso era inseguro, pois o valor mais à esquerda é o mais facilmente falsificável. O padrão agora é RemoteAddr. Se você executa o servidor atrás de um proxy e depende do encaminhamento de X-Forwarded-For para HCP Terraform / TFE, defina MCP_REMOTE_IP_METHOD=X-Forwarded-For e MCP_XFF_TRUSTED_HOPS para o número de proxies que você opera.
Cabeçalhos Suportados
| Cabeçalho | Descrição |
|---|---|
TFE_TOKEN | Token da API Terraform |
Authorization: Bearer <token> | Método alternativo usando autenticação Bearer padrão |
TFE_SKIP_TLS_VERIFY | Ignorar verificação TLS para a requisição |
Exemplo: curl
# Using TFE_TOKEN header
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "TFE_TOKEN: your-user-token" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",...}'
# Using Authorization Bearer header
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-user-token" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",...}'
Considerações de Segurança
- TFE_ADDRESS não pode ser definido por clientes. No modo streamable-http, o endereço Terraform é obtido apenas da variável de ambiente
TFE_ADDRESSdo lado do servidor (ou do padrão). Requisições que tentam definirTFE_ADDRESSvia cabeçalho HTTP ou parâmetro de consulta são rejeitadas com um 403. Isso impede que um cliente redirecione requisições, e o tokenAuthorization, para um servidor malicioso. - Identificação de implantação hospedada: definir
TF_MCP_SHARED_SECRETenvia esse valor como o cabeçalhoX-Tf-Mcp-Secretem cada requisição HCP Terraform / TFE, permitindo que o backend identifique requisições de uma implantação hospedada conhecida (por exemplo, para aplicar listas de permissões de IP). É um segredo estático enviado em um cabeçalho, portanto use-o apenas sobre TLS e trate o valor como uma credencial. - Nunca passe tokens em parâmetros de consulta - o servidor rejeitará tais requisições com um erro 400.
- Sempre use TLS (
MCP_TLS_CERT_FILE/MCP_TLS_KEY_FILE) ao implantar centralmente para proteger tokens em trânsito. - Configure
MCP_ALLOWED_ORIGINSpara restringir quais clientes podem se conectar.
Exemplo de Implantação Centralizada
# Start server centrally (no token set server-side)
docker run -p 8080:8080 \
-e TRANSPORT_MODE=streamable-http \
-e TRANSPORT_HOST=0.0.0.0 \
-e TFE_ADDRESS=https://tfe.company.com \
-e MCP_TLS_CERT_FILE=/certs/server.pem \
-e MCP_TLS_KEY_FILE=/certs/server-key.pem \
-e MCP_ALLOWED_ORIGINS=https://ide.company.com \
-e MCP_ORGANIZATION_ALLOWLIST=team-alpha,team-beta \
-v /path/to/certs:/certs \
hashicorp/terraform-mcp-server:1.3.0
Os usuários então se conectam com seus tokens individuais passados via cabeçalhos, permitindo a aplicação de RBAC por usuário.
Solução de Problemas
Proxy Corporativo / Inspeção TLS (Zscaler, etc.)
Se você estiver atrás de um proxy corporativo que realiza inspeção TLS (como Zscaler Internet Access), você pode ver erros de certificado:
tls: failed to verify certificate: x509: certificate signed by unknown authority
Solução: Monte o certificado CA corporativo no contêiner:
docker run -i --rm \
-v /path/to/corporate-ca.pem:/etc/ssl/certs/corporate-ca.pem \
-e SSL_CERT_FILE=/etc/ssl/certs/corporate-ca.pem \
hashicorp/terraform-mcp-server:1.3.0
Para configurações de clientes MCP:
{
"mcpServers": {
"terraform": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/path/to/corporate-ca.pem:/etc/ssl/certs/corporate-ca.pem",
"-e", "SSL_CERT_FILE=/etc/ssl/certs/corporate-ca.pem",
"-e", "TFE_TOKEN=<>",
"hashicorp/terraform-mcp-server:1.3.0"
]
}
}
}
Alternativa: Execute o binário diretamente
Se o Docker não for permitido no seu ambiente, você pode instalar e executar o binário do servidor diretamente, que usará o armazenamento de certificados do seu sistema:
go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@latest
terraform-mcp-server stdio
Desenvolvimento
Pré-requisitos
- Go (verifique o arquivo go.mod para a versão específica)
- Docker (opcional, para builds de contêineres)
Comandos Make Disponíveis
| Comando | Descrição |
|---|---|
make build | Compilar o binário |
make test | Executar todos os testes |
make test-e2e | Executar testes de ponta a ponta |
make docker-build | Criar imagem Docker |
make run-http | Executar servidor HTTP localmente |
make docker-run-http | Executar servidor HTTP no Docker |
make test-http | Testar endpoint de saúde HTTP |
make clean | Remover artefatos de compilação |
make help | Mostrar todos os comandos disponíveis |
Contribuindo
- Faça um fork do repositório
- Crie sua branch de funcionalidade
- Faça suas alterações
- Execute os testes
- Envie um pull request
Licença
Este projeto é licenciado sob os termos da licença de código aberto MPL-2.0. Consulte o arquivo LICENSE para os termos completos.
Segurança
Para problemas de segurança, entre em contato com security@hashicorp.com ou siga nossa política de segurança.
Suporte
Para relatórios de bugs e solicitações de recursos, abra uma issue no GitHub.
Para perguntas gerais e discussões, abra uma Discussão no GitHub.