get_pm2_logs
Retrieve PM2 application logs from remote servers via SSH/SFTP to monitor processes, troubleshoot errors, and check system status.
Instructions
Raccourci pour récupérer les logs PM2 d'une application spécifique ou de toutes les apps.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Alias du serveur cible. | |
| app | No | Nom de l'application PM2 (optionnel, toutes par défaut). | |
| lines | No | Nombre de lignes à récupérer. | |
| errors | No | Récupérer uniquement les erreurs (stderr). |
Implementation Reference
- server.js:717-733 (handler)The handler function constructs a 'pm2 logs' command with optional app name, error filter, and line count, then queues and executes it via SSH on the specified server alias, returning the logs or background task info.async (params) => { let cmd = 'pm2 logs'; if (params.app) cmd += ` ${params.app}`; if (params.errors) cmd += ' --err'; cmd += ` --lines ${params.lines} --nostream`; const job = queue.addJob({ type: 'ssh', alias: params.alias, cmd: cmd, streaming: false }); history.logTask(job); ssh.executeCommand(job.id); const finalJob = await waitForJobCompletion(job.id, config.syncTimeout); if (finalJob) { return { content: [{ type: "text", text: `📋 Logs PM2${params.app ? ` (${params.app})` : ''} - ${finalJob.lineCount || 0} lignes:\n\n${finalJob.output || '(vide)'}` }] }; } else { return { content: [{ type: "text", text: `Tâche ${job.id} initiée en arrière-plan.` }] }; } }
- server.js:710-715 (schema)Input schema using Zod for validating parameters: server alias (required), optional app name, lines (default 100), and errors flag.inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible."), app: z.string().optional().describe("Nom de l'application PM2 (optionnel, toutes par défaut)."), lines: z.number().optional().default(100).describe("Nombre de lignes à récupérer."), errors: z.boolean().optional().default(false).describe("Récupérer uniquement les erreurs (stderr).") })
- server.js:705-734 (registration)Registration of the 'get_pm2_logs' tool with McpServer, including title, description, input schema, and inline handler function.server.registerTool( "get_pm2_logs", { title: "Récupérer les logs PM2", description: "Raccourci pour récupérer les logs PM2 d'une application spécifique ou de toutes les apps.", inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible."), app: z.string().optional().describe("Nom de l'application PM2 (optionnel, toutes par défaut)."), lines: z.number().optional().default(100).describe("Nombre de lignes à récupérer."), errors: z.boolean().optional().default(false).describe("Récupérer uniquement les erreurs (stderr).") }) }, async (params) => { let cmd = 'pm2 logs'; if (params.app) cmd += ` ${params.app}`; if (params.errors) cmd += ' --err'; cmd += ` --lines ${params.lines} --nostream`; const job = queue.addJob({ type: 'ssh', alias: params.alias, cmd: cmd, streaming: false }); history.logTask(job); ssh.executeCommand(job.id); const finalJob = await waitForJobCompletion(job.id, config.syncTimeout); if (finalJob) { return { content: [{ type: "text", text: `📋 Logs PM2${params.app ? ` (${params.app})` : ''} - ${finalJob.lineCount || 0} lignes:\n\n${finalJob.output || '(vide)'}` }] }; } else { return { content: [{ type: "text", text: `Tâche ${job.id} initiée en arrière-plan.` }] }; } } );