browser_navigate
Directs a web browser to load a specific URL and waits for the page to complete loading, enabling automated web navigation for testing or data collection.
Instructions
Navigate to a specified URL and wait for page load
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| waitUntil | No | domcontentloaded |
Implementation Reference
- src/server.ts:33-58 (handler)The anonymous async handler function for the browser_navigate tool. It validates the input parameters, ensures the Playwright browser is connected, navigates the page to the specified URL, and returns a success or error message.async (params: any) => { try { const input = z.object({ url: z.string().url(), waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('domcontentloaded') }).parse(params); await this.playwright.ensureConnected(); const page = this.playwright.getPage(); await page.goto(input.url, { waitUntil: input.waitUntil }); return { content: [{ type: 'text', text: `Successfully navigated to ${page.url()}` }] }; } catch (error) { return { content: [{ type: 'text', text: `Navigation failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; }
- src/server.ts:24-60 (registration)The MCP server registration of the 'browser_navigate' tool, including its metadata, inline input schema, and inline handler function.'browser_navigate', { title: 'Navigate to URL', description: 'Navigate to a specified URL and wait for page load', inputSchema: { url: z.string().url(), waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('domcontentloaded') } }, async (params: any) => { try { const input = z.object({ url: z.string().url(), waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('domcontentloaded') }).parse(params); await this.playwright.ensureConnected(); const page = this.playwright.getPage(); await page.goto(input.url, { waitUntil: input.waitUntil }); return { content: [{ type: 'text', text: `Successfully navigated to ${page.url()}` }] }; } catch (error) { return { content: [{ type: 'text', text: `Navigation failed: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } );
- src/types.ts:13-16 (schema)Zod input schema definition for the browser_navigate tool parameters.export const BrowserNavigateInputSchema = z.object({ url: z.string().url(), waitUntil: z.enum(['networkidle', 'domcontentloaded', 'load']).optional().default('domcontentloaded') });
- src/playwright.ts:111-117 (helper)Key helper methods from PlaywrightManager used by the handler: ensureConnected() to maintain browser connection and getPage() to retrieve the current page instance.async ensureConnected(): Promise<void> { const connected = await this.isConnected(); if (!connected) { await this.cleanup(); await this.connect(); } }