Skip to main content
Glama

playwright_navigate

Launch a browser instance, navigate to a specified URL, and control viewport size, browser type, navigation timeout, and headless mode for web automation tasks.

Instructions

Navigate to a URL

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
browserTypeNoBrowser type to use (chromium, firefox, webkit). Defaults to chromium
headlessNoRun browser in headless mode (default: false)
heightNoViewport height in pixels (default: 720)
timeoutNoNavigation timeout in milliseconds
urlYesURL to navigate to the website specified
waitUntilNoNavigation wait condition
widthNoViewport width in pixels (default: 1280)

Implementation Reference

  • NavigationTool class with execute method implementing the playwright_navigate tool logic using Playwright's page.goto
    export class NavigationTool extends BrowserToolBase { /** * Execute the navigation tool */ async execute(args: any, context: ToolContext): Promise<ToolResponse> { // Check if browser is available if (!context.browser || !context.browser.isConnected()) { // If browser is not connected, we need to reset the state to force recreation resetBrowserState(); return createErrorResponse( "Browser is not connected. The connection has been reset - please retry your navigation." ); } // Check if page is available and not closed if (!context.page || context.page.isClosed()) { return createErrorResponse( "Page is not available or has been closed. Please retry your navigation." ); } return this.safeExecute(context, async (page) => { try { await page.goto(args.url, { timeout: args.timeout || 30000, waitUntil: args.waitUntil || "load" }); return createSuccessResponse(`Navigated to ${args.url}`); } catch (error) { const errorMessage = (error as Error).message; // Check for common disconnection errors if ( errorMessage.includes("Target page, context or browser has been closed") || errorMessage.includes("Target closed") || errorMessage.includes("Browser has been disconnected") ) { // Reset browser state to force recreation on next attempt resetBrowserState(); return createErrorResponse( `Browser connection issue: ${errorMessage}. Connection has been reset - please retry your navigation.` ); } // For other errors, return the standard error throw error; } }); }
  • Input schema definition for the playwright_navigate tool, including parameters like url, browserType, dimensions, etc.
    { name: "playwright_navigate", description: "Navigate to a URL", inputSchema: { type: "object", properties: { url: { type: "string", description: "URL to navigate to the website specified" }, browserType: { type: "string", description: "Browser type to use (chromium, firefox, webkit). Defaults to chromium", enum: ["chromium", "firefox", "webkit"] }, width: { type: "number", description: "Viewport width in pixels (default: 1280)" }, height: { type: "number", description: "Viewport height in pixels (default: 720)" }, timeout: { type: "number", description: "Navigation timeout in milliseconds" }, waitUntil: { type: "string", description: "Navigation wait condition" }, headless: { type: "boolean", description: "Run browser in headless mode (default: false)" } }, required: ["url"], },
  • Registration and dispatch of playwright_navigate in the main tool handler switch statement
    case "playwright_navigate": return await navigationTool.execute(args, context);
  • Instantiation of the NavigationTool instance used for handling playwright_navigate calls
    if (!navigationTool) navigationTool = new NavigationTool(server);
  • src/tools.ts:451-451 (registration)
    Inclusion of playwright_navigate in the BROWSER_TOOLS array for conditional browser launching
    "playwright_navigate",

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/executeautomation/mcp-playwright'

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