Skip to main content
Glama
mehranakila56-ops

mcp-browser-server

mcp-browser-server

Give your AI assistant a real browser. Navigate, click, fill forms, and take screenshots via any MCP client.

License: MIT MCP

A Model Context Protocol (MCP) server that gives AI assistants like Claude full browser control. Connect to local or cloud browsers (AnchorBrowser, Browserbase) and automate web interactions directly from your AI workflows.

What it does

Instead of telling your AI agent how to scrape a website, you give it a real browser. The AI can:

  • Navigate to any URL

  • Click buttons and links

  • Fill out and submit forms

  • Take screenshots

  • Read page content and extract data

  • Handle authentication (SSO, multi-step logins)

Related MCP server: mcp-browser-kit

MCP Tools Provided

Tool

Description

browser_navigate

Go to a URL

browser_click

Click an element by selector or description

browser_type

Type text into an input field

browser_screenshot

Take a screenshot of the current page

browser_get_content

Get page HTML or extracted text

browser_evaluate

Run JavaScript in the browser

browser_wait

Wait for an element or condition

browser_scroll

Scroll the page

Installation

npm install -g mcp-browser-server

Or clone and run locally:

git clone https://github.com/mehranakila56-ops/mcp-browser-server.git
cd mcp-browser-server
npm install

Configuration

With Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": ["mcp-browser-server"],
      "env": {
        "BROWSER_PROVIDER": "local",
        "HEADLESS": "true"
      }
    }
  }
}

With Cloud Browser (AnchorBrowser)

For stealth mode, CAPTCHA solving, and residential proxies:

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": ["mcp-browser-server"],
      "env": {
        "BROWSER_PROVIDER": "anchorbrowser",
        "ANCHOR_API_KEY": "your-api-key-here"
      }
    }
  }
}

Environment Variables

Variable

Default

Description

BROWSER_PROVIDER

local

local, anchorbrowser, browserbase

HEADLESS

true

Run browser in headless mode (local only)

ANCHOR_API_KEY

AnchorBrowser API key

BROWSERBASE_API_KEY

Browserbase API key

SESSION_TIMEOUT_MS

300000

Browser session timeout (5 min)

SCREENSHOT_FORMAT

png

Screenshot format: png or jpeg

Usage Examples

Once configured with Claude, you can say:

"Go to github.com/trending and show me the top 5 repos today"

"Log into our staging environment at staging.example.com and check if the signup form works"

"Take a screenshot of https://example.com and describe what you see"

"Fill out the contact form at example.com/contact with my info: name=Jane, email=jane@example.com, message='Hello'"

Architecture

Claude / AI Assistant
       ↓ MCP protocol
mcp-browser-server
       ↓ WebSocket / CDP
Browser (local Chromium or cloud)
       ↓
Target Website

Why Cloud Browsers?

Local browsers get blocked by CAPTCHAs and bot detection. Cloud browsers like AnchorBrowser provide:

  • ✅ Human fingerprinting (passes Cloudflare, DataDome)

  • ✅ Residential proxy rotation

  • ✅ CAPTCHA auto-solving

  • ✅ Persistent sessions across runs

  • ✅ No local Chrome installation needed

Development

npm install
npm run dev   # Starts MCP server with hot reload

# Run against a specific provider
BROWSER_PROVIDER=local npm run dev

Contributing

PRs welcome! Please open an issue first for significant changes.

License

MIT


Related: awesome-ai-browser-agents — curated list of browser automation tools for AI agents

Available Tools

8 tools
browser_clickB

Click on an element in the browser. Can target by CSS selector, text content, or ARIA label.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNoCSS selector for the element to click
textNoClick element containing this text (alternative to selector)

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 must fully disclose behavior. It only states 'click' without specifying whether it scrolls to the element, waits for visibility, or raises errors if the element is not found. Behavioral traits like event triggering or navigation consequences are omitted.

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 sentence that is front-loaded with the core action. No redundant words; every part contributes to understanding.

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 simple click action, the description is minimally adequate but lacks details on error handling, scrolling behavior, waiting, or return values. Given no output schema and no annotations, more context would be beneficial for reliable agent usage.

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 the baseline is 3. The description adds context by grouping targeting methods (CSS selector and text content) and introducing ARIA label, though that is not reflected in the schema. This provides some additional meaning beyond the schema descriptions.

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?

The description clearly identifies the action ('click') and the resource ('element in the browser'). It lists three targeting methods (CSS selector, text content, ARIA label), but the ARIA label method is not reflected in the input schema, which may cause slight confusion. Nonetheless, it effectively distinguishes from sibling tools like browser_type or browser_scroll.

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 is provided on when to use this tool versus alternatives, prerequisites, or conditions like element visibility. For example, it does not mention that the element must be present or that the tool does not implicitly scroll or wait.

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

browser_evaluateA

Execute JavaScript in the browser and return the result. Useful for complex extractions.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYesJavaScript code to execute. Use return to get a value.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It states the basic behavior (execute JavaScript and return result) but does not disclose potential side effects, security implications, or scope of execution (e.g., runs in page context). Adequate but not detailed.

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 sentences, 13 words total, with no fluff. Every sentence serves a purpose: stating the action and suggesting use case. Highly efficient and front-loaded.

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?

Given the tool has one parameter and no output schema, the description is somewhat complete but lacks details on execution context, limitations, or return format. It covers the essentials but could be more informative for an agent.

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 schema provides type and required status for 'script' (coverage 100%). The description adds value by noting 'Use return to get a value', which clarifies how to obtain results. This goes beyond the schema's basic description and reduces confusion.

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 clearly states the verb 'Execute JavaScript' and the resource 'in the browser', and adds context with 'useful for complex extractions'. It distinguishes itself from sibling tools like browser_click or browser_get_content by specifying JavaScript execution for complex tasks.

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 implies usage for complex extractions but does not explicitly state when to use this tool versus alternatives or when not to use it. It provides a hint but lacks explicit exclusions or comparisons with sibling tools.

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

browser_get_contentA

Get the text content or HTML of the current page or a specific element.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNoCSS selector to get content from (default: full page)
formatNoOutput format (default: text)text
maxLengthNoTruncate output to this many characters (default: 10000)

TDQS

A4/5.0
Behavior4/5

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

Without annotations, the description adequately discloses the main behavior: getting content from current page or element, with format and truncation options. However, it does not mention any potential side effects or prerequisites like page load completeness.

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 a single, focused sentence containing all essential information without any extraneous content. It is optimally concise.

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 simple content extraction tool with no output schema, the description covers the key aspects: what it extracts, how to specify an element, format options, and truncation. It could be enhanced by mentioning the return type (string) but is largely complete.

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 all three parameters with descriptions (selector, format, maxLength). The description adds minimal extra meaning beyond the schema, so a baseline score of 3 is appropriate.

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 clearly states the action ('Get') and the resource ('text content or HTML of the current page or a specific element'). It effectively distinguishes from sibling tools like browser_click or browser_navigate.

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 implies the tool should be used when content extraction is needed, but does not explicitly state when to use or not use it, nor does it mention alternatives like browser_evaluate.

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

browser_navigateA

Navigate the browser to a URL. Returns the page title and current URL after navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to (e.g. https://example.com)
waitUntilNoWhen to consider navigation complete (default: networkidle)networkidle

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. It states that navigation happens and returns title and URL, but does not disclose error states, behavior on invalid URLs, or if any resources are blocked. The waitUntil parameter is already in the schema.

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 sentences, no wasted words. Front-loaded with the core action and return information.

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, so description mentions return values. However, it lacks context on error handling, page load failures, or typical use cases. Adequate but not rich.

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 baseline is 3. The description adds no extra meaning beyond what the schema provides (e.g., url format example, waitUntil enum values).

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 clearly states the action ('Navigate the browser to a URL') and the return values ('page title and current URL'). It distinguishes the tool from siblings like browser_click, browser_evaluate, etc., which have different purposes.

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 tool versus alternatives, nor any prerequisites or exclusions. The description does not mention when not to navigate or how it relates to other browser tools.

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

browser_screenshotA

Take a screenshot of the current browser page. Returns a base64-encoded PNG image.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNoOptional CSS selector to screenshot a specific element
fullPageNoCapture the full scrollable page (default: false)

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description partially carries the burden. It correctly implies a read-only operation but does not explicitly state the lack of side effects, permissions needed, or behavior on failure. The return type is specified, but additional behavioral traits (e.g., non-destructive nature) are not disclosed.

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 efficiently conveys the core action and output format. No extraneous words or information, fitting the tool's simplicity.

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?

Given the tool's low complexity, no annotations, and no output schema, the description covers the essential aspects: what it does and what it returns. However, it omits potential details like error handling or browser requirements, but these are not critical for a straightforward screenshot tool.

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 input schema fully documents both parameters. The description adds no additional meaning beyond what the schema provides, meeting the baseline expectation.

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 clearly states the action ('Take a screenshot of the current browser page') and the return format ('base64-encoded PNG image'). It unambiguously identifies the tool's functionality and distinguishes it from sibling tools, none of which capture screenshots.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or comparative advantages over sibling tools like browser_get_content or browser_evaluate.

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

browser_scrollC

Scroll the page or an element.

ParametersJSON Schema
NameRequiredDescriptionDefault
directionNoScroll directiondown
amountNoPixels to scroll (for up/down)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations present, so description must carry the burden. It does not disclose defaults (down 400px from schema), nor does it explain behavior differences between direction values like 'top' vs 'down'. No mention of whether scrolling is smooth or instant.

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 a single sentence with no filler. It is front-loaded and efficiently communicates the core action.

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?

Given no output schema and no annotations, the description should cover how to scroll an element (since it mentions 'element' but provides no parameter to specify one). This omission leaves the tool underspecified for practical use.

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 provides full coverage for both parameters (direction enum, amount number with defaults). Description adds no extra semantic meaning beyond the schema, so baseline score of 3 is 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?

The description clearly states the action ('Scroll') and targets ('the page or an element'), distinguishing it from sibling tools like 'browser_click' or 'browser_navigate'. However, it is overly generic and doesn't specify that scrolling is typically for viewport navigation.

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 tool vs alternatives. No mention of prerequisites (e.g., page must be loaded) or exclusions (e.g., not for scrolling specific elements unless selected earlier).

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

browser_typeB

Type text into an input field or textarea.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector for the input element
textYesText to type into the field
clearNoClear the field before typing (default: false)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It lacks detail on event triggering, error handling, or prerequisite conditions like element visibility, which are important for browser automation.

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?

The description is one sentence and very concise. While efficient, it could include more behavioral detail without being verbose.

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?

Given the absence of annotations and the need for behavioral details in browser automation, the description is incomplete. It lacks mention of interactability requirements or event simulation.

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 covers 100% of parameters with descriptions. The description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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 clearly states it types text into input fields or textareas, with a specific verb and resource. It distinguishes from sibling tools like browser_click and browser_evaluate.

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?

No explicit guidance on when to use or alternatives. Usage is implied from the action, but no when-not or comparison to siblings like browser_evaluate for programmatic input.

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

browser_waitC

Wait for an element to appear on the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector to wait for
timeoutNoMax wait time in milliseconds (default: 30000)
stateNoElement state to wait for (default: visible)visible

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so description must cover behavior. It omits key details: blocks execution, throws timeout, no side effects described. Minimal transparency.

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

Conciseness2/5

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

The description is a single short sentence, but it is underspecified for the tool's complexity. Conciseness here sacrifices necessary detail.

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?

No output schema, 3 parameters with enums, and no annotations. The description fails to explain state meanings, return value, or timeout behavior. Incomplete.

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% with descriptions for all parameters. The description adds no extra meaning beyond 'element', which doesn't enhance the parameter details. Baseline 3.

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

Purpose3/5

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

The description states the tool waits for an element, but 'appear' is imprecise given the available states (visible, hidden, attached, detached). It is clear enough to indicate a waiting action but does not differentiate from siblings.

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 tool vs alternatives like browser_click or browser_get_content. No exclusions or prerequisites mentioned.

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. Dates show when Glama detected each change.

  1. 8 tool updatesv0.1.0
    • First observedbrowser_click
    • First observedbrowser_evaluate
    • First observedbrowser_get_content
    • First observedbrowser_navigate
    • First observedbrowser_screenshot
    • First observedbrowser_scroll
    • First observedbrowser_type
    • First observedbrowser_wait

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a distinct action (click, type, navigate, etc.) with clear descriptions, making them easily distinguishable for an agent.

Naming Consistency5/5

All tools follow a consistent `browser_verb` snake_case pattern, making naming predictable and easy to remember.

Tool Count5/5

8 tools cover core browser interactions without being excessive, well-scoped for the purpose of browser automation.

Completeness4/5

Covers essential operations like navigation, clicking, typing, scrolling, and content extraction. Missing features like browser back/forward or dialog handling, but covers the main workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/mehranakila56-ops/mcp-browser-server'

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