Skip to main content
Glama

browser_click

Simulate mouse clicks on web page elements using selectors, supporting multiple buttons and click counts. Automate interactions in parallel browser instances with configurable delays and timeouts.

Instructions

Click on a page element

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
buttonNoMouse buttonleft
clickCountNoNumber of clicks
delayNoClick delay in milliseconds
instanceIdYesInstance ID
selectorYesElement selector
timeoutNoTimeout in milliseconds

Implementation Reference

  • Core handler function that performs the click operation on the specified selector using Playwright's page.click() method, handling errors and instance validation.
    private async click(instanceId: string, selector: string, options: ClickOptions): Promise<ToolResult> { const instance = this.browserManager.getInstance(instanceId); if (!instance) { return { success: false, error: `Instance ${instanceId} not found` }; } try { const clickOptions: any = { button: options.button }; if (options.clickCount) clickOptions.clickCount = options.clickCount; if (options.delay) clickOptions.delay = options.delay; if (options.timeout) clickOptions.timeout = options.timeout; await instance.page.click(selector, clickOptions); return { success: true, data: { selector, clicked: true }, instanceId }; } catch (error) { return { success: false, error: `Click failed: ${error instanceof Error ? error.message : error}`, instanceId }; } }
  • Tool definition including name, description, and JSON input schema for validation, registered in BrowserTools.getTools().
    { name: 'browser_click', description: 'Click on a page element', inputSchema: { type: 'object', properties: { instanceId: { type: 'string', description: 'Instance ID' }, selector: { type: 'string', description: 'Element selector', }, button: { type: 'string', enum: ['left', 'right', 'middle'], description: 'Mouse button', default: 'left' }, clickCount: { type: 'number', description: 'Number of clicks', default: 1 }, delay: { type: 'number', description: 'Click delay in milliseconds', default: 0 }, timeout: { type: 'number', description: 'Timeout in milliseconds', default: 30000 } }, required: ['instanceId', 'selector'] } },
  • src/tools.ts:533-540 (registration)
    Switch case in executeTools() that registers and routes 'browser_click' calls to the click handler function.
    case 'browser_click': return await this.click(args.instanceId, args.selector, { button: args.button || 'left', clickCount: args.clickCount || 1, delay: args.delay || 0, timeout: args.timeout || 30000 });
  • TypeScript interface defining the options structure used by the browser_click handler.
    export interface ClickOptions { button?: 'left' | 'right' | 'middle'; clickCount?: number; delay?: number; timeout?: number; }
  • src/server.ts:40-45 (registration)
    MCP server handler for listing tools, which includes 'browser_click' via BrowserTools.getTools().
    this.server.setRequestHandler(ListToolsRequestSchema, async () => { const tools = this.browserTools.getTools(); return { tools: 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/sailaoda/concurrent-browser-mcp'

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