EasyPanel MCP Server
Enables full management of Docker infrastructure, including creating and updating services, managing isolated networks, and retrieving container logs.
Supports the deployment and configuration of Flask-based API services within the managed infrastructure.
Allows for automated deployment triggers and infrastructure updates directly from GitHub Actions workflows.
Integrates infrastructure management and service orchestration tools directly into n8n workflows.
Facilitates the deployment and management of PostgreSQL database services as part of application stacks.
Provides capabilities to deploy, monitor, and diagnose Redis cache services, including log analysis for connection troubleshooting.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EasyPanel MCP Server Deploy a new Flask API service with a PostgreSQL database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
EasyPanel MCP Server
Documentación · Inicio rápido · Reportar un problema
Servidor de Model Context Protocol (MCP) para EasyPanel. Este conector permite a clientes de inteligencia artificial y entornos de automatización gestionar infraestructura, desplegar servicios, configurar redes y monitorear recursos mediante la API tRPC de EasyPanel en lenguaje natural.
Descripción General
Este servidor implementa el estándar abierto Model Context Protocol (MCP) y utiliza la línea estable v2 del SDK oficial de Python. Permite a agentes de IA interactuar con una instancia de EasyPanel desde un cliente configurado, automatizando tareas complejas de administración de servidores, despliegues y diagnósticos.
Características Principales
Gestión Completa de Servicios: Listado, inspección, creación, actualización, detención y reinicio de aplicaciones y bases de datos.
Manejo Inteligente de Recursos: Detección automática y ruteo de namespaces tRPC según el tipo de servicio (
app,postgres,redis,mysql,mongodb,mariadb).Auto-Scaling Automatizado: Escalado vertical de CPU y memoria basado en métricas y límites definidos.
Análisis y Debugging: Recuperación de logs estructurados e información de despliegue para auditoría y diagnóstico de fallos en tiempo real.
Descubrimiento de Redes: Análisis automático de topologías de comunicación interna y pública de Docker.
Soporte Multicliente: Transporte local
stdio, transporte remoto moderno Streamable HTTP y compatibilidad explícita con SSE.
Related MCP server: Docker Manager MCP
Instalación y Configuración
1. Clonar el repositorio
git clone https://github.com/dannymaaz/easypanel-mcp
cd easypanel-mcp2. Configurar el entorno virtual e instalar
Recomendamos usar un entorno virtual para aislar las dependencias e instalar el proyecto en modo editable. Esto utiliza pyproject.toml, instala las dependencias compatibles y registra el comando easypanel-mcp.
En Windows (PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install -e .En macOS / Linux:
python3 -m venv venv
source venv/bin/activate
python -m pip install -e .requirements.txt se mantiene disponible para instalaciones tradicionales, pero la instalación mediante pyproject.toml es la recomendada para desarrollo y para clientes MCP locales.
3. Configurar variables de entorno
Crea un archivo .env en la raíz del proyecto basándote en el ejemplo provisto:
cp .env.example .envEdita el archivo .env configurando los accesos a tu EasyPanel:
# URL de acceso a tu instancia (ej. https://panel.tudominio.com)
EASYPANEL_URL=https://tu-easypanel.com
# Token de API o credenciales en formato email:password
EASYPANEL_API_KEY=tu_api_key_aqui
# Parámetros adicionales
EASYPANEL_TIMEOUT=30
EASYPANEL_VERIFY_SSL=true
# Configuración del servidor MCP
MCP_HOST=127.0.0.1
MCP_PORT=8080
MCP_LOG_LEVEL=INFO4. Verificar el arranque
Con el entorno virtual activo puedes iniciar el servidor mediante el entrypoint instalado:
easypanel-mcpTambién se mantiene soportada la ejecución directa por ruta absoluta a src/server.py. El servidor resuelve sus imports relativos al repositorio, por lo que los clientes MCP no necesitan configurar PYTHONPATH ni arrancar desde la raíz del proyecto.
Configuración en Clientes MCP
1. Antigravity IDE
Para integrar el servidor en Antigravity, añade la ruta del script en la configuración del gestor de plugins de MCP.
Asegúrate de apuntar al ejecutable de Python de tu entorno virtual (venv) para que localice las dependencias instaladas:
{
"mcpServers": {
"easypanel-mcp": {
"command": "C:\\ruta\\a\\easypanel-mcp\\venv\\Scripts\\python.exe",
"args": ["C:\\ruta\\a\\easypanel-mcp\\src\\server.py"],
"env": {
"EASYPANEL_URL": "https://tu-easypanel.com",
"EASYPANEL_API_KEY": "tu_api_key"
}
}
}
}2. Cursor / VS Code (Extensiones Cline & Roo Code)
En editores compatibles con OpenCode o extensiones de agentes inteligentes:
Abre el panel de configuración de la extensión (ej. en Roo Code, ve a Settings > MCP Servers).
Añade una nueva configuración de servidor:
Name:
easypanelType:
commandCommand:
python(o la ruta al ejecutable de tuvenv)Args:
["/ruta/absoluta/a/easypanel-mcp/src/server.py"]Environment Variables:
EASYPANEL_URL:https://tu-easypanel.comEASYPANEL_API_KEY:tu_api_key
3. Claude Desktop
Añade el servidor al archivo de configuración de Claude Desktop (claude_desktop_config.json):
En Windows: %APPDATA%\Claude\claude_desktop_config.json
En macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"easypanel-mcp": {
"command": "python",
"args": ["/ruta/absoluta/a/easypanel-mcp/src/server.py"],
"env": {
"EASYPANEL_URL": "https://tu-easypanel.com",
"EASYPANEL_API_KEY": "tu_api_key"
}
}
}
}4. n8n y clientes remotos (Streamable HTTP)
Para desplegar el servidor como servicio MCP remoto, inicia el transporte Streamable HTTP:
easypanel-mcp httpTambién puedes utilizar:
python src/server.py httpEl endpoint MCP queda disponible en:
http://127.0.0.1:8080/mcpConfigura ese endpoint en un cliente compatible con MCP, por ejemplo un nodo MCP Client/MCP Client Tool de n8n. El cliente MCP se encarga de la negociación del protocolo, descubrimiento de tools y llamadas JSON-RPC.
Si necesitas mantener una integración antigua basada en Server-Sent Events, SSE continúa disponible de forma explícita:
easypanel-mcp sseEjemplos Prácticos de Uso
Una vez conectado, puedes interactuar directamente con tu agente haciéndole peticiones de infraestructura basadas en la vida real:
Despliegue de Aplicaciones
Usuario: "Despliega un servicio frontend usando la imagen nginx:alpine en el proyecto principal."
IA (Interno): Invocacreate_service(name="frontend", project_id="principal", image="nginx:alpine")y posteriormentedeploy_service.
IA (Respuesta): "He creado y desplegado el servicio 'frontend' exitosamente en tu proyecto. Está listo para recibir configuración de dominio."
Diagnóstico de Caídas
Usuario: "¿Por qué el servicio backend está fallando?"
IA (Interno): Invocaget_service_logs(service_id="backend").
IA (Respuesta): "El servicio backend reporta un estado 'crashed' debido al siguiente error en consola: 'ConnectionRefusedError: No se pudo establecer conexión con redis-cache en el puerto 6379'. ¿Deseas que verifique si el contenedor de Redis está detenido?"
Monitoreo y Escalado
Usuario: "Verifica las estadísticas del sistema y escala el servicio backend si el uso de CPU es alto."
IA (Interno): Invocaget_system_stats()seguido descale_service(service_id="backend", cpu=2, memory=4096).
Herramientas Disponibles
Categoría | Herramienta | Parámetros | Descripción |
Servicios |
|
| Lista todos los servicios y sus estados. |
|
| Obtiene la configuración detallada de un servicio. | |
|
| Crea un nuevo servicio (soporta apps y DBs). | |
|
| Modifica configuraciones de entorno, puertos y recursos. | |
|
| Remueve un servicio de EasyPanel. | |
|
| Reinicia de inmediato el contenedor de la aplicación. | |
|
| Obtiene los últimos logs de consola del contenedor. | |
Despliegues |
|
| Lista el historial de despliegues. |
|
| Lanza un nuevo despliegue actualizando la imagen. | |
Redes |
| - | Descubre la topología de red Docker pública/interna. |
Proyectos |
| - | Lista los proyectos creados en la instancia. |
|
| Crea un nuevo proyecto organizador. | |
Monitoreo |
| - | Obtiene estadísticas en tiempo real de CPU, RAM y disco. |
Escalado |
|
| Escala verticalmente los recursos asignados. |
|
| Escala dinámicamente según la carga actual. | |
Seguridad |
| - | Lista los dominios asignados en la instancia. |
| - | Obtiene la clave SSH pública para despliegues Git. |
Seguridad
Guarda
EASYPANEL_API_KEYúnicamente en variables de entorno o gestores de secretos; nunca la publiques ni la confirmes en Git.Usa una cuenta o token con los permisos mínimos necesarios para las tareas que vayas a ejecutar.
Revisa las acciones destructivas propuestas por el agente antes de ejecutarlas.
Para reportar una vulnerabilidad, consulta SECURITY.md y evita publicar credenciales o detalles sensibles en issues públicos.
Verificación del Entorno
Para verificar la conectividad de la API y el estado de la configuración sin arrancar el servidor MCP completo, puedes ejecutar la suite de pruebas unitarias:
python -m pytest tests/test_basic.py -vAutor
Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Available Tools
29 toolsauto_scale_serviceA
Auto-scale a service based on current system resource usage. Doubles CPU and/or memory (capped at max_cpu/max_memory) when usage exceeds the given thresholds; otherwise makes no change.
Args: service_id: Service ID cpu_threshold: CPU usage % above which to scale up memory_threshold: Memory usage % above which to scale up max_cpu: Maximum CPU cores to scale to max_memory: Maximum memory (MB) to scale to
Inputs: service_id (required), max_cpu, max_memory, cpu_threshold, +1 more. Returns: object
create_deploymentC
Create a new deployment in EasyPanel.
Args: project_id: Project ID service_id: Service ID image: Docker image to deploy config: Additional deployment configuration
Inputs: image (required), project_id (required), service_id (required), config. Returns: object
create_domainA
Create a new domain, optionally bound to a service.
Args: name: Domain name (e.g. app.example.com) service_id: Optional service ID to attach the domain to
Inputs: name (required), service_id. Returns: object
create_networkARead-only
Advisory helper for network creation.
IMPORTANT: EasyPanel creates and manages Docker networks automatically when services are deployed; there is no API to create one directly. This tool does NOT create anything — it returns guidance. To isolate services, set internal=true when creating the service instead.
Args: name: Network name internal: Whether the network is internal (isolated from internet) driver: Network driver (overlay, bridge, etc.)
Inputs: name (required), driver, internal. Returns: object
create_projectB
Create a new project in EasyPanel.
Args: name: Project name description: Project description
Inputs: name (required), description. Returns: object
create_serviceA
Create a new service in EasyPanel.
Args: name: Service name project_id: Project ID image: Docker image (e.g., nginx:latest, postgres:15) config: Additional configuration (ports, env vars, volumes, etc.)
Inputs: name (required), image (required), project_id (required), config. Returns: object
delete_networkARead-only
Advisory helper for network deletion.
IMPORTANT: EasyPanel removes a network automatically once all services in it are deleted; there is no API to delete one directly. This tool does NOT delete anything — it returns guidance.
Args: network_id: Network ID
Inputs: network_id (required). Returns: object
delete_projectADestructiveIdempotent
Delete a project from EasyPanel, including all its services. This is destructive and cannot be undone.
Args: project_id: Project ID
Inputs: project_id (required). Returns: object
delete_serviceADestructiveIdempotent
Delete a service from EasyPanel. This is destructive and cannot be undone.
Args: service_id: Service ID
Inputs: service_id (required). Returns: object
deploy_serviceA
Deploy / redeploy a service (pulls the latest source/image and restarts).
Args: service_id: Service ID
Inputs: service_id (required). Returns: object
get_deploymentA
Get detailed information about a specific deployment.
Args: deployment_id: Deployment ID
Inputs: deployment_id (required). Returns: object
get_deployment_logsC
Get logs from a deployment.
Args: deployment_id: Deployment ID
Inputs: deployment_id (required). Returns: object
get_projectBRead-only
Get detailed information about a specific project.
Args: project_id: Project ID
Inputs: project_id (required). Returns: object
get_server_ipARead-only
Get the server's public IP address.
Inputs: no named parameters. Returns: object
get_serviceBRead-only
Get detailed information about a specific service.
Args: service_id: Service ID
Inputs: service_id (required). Returns: object
get_service_logsARead-only
Get a status/diagnostics summary for a service.
Note: EasyPanel's tRPC API does not expose raw container log streaming, so this returns a structured status summary (state, deployment status, resources, errors) derived from service inspection.
Args: service_id: Service ID lines: Reserved for future raw-log support (currently unused)
Inputs: service_id (required), lines. Returns: object
get_service_statsARead-only
Get per-service runtime statistics.
Inputs: no named parameters. Returns: object
get_system_statsARead-only
Get host system statistics (CPU, memory, disk, uptime).
Inputs: no named parameters. Returns: object
health_checkARead-only
Check whether the EasyPanel API is reachable and the session is valid.
Inputs: no named parameters. Returns: object
list_deploymentsA
List all deployments in EasyPanel, optionally filtered by project.
Args: project_id: Optional project ID to filter deployments
Inputs: project_id. Returns: object
list_domainsARead-only
List domains, optionally filtered by service.
Args: service_id: Optional service ID to filter domains
Inputs: service_id. Returns: object
list_networksARead-only
Analyze network topology in EasyPanel.
Note: EasyPanel manages Docker networks automatically and does not expose them via the tRPC API, so this infers a per-project topology (internal vs public services) from the services' port configuration.
Inputs: no named parameters. Returns: object
list_projectsARead-only
List all projects in EasyPanel.
Inputs: no named parameters. Returns: object
list_servicesARead-only
List all services in EasyPanel, optionally filtered by project.
Args: project_id: Optional project ID to filter services
Inputs: project_id. Returns: object
restart_serviceC
Restart a service.
Args: service_id: Service ID
Inputs: service_id (required). Returns: object
scale_serviceBIdempotent
Vertically scale a service's resources.
Args: service_id: Service ID cpu: New CPU limit (cores) memory: New memory limit (MB)
Inputs: service_id (required), cpu, memory. Returns: object
start_serviceAIdempotent
Start a stopped service.
Args: service_id: Service ID
Inputs: service_id (required). Returns: object
stop_serviceADestructiveIdempotent
Stop a running service (takes it offline until started again).
Args: service_id: Service ID
Inputs: service_id (required). Returns: object
update_serviceCIdempotent
Update service configuration.
Args: service_id: Service ID config: New configuration settings
Inputs: config (required), service_id (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 29 tools
Most tools map cleanly to a resource and action, and service lifecycle tools (start/stop/restart/deploy) are distinguishable. A few names are misleading — create_network/delete_network are advisory no-ops, and get_service_logs returns a status summary rather than actual logs.
The set overwhelmingly follows snake_case verb_noun naming (list_services, get_project, create_deployment). Minor deviations like health_check and the auto_ prefix in auto_scale_service keep it from being perfectly uniform.
At 29 tools, the server is above the heavy threshold, and several tools are placeholder/advisory helpers (create_network, delete_network) or near-duplicate diagnostics (get_service_logs vs get_service). The core management operations could be delivered with a leaner set.
Service CRUD and lifecycle are well covered, and projects/deployments have basic coverage. However, domains only support list/create with no delete/update, networks are non-functional, and there is no project update or deployment rollback/delete.
Maintenance
Related MCP Connectors
Manage your own cloud with AI: deploy apps, push and ship custom Docker images, manage resources via your AI agent.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Your AI Agent's Infrastructure Layer. Connect Claude, Copilot, Codex, or ChatGPT to 200+ managed open source services. Start databases, pipelines, and applications through natural language.
Hosting for AI agents: your AI client deploys Docker apps to live HTTPS URLs over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural language management of Docker containers, images, networks, and volumes with support for both local and remote Docker engines. Features automated container composition, debugging capabilities, and persistent data management through an intuitive conversational interface.GPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Docker containers, deploy stacks, and monitor services across multiple Docker hosts from one centralized location. Supports container lifecycle management, Docker Compose operations, and infrastructure orchestration through natural language commands.6MIT
- AlicenseCqualityDmaintenanceEnables AI agents to manage server infrastructure through the 1Panel API, including Docker containers, databases, and system monitoring. It provides tools for website management, file operations, and application deployment via natural language commands.1535 npmMIT
- AlicenseBqualityDmaintenanceEnables AI assistants to manage Docker containers and Kubernetes resources through natural language, supporting operations like container management, image building, and pod/deployment/service management.9MIT