Dev/Infra

Servidor MCP que dá aos LLMs controle total sobre ambientes de desenvolvimento Kubernetes locais via k3d, kubectl, Tilt, Helm e kustomize

Documentação

devinfra-mcp

Servidor MCP que dá aos LLMs controle total sobre ambientes de desenvolvimento Kubernetes locais. Construído em Go, expõe 63 ferramentas em 8 grupos para gerenciar clusters k3d, operações kubectl, charts Helm, overlays Kustomize, fluxos de trabalho de desenvolvimento Tilt, consultas ao Artifact Hub e busca de documentação.

Recursos

  • k3d (9 ferramentas) — criar, excluir, iniciar, parar, listar clusters e nós
  • kubectl (16 ferramentas) — get, describe, apply, delete, logs, port-forward, escape para comando bruto
  • Helm (10 ferramentas) — install, upgrade, uninstall, template, status, show values/chart, gerenciamento de repositórios (via Go SDK)
  • Kustomize (5 ferramentas) — build, build-and-apply, edit image/namespace, listar recursos (via Go API)
  • Tilt (10 ferramentas) — up, down, ci, logs, status, get, describe, trigger, session (consultas via HTTP API)
  • Artifact Hub (6 ferramentas) — search, package info, values, schema, readme, templates
  • Busca de documentação (4 ferramentas) — busca de texto completo na documentação de tilt, k3d, kubectl e Helm (índice Bleve, 257+ páginas)
  • CI (3 ferramentas) — bootstrap composto, teardown e coleta de diagnósticos

Arquitetura

Abordagem híbrida — cada grupo de ferramentas usa o melhor método de integração:

ComponenteIntegraçãoMotivo
HelmGo SDK (helm.sh/helm/v3)Segurança de tipos, sem dependência de CLI
KustomizeGo API (sigs.k8s.io/kustomize/api)Projetado para incorporação
Consultas TiltHTTP API (apiserver com descoberta automática)JSON estruturado, sem spawn de processo
Ciclo de vida TiltCLI shell-outCLI-first, sem SDK Go público
kubectlCLI shell-outEvita o inchaço do client-go, herda a autenticação do usuário
k3dCLI shell-outSem API Go pública

Pré-requisitos

  • Go 1.26+
  • Docker (para clusters k3d)
  • k3d — clusters Kubernetes locais
  • kubectl — interação com clusters
  • tilt — orquestração de fluxos de trabalho de desenvolvimento
  • Helm e Kustomize são opcionais no nível de CLI (os SDKs Go são incorporados)

Início Rápido

# Build the binary
make build

# Run over stdio (default MCP transport)
./bin/devinfra-mcp

# Run as HTTP server
./bin/devinfra-mcp --http --addr :8080

# With a config file
./bin/devinfra-mcp --config settings.json

Configuração do Cliente MCP

Claude Code / Claude Desktop

Adicione em .mcp.json na raiz do seu projeto (ou ~/.claude.json para global):

{
  "mcpServers": {
    "devinfra-mcp": {
      "command": "devinfra-mcp",
      "args": ["--config", "/path/to/settings.json"]
    }
  }
}

Cursor

Adicione em .cursor/mcp.json na raiz do seu projeto (ou ~/.cursor/mcp.json para global):

{
  "mcpServers": {
    "devinfra-mcp": {
      "command": "devinfra-mcp",
      "args": ["--config", "/path/to/settings.json"]
    }
  }
}

OpenAI Codex

Adicione em .codex/config.toml na raiz do seu projeto (ou ~/.codex/config.toml para global):

[mcp_servers.devinfra-mcp]
command = "devinfra-mcp"
args = ["--config", "/path/to/settings.json"]

Streamable HTTP (qualquer cliente)

Em vez de stdio, você pode executar o servidor via HTTP para clientes que suportam servidores MCP remotos:

./bin/devinfra-mcp --http --addr :8080 --config settings.json

Configuração

Crie um arquivo de configuração JSON para substituir os padrões. A configuração deve ser JSON válido — comentários não são permitidos.

{
  "kubeconfig": "",
  "default_context": "",
  "blocked_contexts": ["production", "staging-*"],
  "tilt_api": "",
  "kubectl_apply_dry_run_default": "client",
  "doc_index_path": "~/.devinfra-mcp/docs.bleve",
  "doc_sources": {
    "tilt": "github.com/tilt-dev/tilt.build/docs",
    "k3d": "github.com/k3d-io/k3d/docs",
    "k8s": "embedded"
  },
  "timeouts": {
    "default": "30s",
    "logs": "10s",
    "apply": "60s",
    "cluster_create": "120s",
    "tilt_ci": "300s"
  },
  "artifacthub": {
    "enabled": true,
    "base_url": "https://artifacthub.io/api/v1",
    "cache_ttl": "1h",
    "prefer_verified_publisher": true,
    "auto_lookup_on_install": true,
    "timeout": "10s"
  }
}
CampoDescrição
kubeconfigCaminho para o kubeconfig (vazio = padrão ~/.kube/config)
default_contextSubstituir o current-context do kubeconfig
blocked_contextsPadrões glob para contextos que a camada de segurança rejeitará
tilt_apiURL do apiserver do Tilt (vazio = descoberta automática a partir de ~/.tilt-dev/config)
kubectl_apply_dry_run_defaultModo dry-run padrão para kubectl_apply (client, server ou none)
doc_index_pathCaminho para o índice de busca Bleve (suporta ~/)
artifacthub.enabledFeature gate para ferramentas do Artifact Hub
artifacthub.auto_lookup_on_installBuscar values automaticamente antes de helm_install/helm_upgrade

Segurança

  • kubectl_apply tem como padrão dry_run: "client" — apply real requer dry_run: "none" explícito
  • Contextos bloqueados (ex.: production, staging-*) rejeitam operações na camada de segurança
  • kubectl_raw valida argumentos contra uma denylist; a substituição requer unsafe: true
  • kubectl_logs --follow tem limite de 10 segundos

Busca de Documentação

O servidor inclui um índice de busca de texto completo Bleve incorporado sobre 4 fontes de documentação:

FonteDocsRepositório
tilt~54tilt-dev/tilt.build
k3d~33k3d-io/k3d
k8s~75kubernetes/website (referência do kubectl)
helm~95helm/helm-www
# Clone doc sources (uses sparse checkout for large repos)
make docs-clone

# Build the Bleve search index
make docs-index

Desenvolvimento

make build              # Build binary to bin/devinfra-mcp
make test               # Unit tests
make test-integration   # Integration tests (needs Docker)
make e2e                # Full e2e: create k3d cluster, test, teardown
make lint               # golangci-lint
make vet                # go vet
make check              # vet + lint + test

Prompts

Modelos de fluxo de trabalho reutilizáveis que o LLM pode invocar para operações de várias etapas:

PromptDescriçãoArgumentos
bootstrap_dev_envCriar cluster k3d, mesclar kubeconfig, aplicar kustomize, iniciar tiltcluster_name, kustomize_path, tiltfile_path
teardown_dev_envParar tilt e excluir cluster k3dcluster_name
debug_podDescribe, logs e eventos para um pod com falhapod_name, namespace
deploy_and_verifyKustomize build + apply, status do rollout, verificar podskustomize_path, namespace, deployment_name
cluster_health_checkInformações do cluster, status dos nós, uso de recursos, eventos de aviso—
ci_runBootstrap do cluster CI, executar tilt ci, diagnósticos em caso de falha, teardowncluster_name, tiltfile_path
search_and_applyBuscar na documentação um conceito e mostrar padrões relevantestopic
helm_deploy_and_verifyConsulta ao Artifact Hub, helm install, status do rollout, verificarchart, release, namespace

Recursos

Dados somente leitura que o LLM pode trazer para o contexto:

URI do recursoDescrição
k8s://cluster/{name}/infoInformações do cluster (nós, versão, endpoint)
k8s://cluster/{name}/namespacesLista de namespaces
k8s://namespace/{ns}/podsPods (JSON)
k8s://namespace/{ns}/servicesServices (JSON)
k8s://namespace/{ns}/deploymentsDeployments (JSON)
k8s://namespace/{ns}/eventsEventos recentes (JSON)
k8s://tilt/statusStatus dos recursos do Tilt (se em execução)
k8s://tilt/sessionObjeto Tilt Session para monitoramento de CI
k8s://kubeconfigkubeconfig atual (minificado)
k8s://helm/releasesReleases Helm no contexto atual
docs://{source}/{slug}Página de documentação (fonte: tilt, k3d, k8s, helm)

Estrutura do Projeto

cmd/devinfra-mcp/main.go           Entry point, wires all components
internal/
  executor/                        Shell-out abstraction (all CLI calls go through here)
  tools/                           63 MCP tools across 8 groups
    k3d.go, kubectl.go, helm.go,
    kustomize.go, tilt.go,
    artifacthub.go, docsearch.go, ci.go
  helmclient/                      Helm Go SDK wrapper (Client interface + mock)
  kustomizeclient/                 Kustomize Go API wrapper (Client interface + mock)
  tilt/                            Tilt HTTP API client (Client interface + mock)
  artifacthub/                     Artifact Hub HTTP client with response caching
  docsearch/                       Bleve index builder + markdown scraper
  config/                          JSON config loading with defaults
  safety/                          Context blocklist, input sanitization
  prompts/                         MCP prompt templates
  resources/                       MCP resource providers (cluster state, docs)

Licença

Consulte LICENSE para detalhes.