Skip to main content
Glama
andresolbach

nodriver-mcp-server

Manage Chrome extensions

manage_extensions
Destructive

List, enable, disable, load, or unload Chrome extensions. Controls the master switch for extensions and handles unpacked extensions from a folder.

Instructions

List, enable, disable or load Chrome extensions.

Two separate mechanisms are in play. The master switch: Chrome runs with --disable-extensions by default, so extensions installed in the profile stay dark until it is turned on. And unpacked extensions loaded from a folder on disk. The master switch governs both — with it off, unpacked extensions stay registered but do not load.

"load" only works on Chromium or Chrome for Testing. Official Google Chrome builds have ignored --load-extension since v137 (still true on Chrome 151, even with --enable-unsafe-extension-debugging), and this tool says so rather than pretending it worked. On official Chrome the working path is: install the extension once from the Web Store into a persistent profile, then switch it on with "on".

Extensions only persist in a persistent profile — on the default ephemeral one nothing can stay installed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoFolder containing the extension's manifest.json, for "load" and "unload". Ignored by the other actions.
actionNo"list" shows the extensions installed in the active profile plus the current state, and changes nothing. "on" and "off" flip the master switch. "load" registers an unpacked extension from `path` and implies "on". "unload" stops loading `path`, or every unpacked extension when `path` is empty. Every action except "list" restarts the browser.list

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

The description discloses important behavioral traits beyond annotations: the master switch semantics, that every action except "list" restarts the browser, and that extensions only persist in a persistent profile. It also honestly states that the tool reports failure on official Chrome rather than pretending to succeed. This adds depth beyond the readOnlyHint/destructiveHint flags.

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 front-loaded with the core actions, then uses short paragraphs to explain the two mechanisms and platform caveats. Every sentence provides essential context, and no space is wasted. The structure is clear and appropriately sized for the tool's complexity.

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

Completeness5/5

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

Given the tool's complexity (multiple actions, platform differences, persistence concerns), the description covers all necessary aspects: what it does, when it applies, how actions behave, and limitations. An output schema exists, so return values need not be described. The description is complete enough for an agent to invoke the tool correctly.

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 input schema covers 100% of the parameters with detailed descriptions for both 'action' and 'path'. The description adds some context about the two mechanisms and platform support, but does not materially change the parameter semantics because the schema already explains that 'path' is ignored by most actions. Baseline 3 is appropriate for high schema coverage with some additional context.

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?

The description opens with a specific verb and resource: "List, enable, disable or load Chrome extensions." This clearly distinguishes it from sibling tools, which are mostly browser navigation or interaction tools. The description also explains the two underlying mechanisms, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Provides explicit when-to-use and when-not-to-use guidance, e.g., "load" only works on Chromium or Chrome for Testing, and on official Chrome the working path is to install from the Web Store first. This helps the agent select the correct action and understand limitations, which is more than just implying usage.

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/andresolbach/nodriver-mcp-server'

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