playwright_close
Shut down the browser and free up resources in the Playwright MCP Server, ensuring efficient management of browser sessions during web interactions.
Instructions
Close the browser and release all resources
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/toolHandler.ts:350-382 (handler)Primary execution logic for 'playwright_close' tool: special case that closes the browser instance if it exists, handles errors, resets global browser state, and returns appropriate success message.if (name === "playwright_close") { if (browser) { try { if (browser.isConnected()) { await browser .close() .catch((e) => console.error("Error closing browser:", e)); } } catch (error) { console.error("Error during browser close in handler:", error); } finally { resetBrowserState(); } return { content: [ { type: "text", text: "Browser closed successfully", }, ], isError: false, }; } return { content: [ { type: "text", text: "No browser instance to close", }, ], isError: false, }; }
- src/tools.ts:209-217 (schema)Tool definition including name, description, and empty input schema (no parameters required). Part of createToolDefinitions() for MCP registration.{ name: "playwright_close", description: "Close the browser and release all resources", inputSchema: { type: "object", properties: {}, required: [], }, },
- src/tools/browser/navigation.ts:63-91 (handler)Class-based handler implementation for closing browser (CloseBrowserTool.execute). Similar logic to inline handler but not invoked due to early return in toolHandler.ts.export class CloseBrowserTool extends BrowserToolBase { /** * Execute the close browser tool */ async execute(args: any, context: ToolContext): Promise<ToolResponse> { if (context.browser) { try { // Check if browser is still connected if (context.browser.isConnected()) { await context.browser.close().catch(error => { console.error("Error while closing browser:", error); }); } else { console.error("Browser already disconnected, cleaning up state"); } } catch (error) { console.error("Error during browser close operation:", error); // Continue with resetting state even if close fails } finally { // Always reset the global browser and page references resetBrowserState(); } return createSuccessResponse("Browser closed successfully"); } return createSuccessResponse("No browser instance to close"); } }
- src/toolHandler.ts:462-463 (registration)Dispatch registration in handleToolCall switch statement (redundant due to special case above).case "playwright_close": return await closeBrowserTool.execute(args, context);
- src/tools.ts:414-414 (helper)Inclusion in BROWSER_TOOLS array, used to determine browser launch requirements."playwright_close",