Skip to main content
Glama
lewisvoncken

Playwright MCP

by lewisvoncken

browser_close

Destructive

Close the current browser page in Playwright MCP to end web automation sessions and manage browser resources.

Instructions

Close the page

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handle function for the 'browser_close' tool. It closes the current browser context using context.close() and returns a code snippet indicating page.close() without capturing a snapshot or waiting for network events.
    handle: async context => {
      await context.close();
      return {
        code: [`await page.close()`],
        captureSnapshot: false,
        waitForNetwork: false,
      };
    },
  • Schema definition for the 'browser_close' tool, specifying its name, title, description, empty input schema (no parameters), and readOnly type.
    schema: {
      name: 'browser_close',
      title: 'Close browser',
      description: 'Close the page',
      inputSchema: z.object({}),
      type: 'readOnly',
    },
  • src/tools.ts:36-52 (registration)
    Registration of browser_close tool as part of snapshotTools array via spreading common(true), which includes the close tool.
    export const snapshotTools: Tool<any>[] = [
      ...common(true),
      ...console,
      ...dialogs(true),
      ...files(true),
      ...install,
      ...keyboard(true),
      ...navigate(true),
      ...network,
      ...pdf,
      ...screenshot,
      ...snapshot,
      ...tabs(true),
      ...testing,
      ...video,
      ...wait(true),
    ];
  • src/tools.ts:54-69 (registration)
    Registration of browser_close tool as part of visionTools array via spreading common(false), which includes the close tool.
    export const visionTools: Tool<any>[] = [
      ...common(false),
      ...console,
      ...dialogs(false),
      ...files(false),
      ...install,
      ...keyboard(false),
      ...navigate(false),
      ...network,
      ...pdf,
      ...tabs(false),
      ...testing,
      ...video,
      ...vision,
      ...wait(false),
    ];
  • Final registration where snapshotTools or visionTools (containing browser_close) are selected as allTools, filtered, and passed to the Context used by the MCP server.
    const allTools = config.vision ? visionTools : snapshotTools;
    const tools = allTools.filter(tool => !config.capabilities || tool.capability === 'core' || config.capabilities.includes(tool.capability));
    validateConfig(config);
    const context = new Context(tools, config, browserContextFactory);
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true and readOnlyHint=false, which the description aligns with by implying a destructive close operation. The description adds value by specifying 'the page' as the target, clarifying scope beyond what annotations provide. However, it doesn't mention potential side effects like data loss or confirmation dialogs, which would enhance transparency for a destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action ('Close') and immediately specifies the target ('the page'), making it highly efficient. Every word earns its place in conveying the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature (per annotations) and lack of output schema, the description is minimally adequate. It covers the basic action but doesn't address implications like what happens after closing (e.g., browser state, return values) or error conditions. For a destructive tool with no output schema, more context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to explain parameters, and it efficiently states the action without redundancy. No additional parameter context is required or provided, which is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Close the page' clearly states the action (close) and target (the page), making the purpose immediately understandable. It distinguishes from siblings like browser_navigate or browser_tabs by focusing on termination rather than navigation or tab management. However, it doesn't specify if it closes the current tab or entire browser, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., requires an open page), exclusions (e.g., don't use if unsaved changes exist), or sibling tools that might be relevant (like browser_tabs for tab management). This leaves the agent with minimal context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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

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