Skip to main content
Glama
yogesh-joshi-0333

browser-control-mcp-server

Navigate Browser

browser_navigate

Open any URL in a controlled browser session, wait for full page load, and return a session ID for reuse. Set viewport, proxy, or profile for new headless sessions.

Instructions

Navigate the browser to any URL — websites, localhost, web apps. Opens the page and waits for it to fully load. In headless mode, you can set custom viewport dimensions (width/height in pixels) to simulate desktop (1920x1080), tablet (768x1024), or mobile (375x812) screen sizes. Returns the final URL and sessionId. Pass the returned sessionId to all subsequent tool calls to reuse this browser session. Pass proxyServer or profile (only when NOT reusing an existing sessionId) — both apply at browser launch and cannot be changed on an existing session.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to.
modeNoForce a specific mode. Defaults to extension.
widthNoViewport width in pixels (headless only). Default 1024.
heightNoViewport height in pixels (headless only). Default 768.
profileNoNamed persistent profile for a NEW headless session (letters, digits, dash, underscore only) — cookies/localStorage survive across separate MCP server runs, unlike normal sessions which are wiped when the session ends. Manage profiles with browser_profiles. Ignored if sessionId is already set.
sessionIdNoPuppeteer session ID for headless mode. Skips mode selection.
proxyServerNoProxy server for a NEW headless session, e.g. "127.0.0.1:8080" or "http://user:pass@host:port". Ignored if sessionId is already set — proxy can only be set when the browser launches.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.5.0

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses that the call blocks until full page load, describes the headless viewport behavior, and — most valuably — explains lifecycle constraints (cookie/localStorage persistence via profiles vs. sessions being wiped, and proxy being launch-time-only). It doesn't cover failure modes (bad URL, load timeout) or auth expectations, so not a 5.

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?

Front-loaded with the core action, then the operational contract (sessionId reuse, launch-time-only params). Dense but nearly every sentence carries a distinct constraint; the viewport-size examples are the one slightly expendable flourish.

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 7-parameter, no-output-schema tool this is close to complete: it states the return values (final URL and sessionId), the session reuse model, and the launch-time constraints. The main gap is the unexplained 'connect' enum value and no note on what happens on navigation failure/timeout.

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?

Schema coverage is already 100%, so the baseline is 3, but the description adds real value beyond the schema: concrete device viewport presets (1920x1080 / 768x1024 / 375x812), the rule that sessionId must be threaded through subsequent calls, and the launch-time-only nature of proxyServer/profile. It does not explain what 'connect' mode means, which the schema also leaves opaque.

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 precise verb and resource ('Navigate the browser to any URL') and immediately scopes the target types (websites, localhost, web apps). A reader can distinguish it from browser_navigate_back / browser_navigate_forward / browser_reload without opening any schema.

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?

Gives clear operational routing: reuse a session by passing the returned sessionId to all subsequent calls, and pass proxyServer/profile only when NOT reusing a session. It even points to browser_profiles for profile management. It doesn't explicitly contrast with sibling navigation tools (reload/back/forward), so it stops short of full when/when-not coverage.

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