Skip to main content
Glama

read_electron_logs

Retrieve and monitor Electron application logs for debugging and behavior analysis. Specify log types, line count, and continuous tailing for real-time insights.

Instructions

Read console logs and output from running Electron applications. Useful for debugging and monitoring app behavior.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
followNoWhether to follow/tail the logs
linesNoNumber of recent lines to read (default: 100)
logTypeNoType of logs to read

Implementation Reference

  • Primary handler function implementing the read_electron_logs tool logic. Connects to Electron via DevTools Protocol for console logs or falls back to system process logs.
    export async function readElectronLogs( logType: LogType = 'all', lines: number = 100, follow: boolean = false, ): Promise<string> { try { logger.info('[MCP] Looking for running Electron applications for log access...'); try { const target = await findElectronTarget(); // Connect via WebSocket to get console logs if (logType === 'console' || logType === 'all') { return await getConsoleLogsViaDevTools(target, lines, follow); } } catch { logger.info('[MCP] No DevTools connection found, checking system logs...'); } // Fallback to system logs if DevTools not available return await getSystemElectronLogs(lines); } catch (error) { throw new Error( `Failed to read logs: ${error instanceof Error ? error.message : String(error)}`, ); } }
  • Zod schema defining the input parameters (logType, lines, follow) for the read_electron_logs tool.
    export const ReadElectronLogsSchema = z.object({ logType: z .enum(['console', 'main', 'renderer', 'all']) .optional() .describe('Type of logs to read'), lines: z.number().optional().describe('Number of recent lines to read (default: 100)'), follow: z.boolean().optional().describe('Whether to follow/tail the logs'), });
  • src/tools.ts:63-68 (registration)
    Tool registration entry in the tools array, specifying name, description, and input schema for read_electron_logs.
    { name: ToolName.READ_ELECTRON_LOGS, description: 'Read console logs and output from running Electron applications. Useful for debugging and monitoring app behavior.', inputSchema: zodToJsonSchema(ReadElectronLogsSchema) as ToolInput, },
  • Dispatch handler in the main tool switch statement that parses inputs, calls the readElectronLogs function, and formats the MCP response.
    case ToolName.READ_ELECTRON_LOGS: { const { logType, lines, follow } = ReadElectronLogsSchema.parse(args); const logs = await readElectronLogs(logType, lines); if (follow) { return { content: [ { type: 'text', text: `Following logs (${logType}). This is a snapshot of recent logs:\n\n${logs}`, }, ], isError: false, }; } return { content: [ { type: 'text', text: `Electron logs (${logType}):\n\n${logs}`, }, ], isError: false, }; }
  • Helper function to retrieve console logs via Chrome DevTools Protocol WebSocket connection.
    async function getConsoleLogsViaDevTools( target: any, lines: number, follow: boolean, ): Promise<string> { const logs: string[] = []; return new Promise((resolve, reject) => { (async () => { try { const ws = await connectForLogs(target, (log: string) => { logs.push(log); if (logs.length >= lines && !follow) { ws.close(); resolve(logs.slice(-lines).join('\n')); } }); // For non-follow mode, try to get console history first if (!follow) { // Request console API calls from Runtime ws.send( JSON.stringify({ id: 99, method: 'Runtime.evaluate', params: { expression: `console.log("Reading console history for MCP test"); "History checked"`, includeCommandLineAPI: true, }, }), ); // Wait longer for logs to be captured and history to be available setTimeout(() => { ws.close(); resolve(logs.length > 0 ? logs.slice(-lines).join('\n') : 'No console logs available'); }, 7000); // Increased timeout to 7 seconds } } catch (error) { reject(error); } })(); }); }

Other Tools

Related 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/halilural/electron-mcp-server'

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