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?
- Navegar pelo registro público — Pesquise provedores, módulos e políticas do Terraform Registry e traga seus detalhes para o seu trabalho de IaC.
- Gerenciar workspaces do HCP Terraform — Crie, atualize e exclua workspaces com variáveis, tags e gerenciamento de execuções via
TFE_TOKENeTFE_ADDRESS. - Listar organizações e projetos — Enumere organizações, projetos e conteúdo do registro privado do HCP Terraform da sua conta.
- Executar remotamente via HTTP — Sirva o servidor com
TRANSPORT_MODE=streamable-httpe tokens por usuário passados nos cabeçalhos da requisição. - Filtrar ferramentas expostas — Limite as ferramentas disponíveis por grupo ou nome usando
--toolsetsou--tools.
Documentação
Servidor MCP do Terraform
O Servidor MCP do Terraform é um servidor do Model Context Protocol (MCP) que se integra perfeitamente às APIs do Terraform Registry e do HCP Terraform, permitindo recursos avançados de automação e 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 o Terraform Registry: Integração direta com as APIs públicas do Terraform Registry para providers, módulos e políticas
- Suporte ao HCP Terraform e Terraform Enterprise: Gerenciamento completo de workspaces, listagem de organizações/projetos e acesso ao registro privado
- 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 se isenta expressamente de todas e quaisquer garantias e responsabilidades por Clientes MCP/LLMs de terceiros, e pode não conseguir oferecer 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 com base na consulta, no modelo e no 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, as metas de eficiência de custos e os requisitos de conformidade de 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 ofereça suporte ao 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 via 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 o cabeçalho X-Tf-Mcp-Secret nas requisições ao HCP Terraform / TFE, usado para identificar requisições originadas de uma implantação MCP hospedada. Deve ser usado apenas sobre TLS. | "" (vazio) |
TFE_SKIP_TLS_VERIFY | Ignorar a verificação TLS do HCP Terraform ou Terraform Enterprise | false |
LOG_LEVEL | Nível de log: trace, debug, info, warn, error, fatal, panic (substitui a flag --log-level) | info |
LOG_FORMAT | Formato de log: text ou json (substitui a flag --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 a qual redirecionar as requisições para / | "" |
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, obrigató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, obrigató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 ao 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 hops de proxy confiáveis contados a partir da direita da cadeia X-Forwarded-For. Usado apenas 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 entre 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 envio das métricas | 2 |
OTEL_METRICS_ENDPOINT | URL do seu OTel Collector ou backend | localhost:4318 |
INSTANA_ENABLED | Habilitar a instrumentação do Instana (métricas e rastreamento de requisições HTTP) para o servidor streamable-http. Requer um agente Instana acessível pelo servidor. | false |
INSTANA_SERVICE_NAME | Se a instrumentação do 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 para o servidor MCP estão localizadas em cmd/terraform-mcp-server/instructions.md; se elas não parecerem apropriadas para as 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 de tal instrução está localizado em instructions/example-mcp-instructions.md
AGENTS.md funciona essencialmente como READMEs para agentes de codificação: um local dedicado e previsível para fornecer o contexto e as instruções que ajudam agentes de IA de codificação a trabalhar no seu projeto. Um arquivo AGENTS.md funciona com diferentes agentes de codificação. Um exemplo de tal instrução está localizado em instructions/example-AGENTS.md; para usá-lo, faça commit de um arquivo chamado AGENTS.md no diretório onde suas configurações do Terraform residem.
Instalação
Uso com o 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 como usar as 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 o Cursor
Adicione isto à 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 como usar as ferramentas do servidor MCP no Claude Desktop na documentação do usuário. Leia mais sobre como usar o 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 como usar e adicionar ferramentas do servidor MCP no Claude Code na 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 como usar e adicionar ferramentas do servidor MCP no Codex CLI na 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 do Gemini
Por segurança, evite codificar suas credenciais diretamente; crie ou atualize ~/.gemini/.env (onde ~ é seu diretório home ou de projeto) para armazenar as 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 como usar e adicionar ferramentas de servidores MCP no Bob IDE ou Shell em Usando MCP no Bob.
| Versão 0.3.0+ ou superior | Versão 0.2.3 ou inferior |
|---|---|
|
|
Kubernetes (Helm)
Um Helm chart 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 mais recente do release:
go install github.com/hashicorp/terraform-mcp-server/cmd/terraform-mcp-server@latest
Use o branch main:
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_provider_docs,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 do 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_provider_docs,get_provider_details,list_workspaces
Conjuntos de ferramentas disponíveis: registry, registry-private, terraform, all, default. Consulte pkg/toolsets/mapping.go para nomes individuais de ferramentas. 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 integridade:
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 com estado (Padrão): Mantém o estado da sessão entre requisições, permitindo operações com reconhecimento de contexto.
- Modo sem estado: Cada requisição é processada independentemente 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 sem estado, defina a variável de ambiente:
export MCP_SESSION_MODE=stateless
Passagem de token para implantações centralizadas
Ao executar o servidor MCP de forma centralizada (modo StreamableHTTP) para vários usuários, cada usuário pode passar seu próprio token do Terraform via cabeçalhos HTTP para aplicação de RBAC. Isso permite que uma única instância do servidor atenda vários usuários com permissões diferentes.
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 de permissões CSV. 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 do Terraform. A correspondência de nomes de organizações não diferencia maiúsculas de minúsculas. Se o valor CSV configurado for analisado como zero nomes de organizações, o servidor encerra com um erro de lista de permissões de organizações malformada.
Encaminhamento de IP do cliente
Ao executar o servidor MCP de forma centralizada atrás de um proxy ou balanceador de carga, você pode encaminhar o IP do cliente de origem para o HCP Terraform / TFE por meio do cabeçalho X-Forwarded-For. Isso fica 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 o cabeçalho 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 à frente do servidor os sobrescreva. Por esse motivo, o padrão é RemoteAddr, que confia apenas no par 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. Alguns balanceadores de carga, incluindo os Application Load Balancers da AWS, não definem X-Real-IP, portanto, com eles, o cabeçalho vem diretamente do cliente e não deve ser usado.
Saltos confiáveis
Ao usar X-Forwarded-For, defina MCP_XFF_TRUSTED_HOPS como o número de proxies que você opera à frente do servidor. Cada proxy acrescenta o endereço de onde recebeu a requisição, não o seu próprio endereço, portanto o IP do cliente é a entrada que está a essa quantidade de posições a partir da direita. Tudo à esquerda dela foi enviado pelo cliente e pode ser falsificado.
Por exemplo, atrás de um único balanceador de carga como um AWS ALB, defina MCP_XFF_TRUSTED_HOPS=1. Um cabeçalho 198.51.100.7 é resolvido para 198.51.100.7, e um cabeçalho 1.2.3.4, 198.51.100.7, em que o cliente enviou 1.2.3.4 por conta própria, também é resolvido para 198.51.100.7. Com MCP_XFF_TRUSTED_HOPS=2 e 1.2.3.4, 198.51.100.7, 10.0.0.5, o servidor seleciona 198.51.100.7. Se a contagem 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 a contagem de saltos muito alta fará com que um valor fornecido pelo cliente seja confiado; defini-la muito baixa selecionará um endereço da sua própria infraestrutura. Defina-a como o número exato de proxies que você executa.
Limitações
- Se uma requisição carregar vários cabeçalhos
X-Forwarded-For, o servidor os une em ordem antes de selecionar uma entrada. CabeçalhoX-Forwarded-For. - 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 mais à esquerda de X-Forwarded-For quando o cabeçalho estava presente, sem nenhuma 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 de X-Forwarded-For ser encaminhado para o HCP Terraform / TFE, defina MCP_REMOTE_IP_METHOD=X-Forwarded-For e MCP_XFF_TRUSTED_HOPS como o número de proxies que você opera.
Cabeçalhos suportados
| Cabeçalho | Descrição |
|---|---|
TFE_TOKEN | Token da API do Terraform |
Authorization: Bearer <token> | Método alternativo usando autenticação Bearer padrão |
TFE_SKIP_TLS_VERIFY | Ignorar a 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 do 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 ao 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 de forma centralizada para proteger os 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.4.1
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 o Zscaler Internet Access), poderá 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.4.1
Para configurações de cliente 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.4.1"
]
}
}
}
Alternativa: Execute o binário diretamente
Se o Docker não for permitido em seu ambiente, você pode instalar e executar o binário do servidor diretamente, o 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 (consulte o arquivo go.mod para a versão específica)
- Docker (opcional, para builds de contêiner)
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 | Compilar a imagem Docker |
make run-http | Executar o servidor HTTP localmente |
make docker-run-http | Executar o servidor HTTP no Docker |
make test-http | Testar o endpoint de verificação de integridade 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 recurso
- 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 obter os termos completos.
Segurança
Para questões 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.