Browser Agent MCP
Automate browser interactions and call APIs through Claude Desktop using MCP.
Navigate to URLs with custom timeout and wait conditions.
Capture full-page or element screenshots with masking and save path options.
Interact with the DOM: click, fill forms, select dropdowns, and hover.
Execute arbitrary JavaScript in the browser context.
Change the browser viewport size and device scale factor.
Perform HTTP requests (GET, POST, PUT, PATCH, DELETE) with headers and JSON data.
Access browser console logs and screenshots as MCP resources.
Chain multiple operations using a persistent browser session.
Supports browser automation in Firefox, allowing for navigation, DOM manipulation, form filling, and JavaScript execution through Playwright.
Demonstrated capability to navigate to Google, perform searches, and interact with search results through browser automation.
Enables execution of arbitrary JavaScript code in browser context, with the ability to capture console logs and return results.
Provides automation capabilities for Safari's WebKit engine, enabling navigation, screenshots, DOM interactions, and JavaScript execution.
Demonstrated capability to navigate to Wikipedia, perform searches, and interact with content through browser automation.
Referenced in the demo section with timestamps linking to a YouTube demonstration video.
Click on "Deploy 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., "@Browser Agent MCP search for 'best AI tools 2024' on Google and take a screenshot of the results"
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 Agent
Features
Advanced Browser Automation
Navigate to any URL with customizable load strategies
Capture full-page or element-specific screenshots
Perform precise DOM interactions (click, fill, select, hover)
Execute arbitrary JavaScript in browser context with console logs capture
Powerful API Client
Execute HTTP requests (GET, POST, PUT, PATCH, DELETE)
Configure request headers and body content
Process response data with JSON formatting
Error handling with detailed feedback
MCP Resource Management
Access browser console logs as resources
Retrieve screenshots through MCP resource interface
Persistent session with headful browser instance
AI Agent Capabilities
Chain multiple browser operations for complex tasks
Follow multi-step instructions with intelligent error recovery
Technical task automation through natural language instructions
Related MCP server: Browserbeam MCP Server
Demo
Click on any timestamp to jump to that section of the video
00:00 - Google Search for MCP
Navigation to Google homepage and search for "Model Context Protocol". Demonstration of Claude Desktop using the MCP integration to perform a basic web search and process the results.
00:33 - Screenshot Capture
Taking a screenshot of the search results with a custom filename and showcasing it in Finder. Shows how Claude can capture and save visual content from web pages during browser automation.
01:00 - Wikipedia Search
Navigation to Wikipedia.org and search for "Model Context Protocol". Illustrates Claude's ability to interact with different websites and their search functionality through the MCP integration.
01:38 - Dropdown Menu Interaction I
Navigation to a test website (the-internet.herokuapp.com/dropdown) and selection of "Option 1" from a dropdown menu. Demonstrates Claude's capability to interact with form elements and make selections.
01:56 - Dropdown Menu Interaction II
Changing the selection to "Option 2" from the same dropdown menu. Shows Claude's ability to manipulate the same form element multiple times and make different selections.
02:09 - Login Form Completion
Navigation to a login page (the-internet.herokuapp.com/login) and filling in the username field with "tomsmith" and password field with "SuperSecretPassword!". Demonstrates form filling automation.
02:28 - Login Submission
Submitting the login credentials and completing the authentication process. Shows Claude's ability to trigger form submissions and navigate through multi-step processes.
02:36 - API Request Execution
Performing a GET request to JSONPlaceholder API endpoint. Demonstrates Claude's capability to make direct API calls and process the returned data through the MCP integration.
Requirements
Node.js 20 or higher
Claude Desktop
A browser: Google Chrome, or one of Playwright's builds (see below)
Browser Support
The package supports the following browsers:
Chrome (default)
Firefox
Microsoft Edge
WebKit (Safari engine)
Chrome (the default) uses your installed Google Chrome. If Chrome is not installed, the agent falls back to Playwright's own Chromium build and logs that it did.
Playwright's browsers are not downloaded on first use — install the ones you want once:
npx playwright install chromium # fallback when Google Chrome is absent
npx playwright install firefox
npx playwright install webkit
npx playwright install msedgeA clone followed by npm install downloads Chromium, Firefox and WebKit automatically through
the bundled @playwright/browser-* packages. Installing from Smithery or an MCPB bundle does
not, so run the command above for any browser other than Google Chrome.
macOS 13 (Ventura): Playwright is pinned to 1.61, the last release that ships browsers for macOS 13; Playwright 1.62 dropped it. Google Chrome keeps working on any version.
Note about Safari: Playwright doesn't provide direct support for Safari browser. Instead, it uses WebKit, which is the browser engine that powers Safari.
Note about Edge: Selecting
edgelaunches your installed Microsoft Edge (before 0.10.0 it silently opened plain Chromium). If Edge is not installed, the agent falls back to Playwright's Chromium. Technically, in Playwright, Edge is launched using the Chromium browser instance with the 'msedge' channel parameter because Microsoft Edge is based on Chromium.
Installation
Installing via Smithery
Install the packaged bundle from the Smithery server page, or from the CLI:
npx -y @smithery/cli@latest mcp add imprvhub/mcp-browser-agent --client claudeInstalling Manually
Clone or download this repository:
git clone https://github.com/imprvhub/mcp-browser-agent
cd mcp-browser-agentInstall dependencies:
npm installBuild the project:
npm run buildRunning the MCP Server
There are two ways to run the MCP server:
Option 1: Running manually
Open a terminal or command prompt
Navigate to the project directory
Run the server directly:
node dist/index.jsKeep this terminal window open while using Claude Desktop. The server will run until you close the terminal.
Option 2: Auto-starting with Claude Desktop (recommended for regular use)
The Claude Desktop can automatically start the MCP server when needed. To set this up:
Configuration
The Claude Desktop configuration file is located at:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Edit this file to add the Browser Agent MCP configuration. If the file doesn't exist, create it:
{
"mcpServers": {
"browserAgent": {
"command": "node",
"args": ["ABSOLUTE_PATH_TO_DIRECTORY/mcp-browser-agent/dist/index.js",
"--browser",
"chrome"
]
}
}
}Important: Replace ABSOLUTE_PATH_TO_DIRECTORY with the complete absolute path where you installed the MCP
macOS/Linux example:
/Users/username/mcp-browser-agentWindows example:
C:\\Users\\username\\mcp-browser-agent
If you already have other MCPs configured, simply add the "browserAgent" section inside the "mcpServers" object. Here's an example of a configuration with multiple MCPs:
{
"mcpServers": {
"otherMcp1": {
"command": "...",
"args": ["..."]
},
"otherMcp2": {
"command": "...",
"args": ["..."]
},
"browserAgent": {
"command": "node",
"args": [
"ABSOLUTE_PATH_TO_DIRECTORY/mcp-browser-agent/dist/index.js",
"--browser",
"chrome"
]
}
}
}Browser Selection
The MCP Browser Agent supports multiple browser types. By default, it uses Chrome, but you can specify a different browser in several ways:
Option 1: Configuration File
Create or edit the file .mcp_browser_agent_config.json in your home directory:
{
"browserType": "chrome"
}Supported values for browserType are:
chrome- Uses installed Chrome (default)firefox- Uses Firefox 'Nightly' browserwebkit- Uses WebKit engine (Note: This is not Safari itself but the WebKit rendering engine that powers Safari)edge- Uses Microsoft Edge
Note about Safari: Playwright doesn't provide direct support for Safari browser. Instead, it uses WebKit, which is the browser engine that powers Safari. The WebKit implementation in Playwright provides similar functionality but is not identical to the Safari browser experience.
Option 2: Command Line Argument
When starting the MCP server manually, you can specify the browser type:
node dist/index.js --browser firefoxOption 3: Environment Variable
Set the MCP_BROWSER_TYPE environment variable:
MCP_BROWSER_TYPE=firefox node dist/index.jsOther environment variables:
Variable | Default | Effect |
|
| Run without a visible window |
|
| Allow |
| unset | Launch a specific browser binary (a system Chromium, a custom Firefox build, ...). It must match the browser type, and it takes precedence over installed Chrome or Edge |
|
| Viewport size |
|
| Device pixel ratio |
Option 4: Claude Desktop Configuration
When configuring the MCP in Claude Desktop's claude_desktop_config.json, you can specify the browser type:
{
"mcpServers": {
"browserAgent": {
"command": "node",
"args": [
"ABSOLUTE_PATH_TO_DIRECTORY/mcp-browser-agent/dist/index.js",
"--browser",
"chrome"
]
}
}
}Technical Implementation
MCP Browser Agent is built on the Model Context Protocol, enabling Claude to interact with a headful browser through Playwright. The implementation consists of four main components:
Server (index.ts)
Initializes the MCP server with Model Context Protocol standard protocol
Configures server capabilities for tools and resources
Establishes communication with Claude through the stdio transport
Tools Registry (tools.ts)
Defines browser and API tool schemas
Specifies parameters, validation rules, and descriptions
Registers tools with the MCP server for Claude's discovery
Request Handlers (handlers.ts)
Manages MCP protocol requests for tools and resources
Exposes browser logs and screenshots as queryable resources
Routes tool execution requests to the appropriate handlers
Executor (executor.ts)
Manages browser and API client lifecycle
Implements browser automation functions using Playwright
Handles API requests with proper error handling and response parsing
Maintains stateful browser session between commands
Agent Capabilities
Unlike basic integrations, MCP Browser Agent functions as a true AI agent by:
Maintaining persistent browser state across multiple commands
Capturing detailed console logs for debugging
Storing screenshots for reference and review
Managing complex interaction sequences
Providing detailed error information for recovery
Supporting chained operations for complex workflows
Available Tools
Browser Tools
Tool Name | Description | Parameters |
| Navigate to a URL |
|
| Capture screenshot |
|
| Click element |
|
| Fill form input |
|
| Select dropdown option |
|
| Hover over element |
|
| Execute JavaScript |
|
API Tools
Tool Name | Description | Parameters |
| GET request |
|
| POST request |
|
| PUT request |
|
| PATCH request |
|
| DELETE request |
|
Resource Access
The MCP Browser Agent exposes the following resources:
browser://logs- Access browser console logsscreenshot://[name]- Access screenshots by name
Example Usage
Here are some realistic examples of how to use the MCP Browser Agent with Claude:
Basic Browser Navigation
Navigate to the Google homepage at https://www.google.comTake a screenshot of the current page and name it "google-homepage"Type "weather forecast" in the search boxSimple Interactions
Navigate to https://www.wikipedia.org and search for "Model Context Protocol"Go to https://the-internet.herokuapp.com/dropdown and select the option "Option 1" from the dropdownBasic Form Filling
Navigate to https://the-internet.herokuapp.com/login and fill in the username field with "tomsmith" and the password field with "SuperSecretPassword!"Go to https://the-internet.herokuapp.com/login, fill in the username and password fields, then click the login buttonSimple JavaScript Execution
Go to https://example.com and execute a JavaScript script to return the page titleNavigate to https://www.google.com and execute a JavaScript script to count the number of links on the pageBasic API Requests
Perform a GET request to https://jsonplaceholder.typicode.com/todos/1Make a POST request to https://jsonplaceholder.typicode.com/posts with appropriate JSON dataThese examples represent the actual capabilities of the MCP Browser Agent and are more realistic about what it can accomplish in its current state.
Troubleshooting
"Server disconnected" error
If you see the error "MCP Browser Agent: Server disconnected" in Claude Desktop:
Verify the server is running:
Open a terminal and manually run
node dist/index.jsfrom the project directoryIf the server starts successfully, use Claude while keeping this terminal open
Check your configuration:
Ensure the absolute path in
claude_desktop_config.jsonis correct for your systemDouble-check that you've used double backslashes (
\\) for Windows pathsVerify you're using the complete path from the root of your filesystem
Tools return nothing
Versions before 0.9.0 returned every result in a legacy toolResult field alongside an empty
content array. Current MCP clients read only content, so each tool appeared to succeed
with no output. Update to 0.9.0 or later.
Navigation fails with ERR_NAME_NOT_RESOLVED while API calls work
Playwright's browser is a separate executable from Node. A per-application firewall such as
Little Snitch can let Node through while blocking the newly downloaded browser. Allow the
browser binary under ~/Library/Caches/ms-playwright/ (macOS) in your firewall.
Browser not appearing
If the browser doesn't launch or you don't see it:
Check if the specified browser is installed
Verify that you have the browser (Chrome, Firefox, Edge, or Safari/WebKit) installed on your system
The browser drivers are handled automatically by Playwright
Restart the server and Claude Desktop
Kill any existing node processes that might be running the server
Restart Claude Desktop to establish a fresh connection
Browser process not closing properly
Since 0.10.0 the agent handles the two causes seen in practice:
The client quits (you close Claude Desktop): the server now notices its input closing, shuts the browser down and exits. Before, the open browser kept both processes running.
You quit the browser window yourself (Cmd+Q, or Quit from the dock): on macOS the window closes but Playwright keeps the process alive. The agent now closes the browser from its side when its page closes, and the next tool call starts a fresh one.
If a process still lingers after a crash or a forced kill:
Manually close the browser process:
Windows: Press Ctrl+Shift+Esc to open Task Manager, find the Chrome/Chromium process and end it
macOS: Open Activity Monitor (Applications > Utilities > Activity Monitor), find the Chrome/Chromium process and click the X to terminate it
Linux: Run
ps aux | grep chromeorps aux | grep chromiumto find the process, thenkill <PID>to terminate it
Note about browser compatibility:
This issue has been observed primarily with Chromium and Chrome
Firefox and Playwright's built-in browser don't typically experience this problem
This MCP integration is built on Playwright, which has known issues and bugs that may affect its operation. Please report any issues you encounter with the browser automation toPlaywright's GitHub issues. The Playwright team is continuously working to address these issues, but this agent provides a foundation for browser automation capabilities with Claude Desktop despite these limitations.
Development
Project Structure
src/index.ts: Main entry point and MCP server initializationsrc/tools.ts: Tool schemas and registrationsrc/handlers.ts: MCP request handlers for tools and resourcessrc/executor.ts: Tool implementation logic using Playwright
Building
npm run buildWatching for Changes
npm run watchTesting
npm run build
npm testThe tests start the built server and talk to it over stdio the way an MCP client does. They
check that tool output arrives where clients read it, that file: URLs are refused, and a
full headless browser session against a local fixture page (navigate, evaluate, fill,
screenshot). The browser test is skipped when no Playwright browser is installed.
Security Considerations
Pages the agent visits can contain text written to steer the model — prompt injection. The defaults below narrow what such a page can make the agent do:
file:URLs are refused unlessMCP_BROWSER_ALLOW_FILE_URLS=true. Otherwise a page could have the model open a local file (an SSH key, a credentials file) and pass it to anapi_postcall. The check runs before a browser is launched.Screenshot names are reduced to a plain file name. The name used to be joined into the save path unmodified, so
../in it wrote outside the chosen folder and created any directories along the way.Output is capped at 100,000 characters per response body or script result, so one large response cannot flood the conversation.
The api_* tools can reach any address the machine can, localhost included — intended for
testing local APIs, but worth knowing when the agent browses untrusted sites.
This MCP integration provides Claude with autonomous browser control capabilities. Please review ourSecurity Policy for important information about prohibited uses, security implications, and best practices.
The MCP Browser Agent is designed for legitimate automation tasks but could potentially be misused. Users are responsible for ensuring their use complies with all applicable laws, terms of service, and ethical guidelines. See our detailed Security Policy for more information.
Contributing
Contributions to the MCP Browser Agent are welcome! Here are some areas where you can help:
Adding new browser automation capabilities
Improving error handling and recovery
Enhancing screenshot and resource management
Creating useful workflows and examples
Optimizing performance for complex operations
License
This project is licensed under the Mozilla Public License 2.0 - see the LICENSE file for details.
Related Links
Available Tools
13 toolsapi_deleteB
Perform a DELETE request to an API endpoint
Inputs: url (required), headers.
api_getC
Perform a GET request to an API endpoint
Inputs: url (required), headers.
api_patchB
Perform a PATCH request to an API endpoint
Inputs: url (required), data (required), headers.
api_postB
Perform a POST request to an API endpoint
Inputs: url (required), data (required), headers.
api_putC
Perform a PUT request to an API endpoint
Inputs: url (required), data (required), headers.
browser_clickC
Click an element on the page
Inputs: selector (required).
browser_evaluateB
Execute JavaScript in the browser context
Inputs: script (required).
browser_fillB
Fill a form input with text
Inputs: value (required), selector (required).
browser_hoverC
Hover over an element on the page
Inputs: selector (required).
browser_screenshotB
Capture a screenshot of the current page or a specific element
Inputs: name (required), mask, fullPage, savePath, +1 more.
browser_selectC
Select an option from a dropdown menu
Inputs: value (required), selector (required).
browser_set_viewportA
Change the browser's viewport size and scale factor
Inputs: width, height, deviceScaleFactor.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool has a clearly distinct purpose: API tools are differentiated by HTTP method, and browser tools cover unique interactions like clicking, hovering, filling, etc. No two tools overlap in function.
All tools follow a consistent '<domain>_<action>' pattern, with 'api_' prefix for HTTP methods and 'browser_' prefix for browser actions. Naming is unambiguous and predictable.
13 tools is well-scoped for a browser automation and API testing server. Each tool covers a fundamental operation without unnecessary bloat or gaps.
Core browser interactions (navigation, clicking, form filling, selecting, screenshot) and all major HTTP methods are covered. Minor omissions like file upload or wait-for-element are acceptable for this scope.
Maintenance
Related MCP Connectors
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
Cloud browser, web extraction, screenshots, and remote CDP tools for AI agents.
Browz hosted MCP (free public beta): let an AI app drive your own Browz browser profiles from anywhere. Connect https://mcp.gobrowz.com/mcp and sign in with your Browz account (OAuth) or an agent token. Each call is relayed to the Browz app on your computer, which must be online with Remote control on and have a hardware security chip (Mac Secure Enclave or TPM 2.0). 17 tools: profiles, tabs, navigate, snapshot, act, wait, screenshot. Cookies, downloads and stored sign-ins stay on your computer.
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Related MCP Servers
- AlicenseBqualityDmaintenanceA browser automation agent that enables Claude to interact with web browsers through the Model Context Protocol, allowing for actions like navigating websites, manipulating elements, and managing browser state.29MIT
- AlicenseNot gradedqualityDmaintenanceEnables real browser automation as tools in Cursor, Claude Desktop, Windsurf, and any MCP-compatible client, allowing AI agents to interact with web pages through natural language.14 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables Claude Code to control a real browser using AI for web scraping, competitive intelligence, and UX auditing through the MCP protocol.-
- AlicenseNot gradedqualityDmaintenanceEnables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.1MIT