browser_install
Install the required browser for Playwright MCP's automation tasks when encountering browser not installed errors.
Instructions
Install the browser specified in the config. Call this if you get an error about the browser not being installed.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/install.ts:34-53 (handler)The handler function that forks the Playwright CLI process to install the browser channel specified in the config (defaults to 'chrome'). Captures output and rejects on non-zero exit code.handle: async (context, params, response) => { const channel = context.config.browser?.launchOptions?.channel ?? context.config.browser?.browserName ?? 'chrome'; const cliUrl = import.meta.resolve('playwright/package.json'); const cliPath = path.join(fileURLToPath(cliUrl), '..', 'cli.js'); const child = fork(cliPath, ['install', channel], { stdio: 'pipe', }); const output: string[] = []; child.stdout?.on('data', data => output.push(data.toString())); child.stderr?.on('data', data => output.push(data.toString())); await new Promise<void>((resolve, reject) => { child.on('close', code => { if (code === 0) resolve(); else reject(new Error(`Failed to install browser: ${output.join('')}`)); }); }); response.setIncludeTabs(); },
- src/tools/install.ts:26-32 (schema)The tool schema defining name 'browser_install', empty input schema (no parameters), and destructive type.schema: { name: 'browser_install', title: 'Install the browser specified in the config', description: 'Install the browser specified in the config. Call this if you get an error about the browser not being installed.', inputSchema: z.object({}), type: 'destructive', },
- src/tools.ts:36-52 (registration)Registers browser_install by spreading the install tools array into the global allTools list used by the backend.export const allTools: Tool<any>[] = [ ...common, ...console, ...dialogs, ...evaluate, ...files, ...install, ...keyboard, ...navigate, ...network, ...mouse, ...pdf, ...screenshot, ...snapshot, ...tabs, ...wait, ];
- src/browserServerBackend.ts:48-50 (registration)The MCP ServerBackend.tools() method exposes the tool schemas (including browser_install) to the MCP server.tools(): mcpServer.ToolSchema<any>[] { return this._tools.map(tool => tool.schema); }
- src/browserServerBackend.ts:39-40 (registration)Initializes the backend's _tools list using filteredTools(config), which includes core-install capability tools like browser_install.constructor(config: FullConfig, browserContextFactory: BrowserContextFactory) { this._tools = filteredTools(config);