mcp-browser-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-browser-serverGo to example.com and take a screenshot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-browser-server
Give your AI assistant a real browser. Navigate, click, fill forms, and take screenshots via any MCP client.
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 |
| Go to a URL |
| Click an element by selector or description |
| Type text into an input field |
| Take a screenshot of the current page |
| Get page HTML or extracted text |
| Run JavaScript in the browser |
| Wait for an element or condition |
| Scroll the page |
Installation
npm install -g mcp-browser-serverOr clone and run locally:
git clone https://github.com/mehranakila56-ops/mcp-browser-server.git
cd mcp-browser-server
npm installConfiguration
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 |
|
|
|
|
| Run browser in headless mode (local only) |
| — | AnchorBrowser API key |
| — | Browserbase API key |
|
| Browser session timeout (5 min) |
|
| Screenshot format: |
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 WebsiteWhy 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 devContributing
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 toolsbrowser_clickB
Click on an element in the browser. Can target by CSS selector, text content, or ARIA label.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | CSS selector for the element to click | |
| text | No | Click element containing this text (alternative to selector) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to execute. Use return to get a value. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | CSS selector to get content from (default: full page) | |
| format | No | Output format (default: text) | text |
| maxLength | No | Truncate output to this many characters (default: 10000) |
TDQS
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.
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.
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.
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.
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.
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_screenshotA
Take a screenshot of the current browser page. Returns a base64-encoded PNG image.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | Optional CSS selector to screenshot a specific element | |
| fullPage | No | Capture the full scrollable page (default: false) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | Scroll direction | down |
| amount | No | Pixels to scroll (for up/down) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the input element | |
| text | Yes | Text to type into the field | |
| clear | No | Clear the field before typing (default: false) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector to wait for | |
| timeout | No | Max wait time in milliseconds (default: 30000) | |
| state | No | Element state to wait for (default: visible) | visible |
TDQS
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.
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.
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.
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.
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.
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.
8 tool updates
v0.1.0- First observed
browser_click - First observed
browser_evaluate - First observed
browser_get_content - First observed
browser_navigate - First observed
browser_screenshot - First observed
browser_scroll - First observed
browser_type - First observed
browser_wait
TDQS
Each tool has a distinct action (click, type, navigate, etc.) with clear descriptions, making them easily distinguishable for an agent.
All tools follow a consistent `browser_verb` snake_case pattern, making naming predictable and easy to remember.
8 tools cover core browser interactions without being excessive, well-scoped for the purpose of browser automation.
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
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Live browser debugging for AI assistants — DOM, console, network via MCP.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to control a web browser through natural language commands, allowing them to navigate websites and extract information via SSE transport.843MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP Server that enables AI assistants to interact with your local browsers.3,60754MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI coding tools to control a browser for automated actions, UI extraction, network interception, and screenshots.1-
- AlicenseAqualityBmaintenanceMCP server that gives AI coding assistants direct access to the browser — navigate, click, fill forms, run JavaScript, take screenshots, and read page content.11231MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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