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:
| Componente | Integración | Por qué |
|---|---|---|
| Helm | Go SDK (helm.sh/helm/v3) | Seguridad de tipos, sin dependencia de CLI |
| Kustomize | Go API (sigs.k8s.io/kustomize/api) | Diseñado para embeberse |
| Consultas Tilt | HTTP API (apiserver auto-descubierto) | JSON estructurado, sin lanzar procesos |
| Ciclo de vida Tilt | CLI shell-out | CLI primero, sin Go SDK público |
| kubectl | CLI shell-out | Evita el tamaño de client-go, hereda la autenticación del usuario |
| k3d | CLI shell-out | Sin 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"
}
}
| Campo | Descripción |
|---|---|
kubeconfig | Ruta al kubeconfig (vacío = ~/.kube/config predeterminado) |
default_context | Sobrescribir el contexto actual del kubeconfig |
blocked_contexts | Patrones glob para contextos que la capa de seguridad rechazará |
tilt_api | URL del apiserver de Tilt (vacío = auto-descubrir desde ~/.tilt-dev/config) |
kubectl_apply_dry_run_default | Modo dry-run predeterminado para kubectl_apply (client, server o none) |
doc_index_path | Ruta al índice de búsqueda Bleve (admite ~/) |
artifacthub.enabled | Feature gate para herramientas de Artifact Hub |
artifacthub.auto_lookup_on_install | Obtener values automáticamente antes de helm_install/helm_upgrade |
Seguridad
kubectl_applytiene como predeterminadodry_run: "client"— apply real requieredry_run: "none"explícito- Contextos bloqueados (p. ej.,
production,staging-*) rechazan operaciones en la capa de seguridad kubectl_rawvalida argumentos contra una denylist; la sobrescritura requiereunsafe: truekubectl_logs --followestá 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:
| Fuente | Documentos | Repositorio |
|---|---|---|
| tilt | ~54 | tilt-dev/tilt.build |
| k3d | ~33 | k3d-io/k3d |
| k8s | ~75 | kubernetes/website (referencia de kubectl) |
| helm | ~95 | helm/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:
| Prompt | Descripción | Argumentos |
|---|---|---|
bootstrap_dev_env | Crear clúster k3d, fusionar kubeconfig, aplicar kustomize, iniciar tilt | cluster_name, kustomize_path, tiltfile_path |
teardown_dev_env | Detener tilt y eliminar el clúster k3d | cluster_name |
debug_pod | Describe, logs y eventos para un pod con fallos | pod_name, namespace |
deploy_and_verify | Kustomize build + apply, estado de rollout, verificar pods | kustomize_path, namespace, deployment_name |
cluster_health_check | Información del clúster, estado de nodos, uso de recursos, eventos de advertencia | — |
ci_run | Bootstrap del clúster CI, ejecutar tilt ci, diagnósticos en caso de fallo, teardown | cluster_name, tiltfile_path |
search_and_apply | Buscar en la documentación un concepto y mostrar patrones relevantes | topic |
helm_deploy_and_verify | Búsqueda en Artifact Hub, helm install, estado de rollout, verificar | chart, release, namespace |
Recursos
Datos de solo lectura que el LLM puede incorporar al contexto:
| URI del recurso | Descripción |
|---|---|
k8s://cluster/{name}/info | Información del clúster (nodos, versión, endpoint) |
k8s://cluster/{name}/namespaces | Lista de namespaces |
k8s://namespace/{ns}/pods | Pods (JSON) |
k8s://namespace/{ns}/services | Services (JSON) |
k8s://namespace/{ns}/deployments | Deployments (JSON) |
k8s://namespace/{ns}/events | Eventos recientes (JSON) |
k8s://tilt/status | Estado del recurso Tilt (si está en ejecución) |
k8s://tilt/session | Objeto Tilt Session para monitoreo de CI |
k8s://kubeconfig | kubeconfig actual (minificado) |
k8s://helm/releases | Helm 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.