puppeteer_evaluate
Execute JavaScript code directly in a browser console to automate web interactions, extract data, or manipulate page content through 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)The handler function for the 'puppeteer_evaluate' tool. It sets up temporary console logging overrides in the browser page, evaluates the user-provided JavaScript script, retrieves the result and captured logs, restores the console, and returns the execution result along with console output.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 (schema)The tool schema definition, including name, description, and input schema specifying the 'script' parameter.{ 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)Registration of the tool list handler, which returns the TOOLS array containing the puppeteer_evaluate tool.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS, }));