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
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: chavect_mcp_...gerada. Tem precedência sobre a variável legada.CRONTINEL_API_URL: URL base opcional, padrãohttps://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ável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
CRONTINEL_API_KEY | Sim | n/a | Sua chave de API Crontinel |
CRONTINEL_API_URL | Não | https://app.crontinel.com | Substitui a URL base da API (self-hosted ou dev local) |
Ferramentas legadas com chave de aplicativo
| Ferramenta | Descrição |
|---|---|
list_scheduled_jobs | Lista todos os comandos cron monitorados com o status da última execução |
get_cron_status | Detalhes da última execução de um comando específico (código de saída, duração, saída) |
get_queue_status | Profundidade, contagem de falhas e tempo de espera das filas |
get_horizon_status | Snapshot de saúde do supervisor Horizon (status, falhas/min) |
list_recent_alerts | Alertas disparados nas últimas N horas |
acknowledge_alert | Dispensa um alerta ativo pela sua chave |
create_alert | Cria 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:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
command | string | Sim | A 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:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
queue | string | Não | Nome 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:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
hours | number | Não | Janela 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:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
alert_key | string | Sim | Chave 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:
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | string | Sim | slack, email ou webhook |
webhook_url | string | Não | URL do webhook de entrada do Slack (obrigatório para slack) |
to | string | Não | Endereço de e-mail do destinatário (obrigatório para email) |
url | string | Não | URL do endpoint do webhook (obrigatório para webhook) |
Retorna: { created: true, channel_id: "...", type: "..." } em caso de sucesso.
Como Funciona
- Seu assistente de IA inicia o servidor MCP como um processo stdio local
- O servidor recebe chamadas de ferramentas JSON-RPC via stdin
- Chaves com escopo conectam-se a
app.crontinel.com/mcp; chaves de aplicativo legadas usamapp.crontinel.com/api/mcp. Ambas usam o cabeçalhoAuthorization. - 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
| Pacote | Descrição |
|---|---|
| @crontinel/mcp-server | Servidor MCP para assistentes de IA (este repositório) |
| crontinel/laravel | Pacote Laravel que reporta os dados que este servidor lê |
| docs.crontinel.com | Documentação completa |