Skip to main content
Glama
afshawnlotfi

Configurable Puppeteer MCP Server

by afshawnlotfi

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
NameRequiredDescriptionDefault
scriptYesJavaScript code to execute

Implementation Reference

  • 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 ?? {}) );

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/afshawnlotfi/mcp-configurable-puppeteer'

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