Crontinel MCP Server
Monitoreo de programación y colas de Laravel. Detecta fallos silenciosos de cron, colas y agentes antes que los usuarios.
Documentación
@crontinel/mcp-server
Conecta asistentes de IA a la evidencia de monitoreo de Crontinel. Este paquete se ejecuta como un adaptador local stdio. La versión 0.3 añade claves MCP generadas y obtiene la lista de herramientas permitidas desde el servidor alojado.
Recomendado: OAuth remoto
Usa https://app.crontinel.com/mcp con un cliente MCP remoto. Inicia sesión en Crontinel, selecciona una organización y sus aplicaciones, y luego aprueba los permisos de lectura. No es necesario copiar ninguna clave. OAuth se ejecuta sobre HTTP, no stdio.
Las herramientas de lectura iniciales son get_connection, list_monitors, list_runs y list_incidents. Las listas requieren app_id y aceptan after_id y limit (máximo 100). Devuelven marcas de tiempo y metadatos acotados. No devuelven salida de trabajos, argumentos de comandos, credenciales ni herramientas de mutación.
La prueba de aceptación local de septiembre de 2026 ejecutó Codex 0.154.0 OAuth/CIMD más lecturas de conexión y ejecución; Claude Code 2.1.281 OAuth con pre-registro y salud de conexión; y Cursor CLI 2026.08.25-3e8eec8 OAuth con pre-registro y descubrimiento de herramientas. Estos son resultados de aceptación local, no una afirmación de que toda configuración alojada o de escritorio haya sido probada.
Conexión stdio con clave generada
Crea una clave en Configuración → Conexiones de IA → Usar una clave API en Conexiones de IA. Elige organización, aplicaciones, alcances de lectura y expiración. Guarda el secreto cuando se muestre; no se puede recuperar después.
Pásala al adaptador a través de CRONTINEL_MCP_KEY en el entorno o almacén de secretos de tu cliente. Inicia crontinel-mcp desde el paquete instalado. Para desarrollo, compila este checkout e inicia node dist/index.js.
CRONTINEL_MCP_KEY: clavect_mcp_...generada. Tiene prioridad sobre la variable heredada.CRONTINEL_API_URL: URL base opcional, por defectohttps://app.crontinel.com. Las conexiones con alcance requieren HTTPS excepto para pruebas de loopback local.- El adaptador inicializa el servidor remoto y reenvía sus herramientas filtradas por alcance. Las claves con alcance inválidas o revocadas fallan; nunca recurren a la autenticación heredada.
- La rotación y revocación están disponibles en Conexiones de IA. Los clientes en ejecución deben recibir el valor de entorno de reemplazo y reiniciarse después de la rotación.
La versión 0.3 debe publicarse antes de usarla a través de npx @crontinel/mcp-server@0.3.0. El arnés de aceptación del artefacto empaquetado está en el workspace en scripts/test-mcp-adapter.py.
Requisitos
- Node.js 18+
- Una cuenta de Crontinel y una clave MCP generada desde Conexiones de IA.
Instalación
npx -y @crontinel/mcp-server
O instala globalmente:
npm install -g @crontinel/mcp-server
Configuración heredada con clave de aplicación
Los ejemplos a continuación conservan la ruta CRONTINEL_API_KEY más antigua para instalaciones existentes. Esas claves de aplicación usan /api/mcp y los nombres de herramientas más antiguos. No son claves MCP con alcance. Cambiar a una clave generada modifica las herramientas anunciadas; migra los prompts a los nombres de herramientas de lectura anteriores. Una clave ct_mcp_ suministrada a través de la variable antigua también se reconoce como con alcance.
Claude Desktop
Añade a tu claude_desktop_config.json:
{
"mcpServers": {
"crontinel": {
"command": "npx",
"args": ["-y", "@crontinel/mcp-server"],
"env": {
"CRONTINEL_API_KEY": "your-api-key-here"
}
}
}
}
Claude Code
Usa claude mcp add para la configuración actual de Claude Code. El JSON a continuación describe el proceso stdio heredado y el entorno; no es un archivo settings.json:
{
"mcpServers": {
"crontinel": {
"command": "npx",
"args": ["-y", "@crontinel/mcp-server"],
"env": {
"CRONTINEL_API_KEY": "your-api-key-here"
}
}
}
}
Cursor
Añade a ~/.cursor/mcp.json o al .cursor/mcp.json a nivel de proyecto:
{
"mcpServers": {
"crontinel": {
"command": "npx",
"args": ["-y", "@crontinel/mcp-server"],
"env": {
"CRONTINEL_API_KEY": "your-api-key-here"
}
}
}
}
Windsurf
Añade a ~/.windsurf/settings.json:
{
"mcpServers": {
"crontinel": {
"command": "npx",
"args": ["-y", "@crontinel/mcp-server"],
"env": {
"CRONTINEL_API_KEY": "your-api-key-here"
}
}
}
}
Continue.dev
Añade a ~/.continue/config.json:
{
"experimental": {
"mcpServers": {
"crontinel": {
"command": "npx",
"args": ["-y", "@crontinel/mcp-server"],
"env": {
"CRONTINEL_API_KEY": "your-api-key-here"
}
}
}
}
}
Variables de entorno
| Variable | Requerida | Por defecto | Descripción |
|---|---|---|---|
CRONTINEL_API_KEY | Sí | n/a | Tu clave API de Crontinel |
CRONTINEL_API_URL | No | https://app.crontinel.com | Sobrescribe la URL base de la API (autoalojado o desarrollo local) |
Herramientas heredadas con clave de aplicación
| Herramienta | Descripción |
|---|---|
list_scheduled_jobs | Lista todos los comandos cron monitoreados con el estado de la última ejecución |
get_cron_status | Detalles de la última ejecución para un comando específico (código de salida, duración, salida) |
get_queue_status | Profundidad, conteo de fallos y tiempo de espera para colas |
get_horizon_status | Instantánea de salud del supervisor Horizon (estado, fallos/min) |
list_recent_alerts | Alertas disparadas en las últimas N horas |
acknowledge_alert | Descarta una alerta activa por su clave |
create_alert | Crea un nuevo canal de alerta (Slack, correo electrónico o webhook) |
list_scheduled_jobs
Lista todos los trabajos cron monitoreados, con su estado y tiempo de la última ejecución.
Devuelve: Arreglo de objetos de trabajo con command, last_run_at, last_status, run_count_today.
get_cron_status
Obtiene el resultado de la última ejecución para un comando cron específico.
Parámetros:
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
command | string | Sí | La cadena del comando cron o coincidencia parcial (p. ej. php artisan inspire o send-invoices) |
Devuelve: command, status, exit_code, duration_ms, started_at, finished_at, output.
get_queue_status
Obtiene la profundidad de la cola, el conteo de fallos y la antigüedad del trabajo pendiente más antiguo.
Parámetros:
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
queue | string | No | Nombre específico de la cola; omítelo para todas las colas |
Devuelve: Arreglo de objetos de cola con name, depth, failed, oldest_job_age_seconds.
get_horizon_status
Obtiene una instantánea de salud de Laravel Horizon: estados de supervisores, pausado/ejecutándose, trabajos fallidos por minuto.
Devuelve: status (running / paused / inactive), failed_jobs_per_minute, arreglo de supervisors.
list_recent_alerts
Lista las alertas que se han disparado dentro de las últimas N horas.
Parámetros:
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
hours | number | No | Ventana de retroceso en horas (por defecto: 24) |
Devuelve: Arreglo de objetos de alerta con alert_key, state (firing / resolved), fired_at, resolved_at.
acknowledge_alert
Descarta una alerta activa para que deje de notificar.
Parámetros:
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
alert_key | string | Sí | Clave de la alerta (de list_recent_alerts) |
Devuelve: { acknowledged: true, alert_key: "..." } en caso de éxito.
create_alert
Crea un nuevo canal de alerta para una aplicación. Requiere un plan Starter, Pro o Ultra.
Parámetros:
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
type | string | Sí | slack, email o webhook |
webhook_url | string | No | URL de webhook entrante de Slack (requerida para slack) |
to | string | No | Dirección de correo electrónico del destinatario (requerida para email) |
url | string | No | URL del endpoint del webhook (requerida para webhook) |
Devuelve: { created: true, channel_id: "...", type: "..." } en caso de éxito.
Cómo funciona
- Tu asistente de IA inicia el servidor MCP como un proceso stdio local
- El servidor recibe llamadas de herramientas JSON-RPC a través de stdin
- Las claves con alcance se conectan a
app.crontinel.com/mcp; las claves de aplicación heredadas usanapp.crontinel.com/api/mcp. Ambas usan el encabezadoAuthorization. - La respuesta JSON-RPC se devuelve a través de stdout
Las definiciones de herramientas con alcance provienen del servidor remoto autenticado. Las definiciones de herramientas heredadas permanecen declaradas localmente por compatibilidad.
Solución de problemas
401 Unauthorized: Verifica la expiración de la clave, la revocación y la membresía actual de la organización. Asegúrate de que el cliente realmente pase el entorno configurado a su subproceso. La herencia del entorno depende del cliente.
Recurso denegado: El app_id seleccionado debe pertenecer a la organización y selección de aplicaciones fijas en la concesión. Un cambio de organización en el panel no cambia la concesión.
Las herramientas no aparecen en Claude/Cursor: Reinicia el cliente de IA después de actualizar la configuración de MCP. La mayoría de los clientes solo cargan servidores MCP al inicio.
npx lento en la primera ejecución: npx -y descarga el paquete en el primer uso. Ejecuta npm install -g @crontinel/mcp-server una vez para almacenarlo en caché localmente, luego cambia command a crontinel-mcp y elimina el args.
Documentación
Para la guía de integración completa, referencia de herramientas y tutoriales de configuración:
Ecosistema
| Paquete | Descripción |
|---|---|
| @crontinel/mcp-server | Servidor MCP para asistentes de IA (este repositorio) |
| crontinel/laravel | Paquete de Laravel que reporta los datos que este servidor lee |
| docs.crontinel.com | Documentación completa |