Browser Use

by co-browser

319 stars
3.6k downloads
Not rated
GitHub Website

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

- [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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Browser Use
    Command (node, npx, python, etc.) browser-use-mcp-server
    Arguments
    • 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.

  4. 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:

bash
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

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"> [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/cobrowser.svg?style=social&label=Follow%20%40cobrowser)](https://x.com/cobrowser) [![Discord](https://img.shields.io/discord/1351569878116470928?logo=discord&logoColor=white&label=discord&color=white)](https://discord.gg/gw9UpFUhyY) [![PyPI version](https://badge.fury.io/py/browser-use-mcp-server.svg)](https://badge.fury.io/py/browser-use-mcp-server) **An MCP server that enables AI agents to control web browsers using [browser-use](https://github.com/browser-use/browser-use).** > **🌐 Want to Vibe Browse the Web?** Open-source AI-powered web browser - [**Vibe Browser**](https://github.com/co-browser/vibe). > > **🔗 Managing multiple MCP servers?** Simplify your development workflow with [agent-browser](https://github.com/co-browser/agent-browser) </div> ## Prerequisites - [uv](https://github.com/astral-sh/uv) - Fast Python package manager - [Playwright](https://playwright.dev/) - Browser automation - [mcp-proxy](https://github.com/sparfenyuk/mcp-proxy) - Required for stdio mode ```bash # 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: ```bash 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 ```bash # Install dependencies uv sync uv pip install playwright uv run playwright install --with-deps --no-shell chromium ``` ## Usage ### SSE Mode ```bash # Run directly from source uv run server --port 8000 ``` ### stdio Mode ```bash # 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 ```json { "mcpServers": { "browser-use-mcp-server": { "url": "http://localhost:8000/sse" } } } ``` ### stdio Mode Client Configuration ```json { "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: ```bash # From the project root directory uv build ``` 2. Install it as a global tool: ```bash 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: ```bash # 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: ```bash 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. ```bash # 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 ```bash # 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"> <img width="428" alt="VNC Screenshot" src="https://github.com/user-attachments/assets/45bc5bee-418d-4182-94f5-db84b4fc0b3a" /> <br><br> <img width="428" alt="VNC Screenshot" src="https://github.com/user-attachments/assets/7db53f41-fc00-4e48-8892-f7108096f9c4" /> </div> ## Example Try asking your AI: ```text open https://news.ycombinator.com and return the top ranked article ``` ## Support For issues or inquiries: [cobrowser.xyz](https://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" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date" /> </picture> </div>
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.