Skip to main content
Glama

get-logs

Retrieve and filter application logs from named pipes to monitor output and debug issues in development environments.

Instructions

Retrieve logs from the named pipe with optional filtering

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
linesNoNumber of log lines to return
filterNoText to filter logs by
sinceNoTimestamp to get logs after

Implementation Reference

  • Executes the get-logs tool: copies logStore, applies optional filter and since filters, slices last N lines, reverses to chronological order, returns as JSON-formatted text content block.
    async ({ lines, filter, since }) => { try { let logs = [...logStore]; if (filter) { logs = logs.filter((entry) => entry.message.toLowerCase().includes(filter.toLowerCase()), ); } if (since) { logs = logs.filter((entry) => { const timestamp = new Date(entry.timestamp).getTime(); return timestamp > since; }); } // Take the last N lines and reverse them so oldest is first logs = logs.slice(-lines).reverse(); return { content: [ { type: "text", text: JSON.stringify(logs, null, 2), }, ], }; } catch (error) { logJson(`Error retrieving logs: ${error}`); throw new Error("Failed to retrieve logs"); } },
  • Zod schema defining input parameters for the get-logs tool: lines (optional, default 50), filter (optional string), since (optional timestamp number).
    { lines: z .number() .optional() .default(50) .describe("Number of log lines to return"), filter: z.string().optional().describe("Text to filter logs by"), since: z.number().optional().describe("Timestamp to get logs after"), },
  • src/index.ts:166-211 (registration)
    Registers the get-logs tool on the MCP server with name, description, input schema, and inline handler function.
    server.tool( "get-logs", "Retrieve logs from the named pipe with optional filtering", { lines: z .number() .optional() .default(50) .describe("Number of log lines to return"), filter: z.string().optional().describe("Text to filter logs by"), since: z.number().optional().describe("Timestamp to get logs after"), }, async ({ lines, filter, since }) => { try { let logs = [...logStore]; if (filter) { logs = logs.filter((entry) => entry.message.toLowerCase().includes(filter.toLowerCase()), ); } if (since) { logs = logs.filter((entry) => { const timestamp = new Date(entry.timestamp).getTime(); return timestamp > since; }); } // Take the last N lines and reverse them so oldest is first logs = logs.slice(-lines).reverse(); return { content: [ { type: "text", text: JSON.stringify(logs, null, 2), }, ], }; } catch (error) { logJson(`Error retrieving logs: ${error}`); throw new Error("Failed to retrieve logs"); } }, );
  • TypeScript interface defining the structure of log entries stored in logStore, used by the handler.
    interface LogEntry { timestamp: string; message: string; }
  • In-memory array storing the recent log entries (up to MAX_STORED_LOGS=100), populated by the file watcher, directly used by the get-logs handler.
    const logStore: LogEntry[] = [];
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/amitdeshmukh/stdout-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server