Crontinel MCP Server

Monitoramento de agendamento e filas do Laravel. Detecte falhas silenciosas de cron, filas e agentes antes que os usuários percebam.

Documentação

@crontinel/mcp-server

npm version Node.js License: MIT GitHub stars

Conecte assistentes às evidências de monitoramento da Crontinel. Este pacote executa como um adaptador stdio local. A versão 0.3 adiciona chaves MCP geradas e busca a lista de ferramentas permitidas no servidor hospedado.

Recomendado: OAuth remoto

Use https://app.crontinel.com/mcp com um cliente MCP remoto. Faça login na Crontinel, selecione uma organização e seus aplicativos e aprove as permissões de leitura. Nenhuma chave precisa ser copiada. O OAuth roda sobre HTTP, não stdio.

As ferramentas de leitura iniciais são get_connection, list_monitors, list_runs e list_incidents. As listas exigem app_id e aceitam after_id e limit (máximo 100). Elas retornam timestamps e metadados limitados. Não retornam saída de jobs, argumentos de comando, credenciais ou ferramentas de mutação.

A execução de aceitação local de setembro de 2026 testou Codex 0.154.0 OAuth/CIMD com leituras de conexão e execução; Claude Code 2.1.281 OAuth com pré-registro e saúde de conexão; e Cursor CLI 2026.08.25-3e8eec8 OAuth com pré-registro e descoberta de ferramentas. Estes são resultados de aceitação local, não uma afirmação de que toda configuração hospedada ou desktop foi testada.

Conexão stdio com chave gerada

Crie uma chave em Configurações → Conexões de IA → Usar uma chave de API em Conexões de IA. Escolha organização, aplicativos, escopos de leitura e expiração. Salve o segredo quando exibido; ele não pode ser recuperado depois.

Passe-o ao adaptador por meio de CRONTINEL_MCP_KEY no ambiente do seu cliente ou no cofre de segredos. Inicie crontinel-mcp a partir do pacote instalado. Para desenvolvimento, compile este checkout e inicie node dist/index.js.

  • CRONTINEL_MCP_KEY: chave ct_mcp_... gerada. Tem precedência sobre a variável legada.
  • CRONTINEL_API_URL: URL base opcional, padrão https://app.crontinel.com. Conexões com escopo exigem HTTPS, exceto para testes de loopback local.
  • O adaptador inicializa o servidor remoto e encaminha suas ferramentas filtradas por escopo. Chaves com escopo inválidas ou revogadas falham; elas nunca recorrem à autenticação legada.
  • Rotação e revogação estão disponíveis em Conexões de IA. Clientes em execução devem receber o novo valor de ambiente e reiniciar após a rotação.

A versão 0.3 deve ser publicada antes de usá-la por meio de npx @crontinel/mcp-server@0.3.0. O harness de aceitação de artefato empacotado está no workspace em scripts/test-mcp-adapter.py.

Requisitos

  • Node.js 18+
  • Uma conta Crontinel e uma chave MCP gerada em Conexões de IA.

Instalação

npx -y @crontinel/mcp-server

Ou instale globalmente:

npm install -g @crontinel/mcp-server

Configuração legada com chave de aplicativo

Os exemplos abaixo mantêm o caminho CRONTINEL_API_KEY mais antigo para instalações existentes. Essas chaves de aplicativo usam /api/mcp e os nomes de ferramentas mais antigos. Elas não são chaves MCP com escopo. Mudar para uma chave gerada altera as ferramentas anunciadas; migre prompts para os nomes de ferramentas de leitura acima. Uma chave ct_mcp_ fornecida pela variável antiga também é reconhecida como com escopo.

Claude Desktop

Adicione ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "crontinel": {
      "command": "npx",
      "args": ["-y", "@crontinel/mcp-server"],
      "env": {
        "CRONTINEL_API_KEY": "your-api-key-here"
      }
    }
  }
}

Claude Code

Use claude mcp add para a configuração atual do Claude Code. O JSON abaixo descreve o processo stdio legado e o ambiente; não é um arquivo settings.json:

{
  "mcpServers": {
    "crontinel": {
      "command": "npx",
      "args": ["-y", "@crontinel/mcp-server"],
      "env": {
        "CRONTINEL_API_KEY": "your-api-key-here"
      }
    }
  }
}

Cursor

Adicione a ~/.cursor/mcp.json ou ao .cursor/mcp.json no nível do projeto:

{
  "mcpServers": {
    "crontinel": {
      "command": "npx",
      "args": ["-y", "@crontinel/mcp-server"],
      "env": {
        "CRONTINEL_API_KEY": "your-api-key-here"
      }
    }
  }
}

Windsurf

Adicione a ~/.windsurf/settings.json:

{
  "mcpServers": {
    "crontinel": {
      "command": "npx",
      "args": ["-y", "@crontinel/mcp-server"],
      "env": {
        "CRONTINEL_API_KEY": "your-api-key-here"
      }
    }
  }
}

Continue.dev

Adicione a ~/.continue/config.json:

{
  "experimental": {
    "mcpServers": {
      "crontinel": {
        "command": "npx",
        "args": ["-y", "@crontinel/mcp-server"],
        "env": {
          "CRONTINEL_API_KEY": "your-api-key-here"
        }
      }
    }
  }
}

Variáveis de Ambiente

VariávelObrigatóriaPadrãoDescrição
CRONTINEL_API_KEYSimn/aSua chave de API Crontinel
CRONTINEL_API_URLNãohttps://app.crontinel.comSubstitui a URL base da API (self-hosted ou dev local)

Ferramentas legadas com chave de aplicativo

FerramentaDescrição
list_scheduled_jobsLista todos os comandos cron monitorados com o status da última execução
get_cron_statusDetalhes da última execução de um comando específico (código de saída, duração, saída)
get_queue_statusProfundidade, contagem de falhas e tempo de espera das filas
get_horizon_statusSnapshot de saúde do supervisor Horizon (status, falhas/min)
list_recent_alertsAlertas disparados nas últimas N horas
acknowledge_alertDispensa um alerta ativo pela sua chave
create_alertCria um novo canal de alerta (Slack, e-mail ou webhook)

list_scheduled_jobs

Lista todos os jobs cron monitorados, com o status e o tempo da última execução.

Retorna: Array de objetos de job com command, last_run_at, last_status, run_count_today.


get_cron_status

Obtém o resultado da última execução de um comando cron específico.

Parâmetros:

NomeTipoObrigatórioDescrição
commandstringSimA string do comando cron ou correspondência parcial (ex.: php artisan inspire ou send-invoices)

Retorna: command, status, exit_code, duration_ms, started_at, finished_at, output.


get_queue_status

Obtém profundidade da fila, contagem de falhas e idade do job pendente mais antigo.

Parâmetros:

NomeTipoObrigatórioDescrição
queuestringNãoNome específico da fila; omita para todas as filas

Retorna: Array de objetos de fila com name, depth, failed, oldest_job_age_seconds.


get_horizon_status

Obtém um snapshot de saúde do Laravel Horizon: estados dos supervisores, pausado/em execução, jobs com falha por minuto.

Retorna: status (running / paused / inactive), failed_jobs_per_minute, array de supervisors.


list_recent_alerts

Lista alertas que foram disparados nas últimas N horas.

Parâmetros:

NomeTipoObrigatórioDescrição
hoursnumberNãoJanela de retrospectiva em horas (padrão: 24)

Retorna: Array de objetos de alerta com alert_key, state (firing / resolved), fired_at, resolved_at.


acknowledge_alert

Dispensa um alerta ativo para que ele pare de notificar.

Parâmetros:

NomeTipoObrigatórioDescrição
alert_keystringSimChave do alerta (de list_recent_alerts)

Retorna: { acknowledged: true, alert_key: "..." } em caso de sucesso.


create_alert

Cria um novo canal de alerta para um aplicativo. Exige um plano Starter, Pro ou Ultra.

Parâmetros:

NomeTipoObrigatórioDescrição
typestringSimslack, email ou webhook
webhook_urlstringNãoURL do webhook de entrada do Slack (obrigatório para slack)
tostringNãoEndereço de e-mail do destinatário (obrigatório para email)
urlstringNãoURL do endpoint do webhook (obrigatório para webhook)

Retorna: { created: true, channel_id: "...", type: "..." } em caso de sucesso.


Como Funciona

  1. Seu assistente de IA inicia o servidor MCP como um processo stdio local
  2. O servidor recebe chamadas de ferramentas JSON-RPC via stdin
  3. Chaves com escopo conectam-se a app.crontinel.com/mcp; chaves de aplicativo legadas usam app.crontinel.com/api/mcp. Ambas usam o cabeçalho Authorization.
  4. A resposta JSON-RPC é retornada via stdout

As definições de ferramentas com escopo vêm do servidor remoto autenticado. As definições de ferramentas legadas permanecem declaradas localmente para compatibilidade.

Solução de Problemas

401 Unauthorized: Verifique a expiração da chave, a revogação e a associação atual à organização. Garanta que o cliente realmente passe o ambiente configurado ao seu subprocesso. A herança de ambiente depende do cliente.

Recurso negado: O app_id selecionado deve pertencer à organização e à seleção de aplicativos fixas na concessão. Uma troca de organização no painel não altera a concessão.

Ferramentas não aparecendo no Claude/Cursor: Reinicie o cliente de IA após atualizar a configuração do MCP. A maioria dos clientes carrega servidores MCP apenas na inicialização.

npx lento na primeira execução: npx -y baixa o pacote no primeiro uso. Execute npm install -g @crontinel/mcp-server uma vez para armazená-lo em cache localmente, depois altere command para crontinel-mcp e remova o args.

Documentação

Para o guia completo de integração, referência de ferramentas e tutoriais de configuração:

Ecossistema

PacoteDescrição
@crontinel/mcp-serverServidor MCP para assistentes de IA (este repositório)
crontinel/laravelPacote Laravel que reporta os dados que este servidor lê
docs.crontinel.comDocumentação completa

Licença

MIT