Skip to main content
Glama
JackZhao98

chrome-automation-mcp

by JackZhao98

Chrome Automation MCP

中文版文档:docs/README-zh.md

A Model Context Protocol (MCP) server for browser automation using Playwright to control Chrome browsers.

npm version License: MIT

Installation

npm install -g chrome-automation-mcp@1.2.0

Requirements:

  • Node.js 18.0.0 or higher

  • Google Chrome browser

Related MCP server: Puppeteer MCP Server

MCP Configuration

Claude Desktop Setup

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "chrome-automation": {
      "command": "chrome-automation-mcp-full"
    }
  }
}

Lite Mode (Essential Tools Only)

{
  "mcpServers": {
    "chrome-automation": {
      "command": "chrome-automation-mcp"
    }
  }
}

Available Tools

🚀 Browser Management

  • launch_browser - Launch Chrome browser with session management

  • connect_browser - Connect to existing Chrome instance

  • close_browser - Close browser connection

📍 Navigation & Interaction

  • navigate_to - Navigate to URL

  • click - Click on elements with smart visibility detection

  • type_text - Type text into input fields

  • scroll - Scroll page to find hidden elements

  • wait_for - Wait for elements (auto-switches to new tabs)

📊 Information Gathering

  • read_text - Read text content from page/elements

  • get_elements - Get element information and attributes

  • screenshot - Take page screenshots

  • get_page_info - Get current page information

🖥️ Tab Management

  • switch_to_tab - Switch between tabs

  • get_tabs - Get information about all open tabs

💻 Code Execution

  • run_script - Execute external JavaScript files with browser access

  • evaluate - Execute JavaScript in browser context

  • set_storage - Set browser storage (cookies, localStorage, etc.)

⚙️ Session Management

  • list_sessions - List active browser sessions

  • press_key - Press keyboard keys with modifiers

  • go_back - Navigate back in browser history

Quick Start

  1. Launch Browser

{"tool": "launch_browser", "arguments": {}}
  1. Navigate to Website

{"tool": "navigate_to", "arguments": {"url": "https://google.com"}}
  1. Take Screenshot

{"tool": "screenshot", "arguments": {"fullPage": true}}

Script Development

Create custom automation scripts:

// my-automation-script.js
const searchQuery = args.query || 'MCP servers';

// Navigate to Google
await page.goto('https://google.com');

// Search
await page.fill('input[name="q"]', searchQuery);
await page.press('input[name="q"]', 'Enter');

// Wait for results
await page.waitForSelector('h3');

// Get all results
const results = await page.$$eval('h3', els => 
  els.map(el => el.textContent)
);

return { 
  query: searchQuery,
  searchResults: results,
  count: results.length
};

Use the script:

{
  "tool": "run_script", 
  "arguments": {
    "scriptPath": "./my-automation-script.js",
    "args": {"query": "playwright automation"}
  }
}

Available in scripts:

  • browser - Playwright browser instance

  • page - Current page object

  • args - Passed arguments

Lite Mode Features

Lite mode includes only essential tools for basic automation:

  • Browser management (launch_browser, close_browser)

  • Script execution (run_script)

  • Storage management (set_storage)

Perfect for lightweight integrations and custom script-based workflows.


Built with ❤️ for the MCP ecosystem

Available Tools

10 tools
cleanup_sessionsA

Clean up inactive/orphaned browser sessions and directories without affecting active sessions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the affected scope and the active-session safety guarantee, but does not state whether cleanup is irreversible, what permissions are required, or what happens to the cleaned directories.

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?

A single front-loaded sentence with no wasted words. The scope and the key exclusion are both stated efficiently.

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

Completeness4/5

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

For a zero-parameter cleanup tool, the description covers purpose, scope, and the active-session exclusion adequately. Minor gaps remain around destructive semantics, permissions, and output behavior, especially since there are no annotations or output schema.

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?

The tool has zero parameters and an empty input schema. Per the rubric, zero-parameter tools receive a baseline of 4, and there are no parameters whose semantics need additional explanation.

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

Purpose5/5

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

States a specific verb and resource: 'Clean up inactive/orphaned browser sessions and directories.' The clause 'without affecting active sessions' distinguishes it from close_browser and close_all_browsers.

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

Usage Guidelines4/5

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

Clearly implies when to use it: for inactive/orphaned sessions and directories, while excluding active sessions. It does not explicitly name alternatives such as list_sessions or close_browser, so it falls short of a full 5.

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

close_all_browsersA

Gracefully close all active browser sessions (tries to close browsers properly first, then force kill if needed)

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoSkip graceful close and immediately force kill all processes and clean directories

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the two-phase close (graceful first, force-kill fallback), which is real behavioral context. However, it omits what actually gets destroyed, whether session data/directories are cleaned, permission requirements, and return behavior, which matters for a destructive process-killing 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?

A single front-loaded sentence with no filler; the core action and the fallback behavior are stated compactly. Every clause earns its place.

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?

For a destructive, no-annotation mutation tool with no output schema, the graceful/force behavior is covered but the blast radius is not: it doesn't say what data is removed, whether directories are cleaned, or what the result looks like. Adequate but incomplete for its risk profile.

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

Parameters3/5

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

The single 'force' param is fully documented in the schema (100% coverage), so the baseline is 3. The description adds modest value by explaining the default non-force path ('tries to close properly first'), which contextualizes what force=true skips, but adds no syntax or format detail beyond the schema.

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

Purpose5/5

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

States a specific verb ('close') plus resource ('all active browser sessions'), and the 'all' scope cleanly distinguishes it from the sibling close_browser and from cleanup_sessions. An agent can tell what it does and that it targets every session, not one.

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 explicit when-to-use, when-not-to-use, or alternative routing (e.g. close_browser for a single session, cleanup_sessions for leftovers). Usage is only implied by the tool name; the description offers no selection guidance.

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

close_browserA

Gracefully close the browser connection and clean up session data

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdNoSession ID to close (optional, closes current session if not specified)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose two meaningful traits: the close is 'graceful' and it destroys session data, which is useful. However, it omits whether cleanup is reversible, what happens with an invalid or already-closed session, and whether other sessions are unaffected.

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?

One sentence, front-loaded with the action and resource, with no filler. Every clause ('gracefully', 'clean up session data') carries information.

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

Completeness4/5

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

For a zero-required-param teardown tool with no output schema, the description covers purpose, scope, and the cleanup side effect adequately. It could go further on sibling disambiguation and post-close state, but nothing essential to a correct call is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single optional sessionId already documents its default behavior. The description adds no syntax or semantics beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('close') and resource ('browser connection'), plus the side effect of cleaning up session data. It is distinguishable from close_all_browsers by scope ('the browser connection' vs. all), but the description never explicitly contrasts the two siblings.

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

Usage Guidelines3/5

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

Usage is only implied by the name and scope. There is no explicit guidance on when to use this versus close_all_browsers or cleanup_sessions, nor any note about calling it at end of a workflow.

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

get_loginA

🔐 INTERACTIVE LOGIN: Opens browser to specified URL, waits for manual login, then captures authentication data. A floating 'Finish Connect' button appears for you to click when login is complete. Button persists through page redirects during login flow.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to navigate to for login (e.g., 'https://google.com')
autoCloseNoAutomatically close browser after capturing login data (default: true). When true, clicking 'Finish Connect' will close the browser immediately after data capture.
saveToFileNoSave authentication data to a JSON file in /tmp directory (default: false). When true, returns file path for easy script integration.
waitMessageNoCustom message to display while waiting for loginPlease complete your login, then click 'Finish Connect'

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose the non-obvious mechanics: a floating 'Finish Connect' button, that it persists across redirects, and that capture happens only after manual click. It still omits timeout/failure behavior and whether the call blocks indefinitely while waiting.

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

Conciseness4/5

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

Three front-loaded sentences, the interaction model first and the button detail after; little waste beyond the leading emoji. Every sentence conveys usable behavior.

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?

No output schema exists, yet the description never says what 'authentication data' is captured or in what form (cookies, tokens), leaving the return value underspecified. Combined with the silent timeout/failure behavior, a call-blocking interactive tool is only partially covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents url, autoClose, saveToFile, and waitMessage. The description adds no parameter-level detail beyond what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

States specific verbs and resource: opens a browser to a URL, waits for manual login, then captures authentication data. The 'INTERACTIVE LOGIN' framing clearly separates it from siblings like launch_browser and navigate_to, which do not perform credential capture.

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

Usage Guidelines3/5

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

Usage is implied by the description – you use this when a site requires manual authentication and you want the resulting session data. However, it never states when NOT to use it or points to alternatives such as set_storage (when cookies already exist) or launch_browser for unauthenticated browsing.

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

launch_browserB

Launch Chrome browser with session management. Each instance gets a unique session ID, port, and user data directory for isolation.

ParametersJSON Schema
NameRequiredDescriptionDefault
debugPortNoRemote debugging port (auto-assigned per session if not provided)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose real behavioral facts: per-instance session IDs, ports, and isolated user data directories. However, it says nothing about failure modes, whether the call blocks until the browser is ready, lifetimes, or the need to clean up sessions.

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

Conciseness4/5

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

Two tightly written sentences with the main action front-loaded and no filler. The second sentence adds isolation context that earns its place.

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?

Adequate for a zero-required-parameter launcher with a fully documented schema, and the mention of session IDs implicitly covers the return value. It is still incomplete on lifecycle: how long the session lives and when to invoke close_browser or cleanup_sessions is left unstated.

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

Parameters3/5

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

Schema coverage is 100% and there is only one optional parameter, so the schema fully documents debugPort including auto-assignment. The description adds no syntax or format detail beyond that, making the baseline 3 appropriate.

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?

States a specific verb and resource ('Launch Chrome browser') plus a distinguishing scope ('with session management'), which separates it from siblings like close_browser and list_sessions. It does not explicitly name an alternative, so it stops short of a 5.

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?

There is no explicit guidance on when to launch versus reuse an existing session, nor any note about the relationship to cleanup_sessions or close_browser. Usage is only implied by the tool name and the mention of session IDs.

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

list_sessionsB

List all active browser automation sessions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but 'List' strongly implies a safe read-only operation and 'active' scopes the result set. It still says nothing about return format, pagination, or what counts as a session (e.g. whether background scripts count).

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?

A single tight sentence with the resource and scope front-loaded and no filler. Nothing could be trimmed without losing meaning.

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?

For a zero-parameter read tool with no output schema, a one-line description is close to sufficient, but it leaves 'active session' undefined and gives no hint about what the result contains. Adequate but with a clear gap.

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?

The tool takes zero parameters, so the schema cannot carry any parameter meaning and the description has nothing to compensate for. Baseline 4 applies.

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?

States a specific verb and resource ('List all active browser automation sessions'), which clearly reads as a non-mutating inspection tool. It does not explicitly differentiate itself from siblings like cleanup_sessions or close_all_browsers, though the verb does most of that work.

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 on when to use this versus alternatives such as cleanup_sessions or close_all_browsers, and no stated prerequisites. The agent must infer the use case entirely from the name.

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

run_scriptB

📁 Execute a JavaScript file from local disk path or remote URL with access to browser automation. Use for complex automation scripts or reusable workflows. Must provide either scriptPath OR scriptUrl (not both).

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoArguments to pass to the script. Common: {query: 'search term', url: 'target.com'}
scriptUrlNoRemote URL to the JavaScript file (e.g., 'https://example.com/scripts/automation.js'). Cannot be used with scriptPath.
sessionIdNoSession ID to use for script execution. If not provided, uses current session. If provided, will connect to the specified session's browser.
screenshotNoTake a screenshot after script execution. Default: false
scriptPathNoLocal disk path to the JavaScript file (e.g., 'scripts/login-workflow.js'). Cannot be used with scriptUrl.
autoCloseTabNoAutomatically close the tab after script completes (only works when createNewTab is true). Helps prevent tab accumulation.
createNewTabNoCreate a new tab for this script execution. Each script runs in isolation with its own tab. Useful for running multiple scripts in parallel without interference.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses only that the script gets browser-automation access. It says nothing about the fact that a remote URL means executing arbitrary third-party code, what happens on failure, timeout limits, or whether the script can mutate browser/session state.

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

Conciseness4/5

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

Three short sentences, front-loaded with the action and resource, with the critical mutual-exclusivity constraint placed last for emphasis. The leading emoji is noise but does not materially bloat the text.

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

Completeness2/5

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

For a 7-parameter tool that executes arbitrary code with no annotations and no output schema, the description should explain how results surface (return value, logs, screenshots) and any sandboxing or session implications. It leaves the agent guessing about the execution model beyond the source-of-script rule.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are already documented, including the scriptPath/scriptUrl conflict and the nested args object. The description's "either scriptPath OR scriptUrl (not both)" restates the schema's own constraint rather than adding new meaning, so the baseline 3 applies.

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?

States a specific verb (Execute) and resource (a JavaScript file) plus the two accepted sources (local path or remote URL), which is concrete and unambiguous. It does not, however, differentiate itself from the obvious sibling run_script_background, which an agent must choose between.

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

Usage Guidelines3/5

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

"Use for complex automation scripts or reusable workflows" gives a rough sense of when this tool fits, but offers no exclusions and never names the alternative (run_script_background for non-blocking execution, or navigate_to for simple navigation). The mutual-exclusivity rule is invocation guidance rather than when-to-use guidance.

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

run_script_backgroundB

📁 Execute a JavaScript file in the background with browser automation. Returns immediately with task info while script runs in background. Output is saved to files. Must provide either scriptPath OR scriptUrl (not both).

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoArguments to pass to the script. Common: {query: 'search term', url: 'target.com'}
scriptUrlNoRemote URL to the JavaScript file (e.g., 'https://example.com/scripts/automation.js'). Cannot be used with scriptPath.
sessionIdNoSession ID to use for script execution. If not provided, uses current session. If provided, will connect to the specified session's browser.
screenshotNoTake a screenshot after script execution. Default: false
scriptPathNoLocal disk path to the JavaScript file (e.g., 'scripts/login-workflow.js'). Cannot be used with scriptUrl.
autoCloseTabNoAutomatically close the tab after script completes (only works when createNewTab is true). Helps prevent tab accumulation.
createNewTabNoCreate a new tab for this script execution. Each script runs in isolation with its own tab. Useful for running multiple scripts in parallel without interference.
projectFolderNooutput folder: Set this to specify where output files (.json and .log) will be saved. If not provided, defaults to system temp directory /tmp/{session_id}. Example: '/Users/username/my-project/outputs'
autoCloseBrowserNoAutomatically close the browser after script execution completes. Default: true

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden. It does disclose two important traits — that it returns immediately while work continues, and that output is persisted to files — which is real value. But it omits failure behavior, concurrency limits, and whether it requires an existing browser/session, which matters for a 9-parameter automation tool.

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

Conciseness4/5

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

Three short sentences, front-loaded with what the tool does before the constraint. The leading emoji is noise, but the prose itself is tight and wastes little.

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?

For a 9-parameter tool with nested args and no output schema, the description covers execution semantics and the output-file behavior reasonably. It does not address session/tab lifecycle implications (createNewTab, autoCloseBrowser) or what the returned 'task info' contains, which the absent output schema leaves unexplained.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already fully documented, setting the baseline at 3. The description only reinforces the scriptPath/scriptUrl exclusivity that the schema already states, adding no meaning beyond it.

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?

States a specific verb (Execute) and resource (a JavaScript file) plus the distinguishing mode ('in the background') and the immediate-return behavior. It does not, however, contrast itself with the sibling run_script, so an agent must infer the foreground/background split on its own.

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

Usage Guidelines3/5

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

The description gives one hard usage rule ('Must provide either scriptPath OR scriptUrl (not both)'), which is genuinely helpful for invocation. It offers no guidance on when a background run is preferable to run_script or when to pass a sessionId, leaving the primary use-case decision to inference.

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

set_storageA

🔐 PREFERRED TOOL for setting login state and authentication data. Use this instead of evaluate() to set cookies, localStorage, and sessionStorage to maintain user login sessions across browser automation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo🔗 Optional URL to navigate to in a background tab before setting storage. If provided, opens a new tab (without switching focus), navigates to this URL, and sets storage there. Useful for setting cookies/storage for a specific domain.
domainNo🌐 Default website domain for cookies when not specified individually. Example: 'localhost:3001', 'app.example.com'
cookiesNo🍪 Array of cookie objects for authentication tokens, session IDs, etc.
filePathNoPath to JSON file containing storage data to import
sessionIdYesSession ID to operate ondefault
cookieStringNo🍪 EASY WAY: Raw cookie string copied from browser (document.cookie). Example: 'session_id=abc123; user_token=xyz789; theme=dark'
localStorageNo💾 Persistent browser storage that survives page reloads. Used for user preferences, auth tokens, app state. Example: {'auth_token': 'bearer_xyz', 'user_id': '12345'}
sessionStorageNo🔄 Temporary storage that clears when tab closes. Used for session-specific data. Example: {'temp_data': 'value', 'session_state': 'active'}

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It never says whether existing cookies/storage are overwritten or merged, whether the operation is reversible, what permissions or session state are required, or how errors surface for an 8-parameter mutation 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?

Two tight sentences, front-loaded with the tool's purpose and the preference over evaluate(). No filler or redundant restatement of the name.

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?

Parameters are fully documented in the schema, but for a no-annotation mutation tool the description omits overwrite semantics, scope across tabs/sessions, and failure behavior. Adequate but with clear gaps for a tool this complex.

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

Parameters3/5

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

Schema description coverage is 100%, with rich per-field documentation including examples and defaults, so the schema already does the heavy lifting. The description adds no syntax, precedence, or interaction detail (e.g., cookieString vs cookies vs filePath) beyond what the schema states.

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?

States a specific verb and resource set (set cookies, localStorage, sessionStorage) and explicitly frames itself as the tool for login/auth state. It differentiates from evaluate(), though that alternative is not among the listed siblings, so differentiation from tools like run_script or get_login is left implicit.

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

Usage Guidelines4/5

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

Explicitly says to prefer this over evaluate() for setting login state, which is actionable when-to-use guidance. It stops short of stating when NOT to use it or how it relates to siblings such as get_login or run_script.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.3.8
    • First observedcleanup_sessions
    • First observedclose_all_browsers
    • First observedclose_browser
    • First observedget_login
    • First observedlaunch_browser
    • First observedlist_sessions
    • First observednavigate_to
    • First observedrun_script
    • First observedrun_script_background
    • First observedset_storage

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have clearly distinct purposes (launch, navigate, script execution, storage, session management). Some potential overlap exists between cleanup_sessions and close_all_browsers, and get_login vs set_storage both touch auth data, but descriptions distinguish them adequately.

Naming Consistency4/5

Names follow a mostly consistent snake_case verb_noun pattern (launch_browser, run_script, close_browser, list_sessions). Minor deviations like navigate_to (verb only) and get_login (get is odd for an interactive capture tool) slightly break the pattern but remain readable.

Tool Count5/5

10 tools is well-scoped for a browser automation server, with each tool earning its place across launch, control, scripting, and cleanup concerns. No redundant or filler tools.

Completeness4/5

Covers the full lifecycle: launch, navigate, script execution, storage/auth, session listing, and cleanup/closing. Missing explicit page-interaction primitives (screenshot, click, get content) which agents must reach for scripts to accomplish, but core workflows are covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides browser automation capabilities using Playwright. This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.
    32
    11,239 npm
    5,644
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.
    18
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages, take screenshots, generate test code, scrape web content, and execute JavaScript in a real browser environment.
    32
    11,239 npm
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server for web automation that enables browser control, element interaction, content extraction, and monitoring using Playwright.
    7
    6 npm
    ISC