tilt-mcp
Tilt MCP es un servidor del Protocolo de Contexto de Modelo que se integra con Tilt para proporcionar acceso programático a los recursos, registros y operaciones de gestión de Tilt para entornos de desarrollo en Kubernetes.
Documentación
Servidor Tilt MCP
Un servidor de Model Context Protocol (MCP) que se integra con Tilt para proporcionar acceso programático a los recursos y registros de Tilt a través de aplicaciones LLM.
¿Por qué usar un servidor Tilt MCP?
Imagina una solicitud como esta:
Por favor, trabaja en {alguna solicitud LLM} y luego revisa tilt MCP para los registros del recurso "backend-api" para el estado de compilación. Asegúrate de que el recurso "backend-tests" sea exitoso con tus cambios.
La idea clave es que ya no necesitas decirle a tu LLM cómo construir y desplegar tu código. En su lugar, puedes simplemente pedirle qué construir y desplegar.
Tilt es una herramienta poderosa para trabajar con cargas de trabajo de Docker/Kubernetes. Con el servidor Tilt MCP, puedes integrar las funciones de Tilt directamente en tu flujo de trabajo usando Modelos de Lenguaje Grande (LLMs) como Claude Code / Codex / Gemini / VS Code Copilot / etc.
Esto ahorra tokens LLM significativos (y por lo tanto ⏱️+💰), tanto al evitar dar contexto adicional a tu LLM sobre cómo construir/desplegar, como al evitar que los LLM realmente hagan la construcción/despliegue. Todo lo que el LLM necesita saber es hacer cambios de código y luego llamar al servidor tilt MCP para obtener retroalimentación en tiempo real.
Resumen
El servidor Tilt MCP permite que los Modelos de Lenguaje Grande (LLMs) y asistentes de IA interactúen con tu entorno de desarrollo Tilt. Proporciona herramientas para:
- Listar todos los recursos Tilt habilitados
- Obtener registros de recursos específicos
- Monitorear el estado y la salud de los recursos
- Habilitar y deshabilitar recursos dinámicamente
- Obtener información detallada sobre los recursos
- Activar reconstrucciones de recursos
- Esperar a que los recursos alcancen condiciones específicas
Esto permite flujos de trabajo de desarrollo impulsados por IA, asistencia de depuración, monitoreo automatizado y gestión inteligente de recursos de tus servicios gestionados por Tilt.
Capacidades MCP Disponibles
El servidor Tilt MCP sigue la especificación del Model Context Protocol y expone tres tipos de capacidades:
🔍 Recursos (Datos de Solo Lectura)
Los recursos proporcionan acceso de solo lectura a los datos de Tilt. Son descubiertos automáticamente por los clientes MCP y se pueden acceder a través de su URI.
| URI del Recurso | Descripción |
|---|---|
tilt://resources/all{?tilt_port} | Lista de todos los recursos Tilt habilitados con su estado actual |
tilt://resources/{resource_name}/logs{?tail,filter,tilt_port} | Registros de un recurso específico con filtrado regex opcional (insensible a mayúsculas por defecto) |
tilt://resources/{resource_name}/describe{?tilt_port} | Información detallada sobre un recurso específico |
Todos los recursos admiten un parámetro opcional tilt_port (por defecto: 10350) para consultar diferentes instancias de Tilt.
Ejemplos de URIs:
tilt://resources/all- Obtener todos los recursos del puerto predeterminado (10350)tilt://resources/all?tilt_port=10351- Obtener todos los recursos del puerto 10351tilt://resources/frontend/logs- Obtener las últimas 1000 líneas de frontend (por defecto)tilt://resources/frontend/logs?tail=100&tilt_port=10351- Obtener las últimas 100 líneas de frontend en el puerto 10351tilt://resources/backend/logs?filter=error- Filtrar registros por errores (insensible a mayúsculas)tilt://resources/backend/logs?filter=X-Request-Id:%20abc123- Filtrar por ID de solicitudtilt://resources/backend/describe- Obtener información detallada sobre backend
🛠️ Herramientas (Acciones con Efectos Secundarios)
Las herramientas permiten a los LLMs realizar acciones que modifican el estado de tu entorno Tilt.
| Herramienta | Descripción | Parámetros |
|---|---|---|
trigger_resource | Activa un recurso Tilt para reconstruir/actualizar | resource_name (obligatorio), tilt_port (opcional, por defecto: '10350') |
enable_resource | Habilita uno o más recursos Tilt | resource_names (obligatorio, lista), enable_only (opcional, por defecto: false), tilt_port (opcional, por defecto: '10350') |
disable_resource | Deshabilita uno o más recursos Tilt | resource_names (obligatorio, lista), tilt_port (opcional, por defecto: '10350') |
wait_for_resource | Espera a que un recurso alcance una condición específica | resource_name (obligatorio), condition (opcional, por defecto: 'Ready', valores válidos: 'Ready' o 'UpToDate'), timeout_seconds (opcional, por defecto: 30), tilt_port (opcional, por defecto: '10350') |
Herramientas de Solo Lectura (para clientes que no admiten Recursos MCP):
| Herramienta | Descripción | Parámetros |
|---|---|---|
list_resources | Listar todos los recursos Tilt habilitados con su estado | tilt_port (opcional, por defecto: '10350') |
get_resource_logs | Obtener registros de un recurso específico con filtrado regex opcional | resource_name (obligatorio), tail (opcional, por defecto: 1000), filter (opcional, patrón regex), tilt_port (opcional, por defecto: '10350') |
describe_resource | Obtener información detallada sobre un recurso específico | resource_name (obligatorio), tilt_port (opcional, por defecto: '10350') |
Nota: Las herramientas de solo lectura (
list_resources,get_resource_logs,describe_resource) proporcionan la misma funcionalidad que los Recursos MCP anteriores, pero se exponen como herramientas para una mejor compatibilidad con clientes LLM (como Claude Code) que pueden no admitir completamente el descubrimiento de recursos MCP.
Todas las herramientas admiten un parámetro opcional tilt_port para apuntar a diferentes instancias de Tilt que se ejecutan en diferentes puertos.
💡 Prompts (Flujos de Trabajo Guiados)
Los prompts son plantillas reutilizables que guían al LLM a través de flujos de trabajo comunes de depuración y resolución de problemas.
| Prompt | Descripción | Parámetros |
|---|---|---|
debug_failing_resource | Guía de depuración paso a paso para un recurso con fallos | resource_name (obligatorio) |
analyze_resource_logs | Analizar registros de un recurso para identificar errores | resource_name (obligatorio), lines (opcional, por defecto: 100) |
troubleshoot_startup_failure | Investigar por qué un recurso no se inicia o sigue fallando | resource_name (obligatorio) |
health_check_all_resources | Verificación de salud integral en todos los recursos | Ninguno |
optimize_resource_usage | Optimizar el uso de recursos habilitando/deshabilitando servicios selectivamente | focus_resources (obligatorio, lista) |
Manejo de Errores
Todas las capacidades incluyen un manejo de errores integral:
- Recurso No Encontrado: Lanza
ValueErrorcon un mensaje útil - Problemas de Conexión con Tilt: Lanza
RuntimeErrorcon detalles del error de Tilt - Errores de Análisis JSON: Proporciona información detallada del error de análisis
Todas las operaciones se registran en ~/.tilt-mcp/tilt_mcp.log para depuración.
Características
Cumplimiento del Protocolo MCP:
- 🔍 Recursos: Acceso de solo lectura a los datos de Tilt mediante plantillas URI (por ejemplo,
tilt://resources/all) - 🛠️ Herramientas: Acciones con efectos secundarios para la gestión y control de recursos
- 💡 Prompts: Flujos de trabajo guiados para depuración y resolución de problemas
Capacidades:
- 📊 Descubrimiento de Recursos: Listar todos los recursos Tilt activos con su estado actual
- 📜 Recuperación de Registros: Obtener registros recientes de cualquier recurso Tilt con cola configurable
- 🔄 Activación de Recursos: Activar manualmente recursos Tilt para reconstruir/actualizar
- ✅ Control de Recursos: Habilitar o deshabilitar recursos dinámicamente
- 📋 Información Detallada: Obtener detalles completos sobre cualquier recurso
- ⏳ Condiciones de Espera: Esperar a que los recursos alcancen estados específicos
- 🤖 Flujos de Trabajo Guiados: Prompts preconstruidos para escenarios comunes de depuración
Características Técnicas:
- 🛡️ Seguridad de Tipos: Construido con sugerencias de tipo de Python para un mejor soporte de IDE
- 🚀 Soporte Asíncrono: Implementación totalmente asíncrona usando FastMCP
- 📈 Mejores Prácticas MCP: Separación adecuada de recursos, herramientas y prompts
- 🔧 Registro Integral: Todas las operaciones registradas en
~/.tilt-mcp/tilt_mcp.log
Requisitos Previos
- Python 3.10 o superior (requerido por FastMCP 2.0)
- Tilt instalado y configurado
- Un cliente compatible con MCP (por ejemplo, Claude Desktop, mcp-cli)
Instalación
Puedes instalar Tilt MCP de tres maneras:
Opción 1: Usando Docker (Recomendado para macOS/Windows)
La instalación basada en Docker no requiere configuración de Python y se mantiene automáticamente actualizada con compilaciones mensuales. La imagen está optimizada en tamaño usando Alpine Linux (~320MB vs 545MB+ para imágenes basadas en Debian - reducción del 41%).
Cómo funciona:
- Descubre automáticamente el puerto de la API de Tilt desde
~/.tilt-dev/configbasado en el parámetrotilt_port - Usa
socatpara crear dinámicamente un túnel TCP desde dentro del contenedor al servidor Tilt del host - El directorio
~/.tilt-devde tu host se monta con acceso de escritura (la CLI de Tilt necesita archivos de bloqueo) - Un solo servidor MCP puede consultar múltiples instancias de Tilt especificando diferentes valores de
tilt_port(10350, 10351, etc.) - El código Python maneja el descubrimiento de puertos y la gestión de socat automáticamente
Nota: El tamaño de la imagen está impulsado principalmente por las dependencias de FastMCP 2.0 (cryptography, pydantic, etc.). Para referencia:
- Base Alpine + Python: ~50MB
- Binario de Tilt: ~20MB
- FastMCP 2.0 + dependencias: ~250MB
Consulta la sección Configuración MCP a continuación para instrucciones de configuración.
Opción 2: Desde PyPI
pip install tilt-mcp
Mejor para: Usuarios de Linux o cuando prefieras instalación local
Opción 3: Desde el Código Fuente
git clone https://github.com/rrmistry/tilt-mcp.git
cd tilt-mcp
pip install -e .
Mejor para: Desarrollo o prueba de cambios locales
Configuración
Configuración Docker (Recomendado para macOS/Windows)
Agrega lo siguiente a tu archivo de configuración de Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/claude/claude_desktop_config.json
Para macOS/Linux (instancia única de Tilt en el puerto predeterminado 10350):
{
"mcpServers": {
"tilt": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"${HOME}/.tilt-dev:/home/mcp-user/.tilt-dev",
"-v",
"${HOME}/.tilt-mcp:/home/mcp-user/.tilt-mcp",
"--network=host",
"ghcr.io/rrmistry/tilt-mcp:latest"
],
"env": {}
}
}
}
Para múltiples instancias de Tilt:
Un solo servidor MCP puede consultar múltiples instancias de Tilt. Simplemente especifica el parámetro tilt_port al llamar a herramientas o recursos:
# Query resources from different Tilt instances
trigger_resource(resource_name="backend", tilt_port="10350") # First instance
trigger_resource(resource_name="backend", tilt_port="10351") # Second instance
# Get logs from specific instance
# URI: tilt://resources/backend/logs?tilt_port=10351
No se necesita configuración adicional: usa la misma configuración Docker de instancia única anterior.
Para Windows (PowerShell):
{
"mcpServers": {
"tilt": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"${env:USERPROFILE}\\.tilt-dev:/home/mcp-user/.tilt-dev",
"-v",
"${env:USERPROFILE}\\.tilt-mcp:/home/mcp-user/.tilt-mcp",
"--network=host",
"ghcr.io/rrmistry/tilt-mcp:latest"
],
"env": {}
}
}
}
Para Windows (CMD):
Usa %USERPROFILE% en lugar de ${env:USERPROFILE} en las rutas de montaje de volúmenes.
Notas Clave de Configuración:
- El parámetro
tilt_portrepresenta el puerto de la interfaz web (10350, 10351, etc.) - NO el puerto de la API - El código Python descubre automáticamente el puerto real de la API desde
~/.tilt-dev/config - Nombres de contexto: puerto 10350 → "tilt-default", puerto 10351 → "tilt-10351", etc.
- El directorio
~/.tilt-devdebe montarse con acceso de escritura (la CLI de Tilt necesita archivos de bloqueo) socatreenvía dinámicamente el puerto de API descubierto ahost.docker.internal--network=hostes necesario para quehost.docker.internalfuncione en macOS/Windows
Variables de Entorno:
| Variable | Predeterminado | Descripción |
|---|---|---|
IS_DOCKER_MCP_SERVER | false | Establecer a true cuando se ejecuta en Docker (se establece automáticamente en la imagen Docker) |
TILT_MCP_USE_SOCAT | auto | Controlar el comportamiento de reenvío TCP de socat (ver más abajo) |
TILT_HOST | host.docker.internal | Host al que reenviar cuando se usa socat |
TILT_MCP_LOG_FILE | (ninguno) | Sobrescribir la ruta del archivo de registro (por defecto: ~/.tilt-mcp/tilt_mcp.log) |
Modos de TILT_MCP_USE_SOCAT:
auto(por defecto): Auto-detección basada en la accesibilidad del puerto. Omite socat si Tilt ya es accesible en localhost (por ejemplo, Docker en Linux con--network=host).trueo1: Usar siempre el reenvío de socat, incluso si el puerto ya es accesible.falseo0: Nunca usar socat, incluso en entornos Docker.
Configuración de Instalación Local
Si instalaste vía PyPI o desde el código fuente, usa esta configuración más simple:
{
"mcpServers": {
"tilt": {
"command": "tilt-mcp"
}
}
}
Asegurándote de que tilt-mcp esté en tu PATH.
Para Desarrollo/Pruebas
Puedes ejecutar el servidor directamente:
python -m tilt_mcp.server
O úsalo con la CLI de MCP:
mcp run python -m tilt_mcp.server
Verificando la Versión
Para verificar la versión instalada de tilt-mcp:
tilt-mcp --version
Construyendo la Imagen Docker Localmente
Construye la imagen optimizada basada en Alpine:
docker build -t ghcr.io/rrmistry/tilt-mcp:latest .
O construye con una versión específica de Tilt:
docker build --build-arg TILT_VERSION=0.35.2 -t ghcr.io/rrmistry/tilt-mcp:latest .
Para usar Debian en lugar de Alpine (imagen más grande pero mejor compatibilidad):
docker build --build-arg BASE_IMAGE=python:3.11-slim-bookworm -t ghcr.io/rrmistry/tilt-mcp:latest .
Uso
Una vez configurado, el servidor Tilt MCP proporciona Recursos, Herramientas y Prompts a través del Model Context Protocol.
Usando Recursos
Los recursos son de solo lectura y proporcionan acceso directo a los datos de Tilt. Los clientes MCP pueden acceder a ellos a través de su URI:
Obtener todos los recursos:
tilt://resources/all
Devuelve:
{
"resources": [
{
"name": "frontend",
"type": "k8s",
"status": "ok",
"updateStatus": "ok"
},
{
"name": "backend-api",
"type": "k8s",
"status": "pending",
"updateStatus": "pending"
}
],
"count": 2
}
Obtener logs de un recurso:
tilt://resources/frontend/logs
Devuelve las últimas 1000 líneas de logs como texto plano (predeterminado).
Obtener un número personalizado de líneas de log:
tilt://resources/frontend/logs?tail=50
Devuelve las últimas 50 líneas de logs como texto plano.
Obtener información detallada del recurso:
tilt://resources/backend/describe
Devuelve una salida detallada en YAML/texto con configuración, estado e historial de compilación.
Uso de Herramientas
Las herramientas realizan acciones que modifican el estado de tu entorno Tilt.
Activar una reconstrucción:
{
"name": "trigger_resource",
"arguments": {
"resource_name": "backend"
}
}
Habilitar recursos específicos:
{
"name": "enable_resource",
"arguments": {
"resource_names": ["frontend", "backend"],
"enable_only": false
}
}
Deshabilitar recursos:
{
"name": "disable_resource",
"arguments": {
"resource_names": ["frontend", "backend"]
}
}
Esperar a que un recurso esté listo:
{
"name": "wait_for_resource",
"arguments": {
"resource_name": "backend",
"condition": "Ready",
"timeout_seconds": 60
}
}
Uso de Prompts
Los prompts proporcionan flujos de trabajo guiados para tareas comunes. Generan mensajes contextuales que guían al LLM a través de la depuración y resolución de problemas.
Depurar un recurso con fallos:
{
"name": "debug_failing_resource",
"arguments": {
"resource_name": "backend"
}
}
Esto genera un flujo de trabajo de depuración integral que guía al LLM para revisar logs, estado y sugerir correcciones.
Realizar una verificación de salud:
{
"name": "health_check_all_resources",
"arguments": {}
}
Esto crea un flujo de trabajo sistemático de verificación de salud en todos los recursos.
Optimizar el uso de recursos:
{
"name": "optimize_resource_usage",
"arguments": {
"focus_resources": ["backend", "database"]
}
}
Esto guía al LLM para habilitar solo los recursos especificados y deshabilitar otros para conservar recursos del sistema.
Ejemplos de Prompts
Aquí hay algunos ejemplos de prompts que puedes usar con un asistente de IA que tenga acceso a este servidor MCP:
Uso de Plantillas de Prompt Integradas:
- "Usa el prompt debug_failing_resource para el servicio backend"
- "Ejecuta una verificación de salud en todos mis recursos"
- "Usa el prompt troubleshoot_startup_failure para investigar por qué el frontend no arranca"
- "Analiza los logs del servicio backend usando el prompt analyze_resource_logs"
- "Ayúdame a optimizar mis recursos para enfocarme solo en el backend y la base de datos"
Descubrimiento y Estado de Recursos:
- "Muéstrame todos los recursos de Tilt que se están ejecutando actualmente"
- "¿Qué servicios están fallando o tienen errores?"
- "Compara el estado de los servicios frontend y backend"
- "Accede al recurso tilt://resources/all para ver todos los servicios"
Análisis de Logs:
- "Obtén las últimas 100 líneas de logs del servicio backend-api"
- "Lee los logs de tilt://resources/frontend/logs?tail=50"
- "Muéstrame las últimas 200 líneas de logs de cualquier servicio con fallos"
- "Ayúdame a depurar por qué el servicio frontend está fallando revisando los logs recientes"
Control de Recursos:
- "Deshabilita los servicios frontend y backend"
- "Habilita solo el servicio de base de datos y deshabilita todo lo demás"
- "Habilita el servicio frontend"
- "Deshabilita todos los servicios no esenciales para ahorrar recursos"
Compilación y Despliegue:
- "Activa una reconstrucción del servicio backend"
- "Reconstruye el frontend y muéstrame los logs"
- "Activa todos los servicios que tengan errores"
- "Espera a que el backend esté listo antes de revisar sus logs"
Flujos de Trabajo Avanzados de Automatización:
- "Habilita el backend, espera a que esté listo y luego revisa sus logs"
- "Deshabilita todos los servicios, luego habilita solo el frontend y espera a que arranque"
- "Obtén información detallada sobre la base de datos y muéstrame sus logs recientes"
- "Activa una reconstrucción del servicio API y espera hasta que esté listo"
- "Ejecuta una verificación de salud completa y corrige cualquier problema que encuentres"
Uso Directo de Recursos:
- "Lee tilt://resources/backend/describe para entender la configuración"
- "Compara logs de tilt://resources/frontend/logs?tail=500 y tilt://resources/backend/logs?tail=500"
- "Revisa tilt://resources/all para ver qué servicios necesitan atención"
- "Obtén las últimas 50 líneas del frontend: tilt://resources/frontend/logs?tail=50"
Desarrollo
Configuración del entorno de desarrollo
# Clone the repository
git clone https://github.com/yourusername/tilt-mcp.git
cd tilt-mcp
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode with dev dependencies
pip install -e ".[dev]"
Ejecución de pruebas
pytest
Formato de código y linting
# Format code
black src tests
# Run linter
ruff check src tests
# Type checking
mypy src
Solución de Problemas
Problemas Comunes
-
Error "Tilt no encontrado"
- Asegúrate de que Tilt esté instalado y disponible en tu PATH
- Intenta ejecutar
tilt versionpara verificar la instalación
-
"No se encontraron recursos" cuando Tilt está en ejecución
- Asegúrate de que tu Tiltfile esté cargado y los recursos estén iniciados
- Verifica que estés ejecutando el servidor MCP en el directorio correcto
-
Errores de conexión
- Verifica que la configuración del cliente MCP sea correcta
- Revisa los logs en
~/.tilt-mcp/tilt_mcp.log
-
tilt-mcp basado en Docker no puede conectarse
- Asegúrate de que tu directorio
~/.tilt-devexista y esté siendo creado por tu instancia de Tilt - El directorio debe estar montado con acceso de escritura:
~/.tilt-dev:/home/mcp-user/.tilt-dev(la CLI de Tilt necesita archivos de bloqueo) - El parámetro
tilt_portdebe ser tu puerto de interfaz web (10350, 10351, etc.), no el puerto API aleatorio - Revisa los logs en
~/.tilt-mcp/tilt_mcp.logpara ver el puerto API descubierto - El código Python descubre automáticamente el puerto API desde la configuración y lanza
socatautomáticamente - Asegúrate de que
--network=hostesté incluido en los argumentos de docker (requerido parahost.docker.internal) - Si socat está causando problemas, puedes controlarlo mediante la variable de entorno
TILT_MCP_USE_SOCAT:auto(predeterminado): Detecta automáticamente si socat es necesario verificando la accesibilidad del puertotrue: Forzar socat activadofalse: Forzar socat desactivado
- Asegúrate de que tu directorio
-
Compatibilidad con Alpine Linux
- La imagen de Docker usa Alpine Linux para optimizar el tamaño
- La mayoría de los paquetes de Python funcionan bien, pero si encuentras problemas con dependencias binarias, puedes compilar usando la base Debian cambiando el argumento de compilación
BASE_IMAGEapython:3.11-slim-bookworm
Registro de Depuración
El servidor MCP registra todas las operaciones en ~/.tilt-mcp/tilt_mcp.log. El registro incluye:
- Eventos de inicio/apagado del servidor
- Operaciones de obtención de recursos
- Operaciones de recuperación de logs
- Mensajes de error con detalles completos
Para habilitar el registro de depuración, establece la variable de entorno:
export LOG_LEVEL=DEBUG
Formato de Registro: timestamp - logger_name - level - message
Visualización de Registros:
# View recent logs
tail -f ~/.tilt-mcp/tilt_mcp.log
# Search for errors
grep ERROR ~/.tilt-mcp/tilt_mcp.log
# View logs from a specific resource fetch
grep "get_all_resources" ~/.tilt-mcp/tilt_mcp.log
Contribuciones
¡Agradecemos las contribuciones! Consulta nuestra Guía de Contribuciones para obtener detalles sobre:
- Configuración de tu entorno de desarrollo
- Ejecución de pruebas
- Envío de solicitudes de extracción
- Pautas de estilo de código
Licencia
Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENCIA para más detalles.
Agradecimientos
- Construido con FastMCP para la implementación del servidor MCP
- Se integra con Tilt para el desarrollo de Kubernetes
Soporte
- 📧 Correo electrónico: aryan.agrawal@glean.com
- 💬 Problemas: Problemas de GitHub