launch_browser
Launch a new browser instance using Chromium, Firefox, or WebKit, with configurable headless mode and viewport dimensions for automated web tasks.
Instructions
Launch a new browser instance (chromium, firefox, or webkit)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| browser | No | Browser engine to use | chromium |
| headless | No | Run browser in headless mode | |
| viewport | No |
Implementation Reference
- src/index.ts:14-21 (schema)Zod schema for launch_browser tool: validates 'browser' (enum chromium/firefox/webkit, default chromium), 'headless' (boolean, default true), and optional 'viewport' (width/height).
const LaunchBrowserSchema = z.object({ browser: z.enum(['chromium', 'firefox', 'webkit']).default('chromium'), headless: z.boolean().default(true), viewport: z.object({ width: z.number().default(1280), height: z.number().default(1024) }).optional() }); - src/index.ts:130-157 (registration)Registration of launch_browser tool in ListToolsRequestSchema handler, defining its name, description, and inputSchema (JSON Schema format).
tools: [ { name: 'launch_browser', description: 'Launch a new browser instance (chromium, firefox, or webkit)', inputSchema: { type: 'object', properties: { browser: { type: 'string', enum: ['chromium', 'firefox', 'webkit'], default: 'chromium', description: 'Browser engine to use' }, headless: { type: 'boolean', default: true, description: 'Run browser in headless mode' }, viewport: { type: 'object', properties: { width: { type: 'number', default: 1280 }, height: { type: 'number', default: 720 } } } } } }, - src/index.ts:410-456 (handler)Handler for the 'launch_browser' case in CallToolRequestSchema: parses args with LaunchBrowserSchema, closes existing browser if open, clears console logs, launches the selected browser (chromium/firefox/webkit) via Playwright, creates a new context and page, sets up console event listener, and returns a success message.
switch (name) { case 'launch_browser': { const params = LaunchBrowserSchema.parse(args); // Close existing browser if any if (currentBrowser) { await currentBrowser.close(); } // Clear console logs consoleLogs = []; // Launch new browser const browserType = params.browser === 'firefox' ? firefox : params.browser === 'webkit' ? webkit : chromium; currentBrowser = await browserType.launch({ headless: params.headless }); currentContext = await currentBrowser.newContext({ viewport: params.viewport ? { width: params.viewport.width, height: params.viewport.height } : undefined }); currentPage = await currentContext.newPage(); // Set up console event listener currentPage.on('console', (msg) => { consoleLogs.push({ level: msg.type(), message: msg.text(), timestamp: new Date() }); }); return { content: [ { type: 'text', text: `Browser ${params.browser} launched successfully ${params.headless ? '(headless)' : '(headed)'}` } ] }; }