get_server_logs
Retrieve recent activity logs for a specific server by providing its ID, enabling monitoring and troubleshooting.
Instructions
Get recent server activity logs
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | The ID of the server |
Implementation Reference
- src/tools/servers.ts:61-89 (registration)Registration of the 'get_server_logs' tool on the MCP server, using Zod schema for input validation and delegating to the PloiClient.
server.tool( "get_server_logs", "Get recent server activity logs", { server_id: z.coerce.number().describe("The ID of the server"), }, async ({ server_id }) => { try { const logs = await client.getServerLogs(server_id); return { content: [ { type: "text" as const, text: String(logs || "No logs available"), }, ], }; } catch (error) { return { content: [ { type: "text" as const, text: `Error fetching server logs: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } ); - src/tools/servers.ts:67-89 (handler)Handler function for get_server_logs: calls client.getServerLogs(server_id) and returns formatted text content, with error handling.
async ({ server_id }) => { try { const logs = await client.getServerLogs(server_id); return { content: [ { type: "text" as const, text: String(logs || "No logs available"), }, ], }; } catch (error) { return { content: [ { type: "text" as const, text: `Error fetching server logs: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } ); - src/tools/servers.ts:64-66 (schema)Zod schema for the get_server_logs tool: expects 'server_id' as a number.
{ server_id: z.coerce.number().describe("The ID of the server"), }, - src/client.ts:127-136 (helper)PloiClient.getServerLogs() method that calls GET /servers/{id}/logs, parses paginated log entries, and formats them as a string.
async getServerLogs(id: number): Promise<string> { const response = await this.request<PaginatedResponse<{ description: string; content: string; site_id: number | null; server_id: number; created_at: string }>>( "GET", `/servers/${id}/logs` ); if (!response.data || response.data.length === 0) return "No logs available"; return response.data .map((entry) => `[${entry.created_at}] ${entry.description}\n${entry.content || ""}`) .join("\n---\n"); }