DevContainer MCP Server

Gestiona entornos DevContainer usando indicaciones en lenguaje natural en cualquier editor compatible con MCP.

Documentación

Servidor MCP de DevContainer

Un servidor integral del Protocolo de Contexto de Modelos (MCP) que permite la gestión de DevContainers impulsada por IA. Este servidor permite a los desarrolladores crear, configurar, compilar, probar y modificar entornos DevContainer usando indicaciones en lenguaje natural a través de VS Code, Cursor o cualquier editor compatible con MCP.

🌟 Características

  • Procesamiento de Lenguaje Natural: Convierte descripciones en inglés sencillo en configuraciones válidas de devcontainer.json
  • Sistema de Plantillas: Más de 11 plantillas preconstruidas para stacks de desarrollo populares (Node.js, Python, Go, Rust, Java, etc.)
  • Gestión de Contenedores: Compila, prueba, inicia, detiene y monitorea DevContainers usando la CLI de DevContainer
  • Modificación en Vivo: Actualiza configuraciones existentes basándose en solicitudes en lenguaje natural
  • Monitoreo de Estado: Estado de salud del contenedor y de la configuración en tiempo real
  • Soporte Multi-Editor: Compatible con VS Code, Cursor, Claude Desktop y otros clientes MCP
  • Herramienta CLI: Interfaz de línea de comandos independiente para uso directo

📋 Tabla de Contenidos

🚀 Instalación

Requisitos Previos

  • Node.js 18+
  • Docker o Podman
  • CLI de DevContainer: npm install -g @devcontainers/cli

Instalar Paquete

npm install -g devcontainer-mcp-server

Instalación de Desarrollo

git clone https://github.com/Siddhant-K-code/mcp-devcontainer.git
cd mcp-devcontainer
npm install
npm run build

⚙️ Configuración

Configuración de VS Code

Agrega a tu settings.json de VS Code:

{
  "mcp.servers": {
    "devcontainer": {
      "command": "devcontainer-mcp-server",
      "args": [],
      "env": {}
    }
  }
}

Configuración de Cursor

Agrega a tu configuración de Cursor:

{
  "mcp": {
    "servers": {
      "devcontainer": {
        "command": "devcontainer-mcp-server"
      }
    }
  }
}

Configuración de Claude Desktop

Agrega a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o equivalente:

{
  "mcpServers": {
    "devcontainer": {
      "command": "devcontainer-mcp-server",
      "args": []
    }
  }
}

📚 Ejemplos de Uso

Indicaciones en Lenguaje Natural

Generar un proyecto React TypeScript:

"Create a React TypeScript project with Tailwind CSS on port 3000"

Python Django con PostgreSQL:

"Python Django web application with PostgreSQL database and Redis cache"

Microservicio Go:

"Go API server with Gin framework, PostgreSQL database, and Docker support on port 8080"

Aplicación full-stack MEAN:

"MEAN stack development environment with MongoDB, Express, Angular, and Node.js"

Salidas Esperadas

El sistema detecta automáticamente las tecnologías y genera configuraciones apropiadas:

  • Lenguajes: JavaScript, TypeScript, Python, Go, Rust, Java, PHP, Ruby
  • Frameworks: React, Angular, Vue, Express, Django, Flask, Spring, Rails
  • Bases de Datos: PostgreSQL, MySQL, MongoDB, Redis, SQLite, Elasticsearch
  • Herramientas: Docker, Git, herramientas de desarrollo, extensiones de VS Code
  • Puertos: Detección y reenvío automático de puertos

🛠️ Herramientas Disponibles

1. generate_devcontainer

Genera configuración de DevContainer a partir de lenguaje natural.

Parámetros:

  • prompt (obligatorio): Descripción en lenguaje natural
  • workspaceRoot (opcional): Ruta del espacio de trabajo (predeterminado: ".")
  • baseTemplate (opcional): Plantilla desde la cual comenzar

2. build_devcontainer

Compila el contenedor a partir de la configuración.

Parámetros:

  • workspaceRoot (opcional): Ruta del espacio de trabajo (predeterminado: ".")
  • configPath (opcional): Ruta de configuración personalizada
  • rebuild (opcional): Forzar recompilación (predeterminado: false)

3. test_devcontainer

Prueba la funcionalidad del contenedor.

Parámetros:

  • workspaceRoot (opcional): Ruta del espacio de trabajo (predeterminado: ".")
  • testCommands (opcional): Arreglo de comandos de prueba personalizados

4. list_templates

Muestra las plantillas disponibles.

Parámetros:

  • category (opcional): Filtrar por categoría

5. modify_devcontainer

Modifica la configuración existente.

Parámetros:

  • workspaceRoot (opcional): Ruta del espacio de trabajo (predeterminado: ".")
  • modifications (obligatorio): Descripción de los cambios deseados

6. get_devcontainer_status

Verifica el estado del contenedor.

Parámetros:

  • workspaceRoot (opcional): Ruta del espacio de trabajo (predeterminado: ".")

📦 Plantillas

Plantillas de Backend

  • nodejs-typescript: Node.js con soporte de TypeScript
  • python: Python con paquetes comunes y depuración
  • go: Desarrollo de Go con herramientas estándar
  • rust: Entorno de Rust con Cargo y depuración
  • java: Java con soporte de Maven/Gradle
  • php: PHP con Composer y depuración
  • ruby: Ruby con soporte de Rails

Plantillas de Frontend

  • react: Stack de desarrollo React moderno con TypeScript y Vite

Plantillas Full-Stack

  • mean-stack: MongoDB, Express, Angular, Node.js
  • docker-compose: Desarrollo de múltiples servicios

Plantillas Universales

  • universal: Entorno de desarrollo multi-lenguaje

Características de las Plantillas

Cada plantilla incluye:

  • Imagen base y tiempo de ejecución apropiados
  • Herramientas y depuradores específicos del lenguaje
  • Extensiones recomendadas de VS Code
  • Reenvío de puertos común
  • Comandos de configuración del gestor de paquetes

🖥️ Herramienta CLI

El paquete incluye una herramienta CLI independiente para uso directo:

Generar Configuración

devcontainer-mcp-cli generate "React TypeScript app with Tailwind CSS"

Compilar Contenedor

devcontainer-mcp-cli build --workspace . --rebuild

Probar Contenedor

devcontainer-mcp-cli test --command "npm test" --command "npm run lint"

Listar Plantillas

devcontainer-mcp-cli templates --category backend

Verificar Estado

devcontainer-mcp-cli status --workspace .

Modificar Configuración

devcontainer-mcp-cli modify "add Redis support and port 6379"

🐛 Solución de Problemas

Problemas Comunes

CLI de DevContainer no encontrada:

npm install -g @devcontainers/cli

Docker no está ejecutándose:

  • Asegúrate de que Docker Desktop esté ejecutándose
  • Verifica el estado del demonio de Docker: docker info

Fallos de compilación:

  • Verifica la sintaxis de devcontainer.json
  • Confirma la disponibilidad de la imagen base
  • Revisa los registros de compilación para errores específicos

Problemas de permisos:

  • Asegúrate de que Docker tenga los permisos adecuados
  • Verifica los permisos del sistema de archivos para el espacio de trabajo

Mensajes de Error

"No se encontró una plantilla adecuada":

  • Intenta con una indicación más específica
  • Usa list_templates para ver las opciones disponibles
  • Especifica una plantilla base explícitamente

"Configuración de DevContainer no encontrada":

  • Genera la configuración primero con generate_devcontainer
  • Verifica que .devcontainer/devcontainer.json exista

"Tiempo de compilación agotado":

  • Verifica la conexión a internet para descargas de imágenes
  • Considera usar imágenes base más ligeras
  • Aumenta el tiempo de espera si es necesario para imágenes grandes

📖 Referencia de API

Cumplimiento del Protocolo MCP

El servidor implementa la especificación del Protocolo de Contexto de Modelos:

  • Registro de herramientas con esquemas completos
  • Manejo adecuado de solicitudes/respuestas
  • Respuestas de error en formato MCP
  • Respuestas de contenido de texto

Formato de Respuesta

Todas las herramientas devuelven respuestas estructuradas con:

  • Estado de éxito/fallo
  • Salida detallada y mensajes de error
  • Razonamiento para las elecciones de configuración
  • Configuraciones generadas en formato JSON

Manejo de Errores

Manejo integral de errores para:

  • Configuraciones inválidas
  • Fallos de compilación
  • Problemas de disponibilidad de CLI
  • Errores del sistema de archivos
  • Tiempos de espera de red

🧪 Pruebas

Ejecuta el conjunto de pruebas:

npm test

Ejecuta con cobertura:

npm run test:coverage

Prueba componentes específicos:

npm test -- config-generator.test.ts
npm test -- template-manager.test.ts
npm test -- devcontainer-manager.test.ts

🏗️ Desarrollo

Estructura del Proyecto

src/
├── index.ts              # Main MCP server
├── config-generator.ts   # Natural language processing
├── devcontainer-manager.ts # Container operations
├── template-manager.ts   # Template management
├── cli.ts               # CLI tool
└── __tests__/           # Test suite

Compilar y Ejecutar

npm run build      # Compile TypeScript
npm run dev        # Development mode
npm run start      # Production mode
npm run lint       # Code linting

Agregar Nuevas Plantillas

  1. Edita src/template-manager.ts
  2. Agrega la configuración de la plantilla al arreglo de plantillas
  3. Incluye metadatos apropiados (lenguajes, frameworks, categoría)
  4. Agrega pruebas para la nueva plantilla
  5. Actualiza la documentación

Agregar Soporte de Lenguajes

  1. Actualiza los patrones de lenguaje en config-generator.ts
  2. Agrega patrones de detección de frameworks
  3. Asigna las extensiones apropiadas de VS Code
  4. Crea o actualiza plantillas según sea necesario
  5. Agrega casos de prueba

🤝 Contribuciones

¡Damos la bienvenida a las contribuciones! Consulta nuestras pautas de contribución:

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios con pruebas
  4. Asegúrate de que todas las pruebas pasen
  5. Envía una solicitud de extracción

Flujo de Trabajo de Desarrollo

  1. Instala las dependencias: npm install
  2. Ejecuta las pruebas: npm test
  3. Compila el proyecto: npm run build
  4. Prueba la CLI: npm run cli -- --help

📄 Licencia

Licencia MIT - consulta el archivo LICENCIA para más detalles.

🙏 Agradecimientos