puppeteer_evaluate
Execute JavaScript in the browser console using Puppeteer to interact with web pages, automate tasks, and extract data efficiently. Designed for configurable browser automation.
Instructions
Execute JavaScript in the browser console
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to execute |
Implementation Reference
- index.ts:295-337 (handler)Handler implementation for puppeteer_evaluate tool: overrides console to capture logs, evaluates the JavaScript script, collects result and logs, returns formatted text content.case "puppeteer_evaluate": try { await page.evaluate(() => { window.mcpHelper = { logs: [], originalConsole: { ...console }, }; ['log', 'info', 'warn', 'error'].forEach(method => { (console as any)[method] = (...args: any[]) => { window.mcpHelper.logs.push(`[${method}] ${args.join(' ')}`); (window.mcpHelper.originalConsole as any)[method](...args); }; } ); } ); const result = await page.evaluate( args.script ); const logs = await page.evaluate(() => { Object.assign(console, window.mcpHelper.originalConsole); const logs = window.mcpHelper.logs; delete ( window as any).mcpHelper; return logs; }); return { content: [ { type: "text", text: `Execution result:\n${JSON.stringify(result, null, 2)}\n\nConsole output:\n${logs.join('\n')}`, }, ], isError: false, }; } catch (error) { return { content: [{ type: "text", text: `Script execution failed: ${(error as Error).message}`, }], isError: true, }; }
- index.ts:90-100 (registration)Tool registration in TOOLS array: defines name, description, and input schema for puppeteer_evaluate.{ name: "puppeteer_evaluate", description: "Execute JavaScript in the browser console", inputSchema: { type: "object", properties: { script: { type: "string", description: "JavaScript code to execute" }, }, required: ["script"], }, },
- index.ts:410-412 (registration)Registers the listTools handler which exposes the TOOLS array including puppeteer_evaluate.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS, }));
- index.ts:414-416 (registration)Registers the callTool handler which dispatches to handleToolCall based on tool name, leading to puppeteer_evaluate case.server.setRequestHandler(CallToolRequestSchema, async (request) => handleToolCall(request.params.name, request.params.arguments ?? {}) );