Navigator MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NAVIGATOR_STATS | No | Local usage counters for usage_report. | true |
| CAPSOLVER_API_KEY | No | Captcha provider key for CapSolver. | |
| NAVIGATOR_STEALTH | No | Fingerprint + runtime patches for stealth. | true |
| NAVIGATOR_API_KEYS | No | HTTP auth keys (comma-separated) for remote access. | |
| NAVIGATOR_HEADLESS | No | Headless mode (set false for captchas/anti-bot). | true |
| NAVIGATOR_HUMANIZE | No | Human-like input synthesis. | true |
| TWOCAPTCHA_API_KEY | No | Captcha provider key for 2Captcha. | |
| NAVIGATOR_CDP_ENDPOINT | No | Drive an external (patched) browser via a CDP endpoint. | |
| NAVIGATOR_MAX_SESSIONS | No | Resource cap on parallel sessions. | 64 |
| NAVIGATOR_PROXY_SERVER | No | Default proxy for all sessions. | |
| NAVIGATOR_AUTO_SNAPSHOT | No | Include snapshots in action results. | true |
| NAVIGATOR_ALLOWED_DOMAINS | No | Optional navigation lockdown (allowlist of domains). |
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 | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| navigator_statusB | One-call status: version, sessions, scope, providers, limits. |
| usage_reportA | Local usage stats: tool call counts, per-day breakdown, totals. Purely local counters (~/.navigator/usage.json) for your own insight — no URLs or page content are ever recorded. Disable with NAVIGATOR_STATS=false. |
| browser_navigateB | Navigate the active (or specified) tab to a URL. Returns the new page state; includes a fresh snapshot when the page content changed (configurable via NAVIGATOR_AUTO_SNAPSHOT). |
| browser_navigate_backC | Go back one history step in the tab. |
| browser_navigate_forwardB | Go forward one history step in the tab. |
| browser_reloadC | Reload the current page. |
| browser_wait_forC | Wait until text appears, a selector matches, or a fixed time passes. |
| browser_get_urlA | Return the current URL and title of the tab. |
| browser_clickA | Click an element by its ref from the snapshot (e.g. e12). Uses human-like mouse movement when the session has humanization enabled. |
| browser_click_textB | Fallback click by visible text (use when no ref is available). |
| browser_fillC | Fill a field by ref. Set submit=true to press Enter afterwards. |
| browser_fill_formA | Fill multiple fields in one call — much faster than one fill per field. Each item: {"ref": "e5", "value": "text"}. Optionally submits the form (presses Enter on the last field). |
| browser_select_optionB | Select an option in a dropdown (combobox) by ref. Value = option label. |
| browser_hoverC | Hover over an element by ref (reveals menus/tooltips). |
| browser_press_keyB | Press a key (e.g. Enter, Escape, Tab, ArrowDown, Control+a). |
| browser_dragC | Drag element ref_a onto element ref_b. |
| browser_upload_fileC | Upload a local file. Ref may point to the file input or its trigger button. |
| browser_scrollB | Scroll the page. Directions: down, up, top, bottom. Optional pixel amount. |
| browser_snapshotA | Capture the page as a compact, ref-annotated accessibility snapshot. Elements get stable refs (e.g. [ref=e12]) that interaction tools accept. If the page is unchanged since the last snapshot, returns a short "unchanged" notice instead of re-sending the tree (major token savings). Set force=true to always re-render, deep=true to include child frames. |
| browser_findA | Search the current page for elements matching a text pattern (regex ok) and/or an ARIA role. Returns matching elements with their refs — cheaper than a full snapshot when you know what you're looking for. By default only actionable elements (links, buttons, fields, headings, images) are searched; set include_structural=true to also match containers (banner/navigation/form/...). |
| browser_extract_textA | Extract text — whole page (smart main-content) or a specific element. Supports pagination via offset/limit for very long pages. |
| browser_extract_htmlB | Extract HTML — whole document or a specific element (by ref). |
| browser_extract_linksB | List all links (deduplicated) with their resolved hrefs. |
| browser_extract_formsA | List forms and their fields — the map for browser_fill_form. |
| browser_extract_tablesC | Extract content as row arrays (token-cheap vs HTML). |
| browser_extract_metaB | Extract page metadata: title, meta tags, OpenGraph, canonical. |
| browser_read_consoleB | Read console messages and page errors (JS errors, logs, failed asserts). Set drain=true to clear the buffer after reading. |
| browser_read_dialogsC | Read captured alert/confirm/prompt dialogs. |
| browser_tab_listB | List the tabs of a session with their URLs. |
| browser_tab_newA | Open a new tab (optionally navigating it to a URL) and make it active. |
| browser_tab_selectA | Make another tab active (subsequent tools act on it). |
| browser_tab_closeB | Close a tab (the active one cannot be the last tab). |
| browser_session_listA | List all active sessions with their tabs, fingerprints and proxies. |
| browser_session_newB | Create a new isolated browser session.
|
| browser_session_closeA | Close a session and all its tabs (cookies/storage are discarded unless saved with browser_session_save_auth). |
| browser_session_save_authA | Persist the session's cookies + localStorage to a named profile. Restore later via browser_session_new(profile=profile_name) — survives restarts, perfect for staying logged in across engagements. |
| browser_screenshotB | Take a screenshot and return it as an image (for vision-capable LLMs). area: "viewport" (visible part), "full" (entire page), or "element" (requires ref). format: png or jpeg (jpeg is much smaller — prefer it for large pages). |
| browser_save_pdfC | Save the current page as a PDF (Chromium only). |
| browser_network_capture_startB | Start recording network requests on this tab. Optional filters: resource_types (document/xhr/fetch/script/image/...), url_contains (substring), methods (GET/POST/...). Default records everything. |
| browser_network_capture_stopB | Stop recording network requests (buffer is kept until next start). |
| browser_network_listB | List captured network requests (most recent first). |
| browser_network_getB | Fetch full details + response body of a captured request (by index). |
| browser_network_blockA | Block requests matching URL globs across all sessions. Examples: ["/*.css", "/ads.js", "doubleclick"]. Blocks ads and trackers to speed up automation dramatically. |
| browser_network_unblockA | Remove all URL blocking rules. |
| browser_discover_apisC | Discover background API endpoints (fetch/XHR) used by the page — including internal/undocumented APIs, from capture or live observation. |
| browser_set_dialog_modeA | Set dialog handling: "auto" (accept + record — default) or "manual" (pause dialogs so browser_dialog_respond can answer them). |
| browser_dialog_respondB | Respond to a pending manual-mode dialog (accept/dismiss, optional text). |
| browser_evaluateA | Evaluate JavaScript in the page and return the result. Prefer a function expression: "() => document.title" or "(x) => fetch(x).then(r => r.status)" with arg passed as parameter. Everything the page can do is allowed — this is raw power, use responsibly. |
| browser_captcha_detectA | Detect captcha widgets on the current page (type, evidence, sitekeys). |
| browser_captcha_solveA | Solve the captcha on the current page automatically. Needs a provider API key (TWOCAPTCHA_API_KEY or CAPSOLVER_API_KEY). Supports reCAPTCHA v2, hCaptcha, Turnstile and plain image captchas (via ref pointing at the image element). |
| browser_captcha_manual_waitA | Wait for a human to solve the captcha (requires a visible browser: NAVIGATOR_HEADLESS=false or VNC). Polls until the captcha disappears. |
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 51 tools
Tools are organized around clearly separate actions and resources (navigation, clicks, fills, extractions, tabs, sessions, network, captchas), so an agent can usually pick the right one. A few pairs like browser_click vs browser_click_text or browser_snapshot vs browser_find overlap in intent, but the descriptions frame them as ref-based vs fallback/filtered alternatives.
The vast majority follow a predictable browser_<verb>_<noun> snake_case pattern, with clear groups like browser_extract_*, browser_network_*, browser_tab_*, and browser_session_*. Exceptions such as navigator_status and usage_report break the prefix pattern, and dialog/network verbs are not perfectly parallel, but the system is still easy to navigate.
Fifty-one tools is well past the 25+ threshold and creates a heavy surface for an agent to evaluate, even for a browser-automation domain. The set could be consolidated (e.g., extraction variants, captcha helpers, network controls) without losing core capability, so the count feels too high rather than well-scoped.
The server covers the full browser lifecycle: session/tab management, navigation, interaction, extraction, network capture/blocking, dialogs, console, screenshots, PDF, and captcha handling. There are no obvious dead ends, and browser_evaluate provides an escape hatch for anything not explicitly exposed.