MCP Browser Extension
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tabs_listA | List open browser tabs. |
| screenshotB | Capture a screenshot (page or element). Default is JPEG (quality 70) at CSS-pixel size, which is several times smaller than PNG and reads fine. Pass format:"png" for lossless, quality 1-100 for JPEG, scale 2 for device pixels on a Retina display or 0.5 to shrink. |
| get_textC | Get visible text of the page or an element. |
| get_htmlA | Get HTML of the page or an element. Output is capped (see maxBytes) and cut at a tag boundary; narrow it with |
| snapshotB | Accessibility snapshot: interactive elements with refs to target by |
| get_cookiesC | Read cookies visible to the tab's URL (or a given url). |
| storageC | Read/write localStorage (or sessionStorage). op: get|set|remove|clear. |
| wait_forC | Wait for a selector or text to appear/disappear. |
| extract_linksB | Extract anchors from the page or a subtree. dedupe=true collapses links sharing an href (nav/footer noise); limit caps the count. |
| read_as_markdownC | Read the page (or subtree) as readable markdown. |
| frames_listA | List the tab's frames (the top document plus every iframe the extension can reach), with each frame's id and URL. Use it when a selector that should match does not: the element is probably in one of these frames, and you can then pass frameId (or allFrames:true) to act inside it. |
| print_pdfB | Render the page to PDF through Chrome's own print pipeline and save it to the task's results/ dir. Returns the path and size, not the bytes - a PDF is not something to spend context on. |
| proxy_statusB | The active profile's proxy and the IP sites see. The user sets it per Chrome profile; for another IP, profile_use another profile. |
| chrome_statusA | Report backend/session status: paired browser profiles and how each was named, and flags for switched-off capabilities. |
| auth_checkA | Is the tab sitting on a sign-in wall? Reads the page (URL, title, password fields, sign-in controls) and returns { authRequired, confidence, signals }. Use it after a navigate, or whenever a step fails unexpectedly, to tell "the session expired" apart from "the agent got lost". Pass failOnAuthWall:true to get an [AUTH_REQUIRED] error instead of a verdict, so a harness can bucket the run as an auth failure. |
| profile_useA | Switch the active browser profile (identity). Subsequent downloads, results, screenshots, and the action log are stored under profiles//. Resets the active task to "default" unless you then call task_new. |
| profile_renameA | Rename an automatically named browser profile (e.g. "profile-2" -> "work"). The name sticks across restarts; its saved artifacts move with it. |
| task_newA | Start a new task (run) under the active profile. Creates profiles//tasks// with downloads/, results/, screenshots/ and makes it the active task so all captured artifacts land there. |
| tasks_listA | List every task across all profiles under the data dir, with sizes and download counts. |
| task_statusA | Report the active profile/task and the folder paths where this run's artifacts are stored. |
| batchA | Run multiple tool calls in one request — parallel (default) or serial. Each op is { tool, args } and goes through the same policy gate, rate limit, and error handling as a direct call. In parallel mode, tab-scoped ops MUST pass an explicit tabId (the active-tab default is unsafe under concurrency). Use to drive several tabs at once (e.g. open tabs, then batch get_text across them). Cannot be nested. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Each tool has a distinct purpose, but there are clusters that could confuse: proxy_status/chrome_status/task_status all report status, and get_text/get_html/read_as_markdown/snapshot all extract page content. Descriptions do a good job of clarifying the boundaries, so misselection is unlikely but possible.
The set mixes several conventions: verb_noun (extract_links, read_as_markdown, get_text), noun_status (chrome_status, task_status), noun_verb (profile_use, task_new, tabs_list), and bare single words (batch, snapshot, storage). Readable but not predictable.
21 tools is on the heavier side but each appears to earn its place across status, profile/task management, extraction, and capture concerns. Reasonable for a full-featured browser automation surface, though slightly bloated.
Profile/task lifecycle, content extraction, and capture are well covered, but core interaction tools are absent: there is no navigate, click, type/fill, or scroll, even though snapshot/auth_check explicitly reference targeting by `ref` and acting 'after a navigate'. This is a notable gap for a browser automation server.