Browser Use
About
Provides an async browser automation server using OpenAI's GPT-4o model, enabling remote web navigation, content extraction, and task execution with configurable browser contexts.
Details
- Author
- co-browser
- Repository
- kontext-security/browser-use-mcp-server
- GitHub stars
- 319
- Downloads
- 3,631
- License
- MIT License
- Categories
- Web Scraping, Automation, Other, Productivity, Design, Developer Tools, AI, Infrastructure, Project Management
- Tags
- #web
Jump to
- [x] Browser Automation: Control browsers through AI agents
- [x] Dual Transport: Support for both SSE and stdio protocols
- [x] VNC Streaming: Watch browser automation in real-time
- [x] Async Tasks: Execute browser operations asynchronously
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Browser UseCommand (node, npx, python, etc.)browser-use-mcp-serverArguments-
Argument 1
run -
Argument 2
server -
Argument 3
--port -
Argument 4
8000 -
Argument 5
--stdio -
Argument 6
--proxy-port -
Argument 7
9000
Environment-
OPENAI_API_KEY
your-api-key
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install mcp-proxy
uv tool update-shell
Create a .env file:
bashOPENAI_API_KEY=your-api-key
CHROME_PATH=optional/path/to/chrome
PATIENT=false # Set to true if API calls should wait for task completion
uv sync
uv pip install playwright
uv run playwright install --with-deps --no-shell chromium
uv build
uv tool uninstall browser-use-mcp-server 2>/dev/null || true
uv tool install dist/browser_use_mcp_server-*.whl
{
"mcpServers": {
"browser-use-mcp-server": {
"url": "http://localhost:8000/sse"
}
}
}
{
"mcpServers": {
"browser-server": {
"command": "browser-use-mcp-server",
"args": [
"run",
"server",
"--port",
"8000",
"--stdio",
"--proxy-port",
"9000"
],
"env": {
"OPENAI_API_KEY": "your-api-key"
}
}
}
}
| Client | Configuration Path |
| ---------------- | ----------------------------------------------------------------- |
| Cursor | ./.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Claude (Mac) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
browser_navigate
Navigate to a URL
browser_go_back
Go back to the previous page
browser_go_forward
Go forward to the next page
browser_form_input_fill
Fill out an input field, before using the tool, Either 'index' or 'selector' must be provided
browser_get_markdown
Get the markdown content of the current page
browser_get_text
Get the text content of the current page
browser_read_links
Get all links on the current page
browser_new_tab
Open a new tab
browser_tab_list
Get the list of tabs
browser_switch_tab
Switch to a specific tab
browser_close_tab
Close the current tab
browser_evaluate
Execute JavaScript in the browser console
browser_get_download_list
Get the list of downloaded files
browser_screenshot
Take a screenshot of the current page or a specific element
browser_click
Click an element on the page, before using the tool, use `browser_get_clickable_elements` to get the index of the element, but not call `browser_get_clickable_elements` multiple times
browser_select
Select an element on the page with index, Either 'index' or 'selector' must be provided
browser_hover
Hover an element on the page, Either 'index' or 'selector' must be provided
browser_get_clickable_elements
Get the clickable or hoverable or selectable elements on the current page, don't call this tool multiple times
browser_scroll
Scroll the page
browser_close
Close the browser when the task is done and the browser is not needed anymore
browser_press_key
Press a key on the keyboard
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"browser use": {
"env": {
"OPENAI_API_KEY": "your-api-key"
},
"args": [
"run",
"server",
"--port",
"8000",
"--stdio",
"--proxy-port",
"9000"
],
"command": "browser-use-mcp-server"
}
}
}
Linux
{
"env": {
"OPENAI_API_KEY": "your-api-key"
},
"args": [
"run",
"server",
"--port",
"8000",
"--stdio",
"--proxy-port",
"9000"
],
"command": "browser-use-mcp-server"
}
Macos
{
"env": {
"OPENAI_API_KEY": "your-api-key"
},
"args": [
"run",
"server",
"--port",
"8000",
"--stdio",
"--proxy-port",
"9000"
],
"command": "browser-use-mcp-server"
}
Windows
{
"env": {
"OPENAI_API_KEY": "your-api-key"
},
"args": [
"/c",
"browser-use-mcp-server",
"run",
"server",
"--port",
"8000",
"--stdio",
"--proxy-port",
"9000"
],
"command": "cmd"
}
browser-use-mcp-server
<div align="center">
An MCP server that enables AI agents to control web browsers using
browser-use.
> 🌐 Want to Vibe Browse the Web? Open-source AI-powered web browser - Vibe Browser.
>
> 🔗 Managing multiple MCP servers? Simplify your development workflow with agent-browser
</div>
Prerequisites
- uv - Fast Python package manager
- Playwright - Browser automation
- mcp-proxy - Required for stdio mode
# Install prerequisites
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install mcp-proxy
uv tool update-shell
Environment
Create a .env file:
OPENAI_API_KEY=your-api-key
CHROME_PATH=optional/path/to/chrome
PATIENT=false # Set to true if API calls should wait for task completion
Installation
# Install dependencies
uv sync
uv pip install playwright
uv run playwright install --with-deps --no-shell chromium
Usage
SSE Mode
# Run directly from source
uv run server --port 8000
stdio Mode
# 1. Build and install globally
uv build
uv tool uninstall browser-use-mcp-server 2>/dev/null || true
uv tool install dist/browser_use_mcp_server-.whl
2. Run with stdio transport
browser-use-mcp-server run server --port 8000 --stdio --proxy-port 9000
Client Configuration
SSE Mode Client Configuration
{
"mcpServers": {
"browser-use-mcp-server": {
"url": "http://localhost:8000/sse"
}
}
}
stdio Mode Client Configuration
{
"mcpServers": {
"browser-server": {
"command": "browser-use-mcp-server",
"args": [
"run",
"server",
"--port",
"8000",
"--stdio",
"--proxy-port",
"9000"
],
"env": {
"OPENAI_API_KEY": "your-api-key"
}
}
}
}
Config Locations
| Client | Configuration Path |
| ---------------- | ----------------------------------------------------------------- |
| Cursor | ./.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Claude (Mac) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
Features
- [x] Browser Automation: Control browsers through AI agents
- [x] Dual Transport: Support for both SSE and stdio protocols
- [x] VNC Streaming: Watch browser automation in real-time
- [x] Async Tasks: Execute browser operations asynchronously
Local Development
To develop and test the package locally:
1. Build a distributable wheel:
# From the project root directory
uv build
2. Install it as a global tool:
uv tool uninstall browser-use-mcp-server 2>/dev/null || true
uv tool install dist/browser_use_mcp_server-.whl
3. Run from any directory:
# Set your OpenAI API key for the current session
export OPENAI_API_KEY=your-api-key-here
# Or provide it inline for a one-time run
OPENAI_API_KEY=your-api-key-here browser-use-mcp-server run server --port 8000 --stdio --proxy-port 9000
4. After making changes, rebuild and reinstall:
uv build
uv tool uninstall browser-use-mcp-server
uv tool install dist/browser_use_mcp_server-.whl
Docker
Using Docker provides a consistent and isolated environment for running the server.
# Build the Docker image
docker build -t browser-use-mcp-server .
Run the container with the default VNC password ("browser-use")
--rm ensures the container is automatically removed when it stops
-p 8000:8000 maps the server port
-p 5900:5900 maps the VNC port
docker run --rm -p8000:8000 -p5900:5900 browser-use-mcp-server
Run with a custom VNC password read from a file
Create a file (e.g., vnc_password.txt) containing only your desired password
echo "your-secure-password" > vnc_password.txt
Mount the password file as a secret inside the container
docker run --rm -p8000:8000 -p5900:5900 \
-v $(pwd)/vnc_password.txt:/run/secrets/vnc_password:ro \
browser-use-mcp-server
Note: The :ro flag in the volume mount (-v) makes the password file read-only inside the container for added security.*
VNC Viewer
# Browser-based viewer
git clone https://github.com/novnc/noVNC
cd noVNC
./utils/novnc_proxy --vnc localhost:5900
Default password: browser-use (unless overridden using the custom password method)
<div align="center">
<br><br>
</div>
Example
Try asking your AI:
open https://news.ycombinator.com and return the top ranked article
Support
For issues or inquiries: cobrowser.xyz
Star History
<div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date" />
</picture>
</div>
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


