Dev/Infra

Servidor MCP que otorga a los LLMs control total sobre entornos de desarrollo local de Kubernetes mediante k3d, kubectl, Tilt, Helm y kustomize

Documentación

devinfra-mcp

Servidor MCP que brinda a los LLMs control total sobre entornos de desarrollo Kubernetes locales. Construido en Go, expone 63 herramientas en 8 grupos para gestionar clústeres k3d, operaciones kubectl, charts de Helm, overlays de Kustomize, flujos de trabajo de desarrollo Tilt, búsquedas en Artifact Hub y búsqueda de documentación.

Características

  • k3d (9 herramientas) — crear, eliminar, iniciar, detener, listar clústeres y nodos
  • kubectl (16 herramientas) — get, describe, apply, delete, logs, port-forward, mecanismo de escape para comandos sin procesar
  • Helm (10 herramientas) — install, upgrade, uninstall, template, status, show values/chart, gestión de repositorios (vía Go SDK)
  • Kustomize (5 herramientas) — build, build-and-apply, edit image/namespace, list resources (vía Go API)
  • Tilt (10 herramientas) — up, down, ci, logs, status, get, describe, trigger, session (consultas vía HTTP API)
  • Artifact Hub (6 herramientas) — search, package info, values, schema, readme, templates
  • Búsqueda de documentación (4 herramientas) — búsqueda de texto completo en la documentación de tilt, k3d, kubectl y Helm (índice Bleve, más de 257 páginas)
  • CI (3 herramientas) — bootstrap compuesto, teardown y recopilación de diagnósticos

Arquitectura

Enfoque híbrido: cada grupo de herramientas usa el mejor método de integración:

ComponenteIntegraciónPor qué
HelmGo SDK (helm.sh/helm/v3)Seguridad de tipos, sin dependencia de CLI
KustomizeGo API (sigs.k8s.io/kustomize/api)Diseñado para embeberse
Consultas TiltHTTP API (apiserver auto-descubierto)JSON estructurado, sin lanzar procesos
Ciclo de vida TiltCLI shell-outCLI primero, sin Go SDK público
kubectlCLI shell-outEvita el tamaño de client-go, hereda la autenticación del usuario
k3dCLI shell-outSin Go API público

Requisitos previos

  • Go 1.26+
  • Docker (para clústeres k3d)
  • k3d — clústeres Kubernetes locales
  • kubectl — interacción con clústeres
  • tilt — orquestación de flujos de trabajo de desarrollo
  • Helm y Kustomize son opcionales a nivel de CLI (los Go SDK están embebidos)

Inicio 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

Configuración del cliente MCP

Claude Code / Claude Desktop

Agregar a .mcp.json en la raíz de tu proyecto (o ~/.claude.json para global):

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

Cursor

Agregar a .cursor/mcp.json en la raíz de tu proyecto (o ~/.cursor/mcp.json para global):

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

OpenAI Codex

Agregar a .codex/config.toml en la raíz de tu proyecto (o ~/.codex/config.toml para global):

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

Streamable HTTP (cualquier cliente)

En lugar de stdio, puedes ejecutar el servidor sobre HTTP para clientes que admitan servidores MCP remotos:

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

Configuración

Crea un archivo de configuración JSON para sobrescribir los valores predeterminados. La configuración debe ser JSON válido: no se permiten comentarios.

{
  "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"
  }
}
CampoDescripción
kubeconfigRuta al kubeconfig (vacío = ~/.kube/config predeterminado)
default_contextSobrescribir el contexto actual del kubeconfig
blocked_contextsPatrones glob para contextos que la capa de seguridad rechazará
tilt_apiURL del apiserver de Tilt (vacío = auto-descubrir desde ~/.tilt-dev/config)
kubectl_apply_dry_run_defaultModo dry-run predeterminado para kubectl_apply (client, server o none)
doc_index_pathRuta al índice de búsqueda Bleve (admite ~/)
artifacthub.enabledFeature gate para herramientas de Artifact Hub
artifacthub.auto_lookup_on_installObtener values automáticamente antes de helm_install/helm_upgrade

Seguridad

  • kubectl_apply tiene como predeterminado dry_run: "client" — apply real requiere dry_run: "none" explícito
  • Contextos bloqueados (p. ej., production, staging-*) rechazan operaciones en la capa de seguridad
  • kubectl_raw valida argumentos contra una denylist; la sobrescritura requiere unsafe: true
  • kubectl_logs --follow está limitado a 10 segundos

Búsqueda de documentación

El servidor incluye un índice de búsqueda de texto completo Bleve embebido sobre 4 fuentes de documentación:

FuenteDocumentosRepositorio
tilt~54tilt-dev/tilt.build
k3d~33k3d-io/k3d
k8s~75kubernetes/website (referencia de 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

Desarrollo

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

Plantillas de flujo de trabajo reutilizables que el LLM puede invocar para operaciones de varios pasos:

PromptDescripciónArgumentos
bootstrap_dev_envCrear clúster k3d, fusionar kubeconfig, aplicar kustomize, iniciar tiltcluster_name, kustomize_path, tiltfile_path
teardown_dev_envDetener tilt y eliminar el clúster k3dcluster_name
debug_podDescribe, logs y eventos para un pod con fallospod_name, namespace
deploy_and_verifyKustomize build + apply, estado de rollout, verificar podskustomize_path, namespace, deployment_name
cluster_health_checkInformación del clúster, estado de nodos, uso de recursos, eventos de advertencia—
ci_runBootstrap del clúster CI, ejecutar tilt ci, diagnósticos en caso de fallo, teardowncluster_name, tiltfile_path
search_and_applyBuscar en la documentación un concepto y mostrar patrones relevantestopic
helm_deploy_and_verifyBúsqueda en Artifact Hub, helm install, estado de rollout, verificarchart, release, namespace

Recursos

Datos de solo lectura que el LLM puede incorporar al contexto:

URI del recursoDescripción
k8s://cluster/{name}/infoInformación del clúster (nodos, versión, 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 recientes (JSON)
k8s://tilt/statusEstado del recurso Tilt (si está en ejecución)
k8s://tilt/sessionObjeto Tilt Session para monitoreo de CI
k8s://kubeconfigkubeconfig actual (minificado)
k8s://helm/releasesHelm releases en el contexto actual
docs://{source}/{slug}Página de documentación (fuente: tilt, k3d, k8s, helm)

Estructura del proyecto

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)

Licencia

Consulta LICENSE para más detalles.