Browser Use

by saik0s

Not rated
GitHub

About

An AI-driven browser automation server for natural language control and web research, with CLI access.

Details

Author
saik0s
Categories
Web Scraping

Setup

Install Browser Use in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/saik0s/mcp-browser-use

Follow the installation instructions in the repository README, then restart your MCP client.

MCP server that gives AI assistants the power to control a web browser.

- What is this?
-
Installation
-
Web UI
-
Web Dashboard
-
Configuration
-
CLI Reference
-
MCP Tools
-
Deep Research
-
Observability
-
Skills System
-
REST API Reference
-
Architecture
-
License

This wrapsbrowser-useas an MCP server, letting Claude (or any MCP client) automate a real browser—navigate pages, fill forms, click buttons, extract data, and more.

Browser automation tasks take 30-120+ seconds. The standard MCP stdio transport has timeout issues with long-running operations—connections drop mid-task.HTTP transport solves thisby running as a persistent daemon that handles requests reliably regardless of duration.

Install as a Claude Code plugin for automatic setup:

# Install the plugin /plugin install browser-use/mcp-browser-use

- Installs Playwright browsers on first run
- Starts the HTTP daemon when Claude Code starts
- Registers the MCP server with Claude

Set your API key(the browser agent needs an LLM to decide actions):

# Set API key (environment variable - recommended) export GEMINI_API_KEY=your-key-here # Or use config file mcp-server-browser-use config set -k llm.api_key -v your-key-here

That's it! Claude can now use browser automation tools.

For other MCP clients or standalone use:

# Clone and install git clone https://github.com/Saik0s/mcp-browser-use.git cd mcp-server-browser-use uv sync # Install browser uv run playwright install chromium # Start the server uv run mcp-server-browser-use server

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

{ "mcpServers": { "browser-use": { "type": "streamable-http", "url": "http://localhost:8383/mcp" } } }

For MCP clients that don't support HTTP transport, usemcp-remoteas a proxy:

{ "mcpServers": { "browser-use": { "command": "npx", "args": ["mcp-remote", "http://localhost:8383/mcp"] } } }

Access the task viewer athttp://localhost:8383when the daemon is running.

- Real-time task list with status and progress
- Task details with execution logs
- Server health status and uptime
- Running tasks monitoring

The web UI provides visibility into browser automation tasks without requiring CLI commands.

Access the full-featured dashboard athttp://localhost:8383/dashboardwhen the daemon is running.

- Tasks Tab:Complete task history with filtering, real-time status updates, and detailed execution logs
- Skills Tab:Browse, inspect, and manage learned skills with usage statistics
- History Tab:Historical view of all completed tasks with filtering by status and time

- Run existing skills directly from the dashboard with custom parameters
- Start learning sessions to capture new skills
- Delete outdated or invalid skills
- Monitor running tasks with live progress updates
- View full task results and error details

The dashboard provides a comprehensive web interface for managing all aspects of browser automation without CLI commands.

Settings are stored in~/.config/mcp-server-browser-use/config.json.

mcp-server-browser-use config set -k llm.provider -v openai mcp-server-browser-use config set -k llm.model_name -v gpt-4o # Note: Set API keys via environment variables (e.g., ANTHROPIC_API_KEY) for better security # mcp-server-browser-use config set -k llm.api_key -v sk-... mcp-server-browser-use config set -k browser.headless -v false mcp-server-browser-use config set -k agent.max_steps -v 30
Environment Variables > Config File > Defaults

Environment variables use prefixMCP_+ section +_+ key (e.g.,MCP_LLM_PROVIDER).

Option 1: Persistent Profile (Recommended)

# Set user data directory mcp-server-browser-use config set -k browser.user_data_dir -v ~/.chrome-browser-use

Connect to an existing Chrome instance (useful for advanced debugging):

# Launch Chrome with debugging enabled google-chrome --remote-debugging-port=9222 # Configure CDP connection (localhost only for security) mcp-server-browser-use config set -k browser.cdp_url -v http://localhost:9222
mcp-server-browser-use server # Start as background daemon mcp-server-browser-use server -f # Start in foreground (for debugging) mcp-server-browser-use status # Check if running mcp-server-browser-use stop # Stop the daemon mcp-server-browser-use logs -f # Tail server logs
mcp-server-browser-use tools # List all available MCP tools mcp-server-browser-use call run_browser_agent task="Go to google.com" mcp-server-browser-use call run_deep_research topic="quantum computing"
mcp-server-browser-use config view # Show all settings mcp-server-browser-use config set -k <key> -v <value> mcp-server-browser-use config path # Show config file location
mcp-server-browser-use tasks # List recent tasks mcp-server-browser-use tasks --status running mcp-server-browser-use task <id> # Get task details mcp-server-browser-use task cancel <id> # Cancel a running task mcp-server-browser-use health # Server health + stats
mcp-server-browser-use call skill_list mcp-server-browser-use call skill_get name="my-skill" mcp-server-browser-use call skill_delete name="my-skill"

Tip:Skills can also be managed through the web dashboard athttp://localhost:8383/dashboardfor a visual interface with one-click execution and learning sessions.

These tools are exposed via MCP for AI clients:

The main tool. Tell it what you want in plain English:

mcp-server-browser-use call run_browser_agent \ task="Find the price of iPhone 16 Pro on Apple's website"

The agent launches a browser, navigates to apple.com, finds the product, and returns the price.

Multi-step web research with automatic synthesis:

mcp-server-browser-use call run_deep_research \ topic="Latest developments in quantum computing" \ max_searches=5

The agent searches multiple sources, extracts key findings, and compiles a markdown report.

Deep research executes a 3-phase workflow:

┌─────────────────────────────────────────────────────────┐ │ Phase 1: PLANNING │ │ LLM generates 3-5 focused search queries from topic │ └─────────────────────────────┬───────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────┐ │ Phase 2: SEARCHING │ │ For each query: │ │ • Browser agent executes search │ │ • Extracts URL + summary from results │ │ • Stores findings │ └─────────────────────────────┬───────────────────────────┘ ▼ ┌─────────────────────────────────────────────────────────┐ │ Phase 3: SYNTHESIS │ │ LLM creates markdown report: │ │ 1. Executive Summary │ │ 2. Key Findings (by theme) │ │ 3. Analysis and Insights │ │ 4. Gaps and Limitations │ │ 5. Conclusion with Sources │ └─────────────────────────────────────────────────────────┘

Reports can be auto-saved by configuringresearch.save_directory.

All tool executions are tracked in SQLite for debugging and monitoring.

PENDING ──► RUNNING ──► COMPLETED │ ├──► FAILED └──► CANCELLED

During execution, tasks progress through granular stages:

INITIALIZING → PLANNING → NAVIGATING → EXTRACTING → SYNTHESIZING
┌──────────────┬───────────────────┬───────────┬──────────┬──────────┐ │ ID │ Tool │ Status │ Progress │ Duration │ ├──────────────┼───────────────────┼───────────┼──────────┼──────────┤ │ a1b2c3d4 │ run_browser_agent │ completed │ 15/15 │ 45s │ │ e5f6g7h8 │ run_deep_research │ running │ 3/7 │ 2m 15s │ └──────────────┴───────────────────┴───────────┴──────────┴──────────┘

Shows uptime, memory usage, and currently running tasks.

AI clients can query task status directly:

- health_check- Server status + list of running tasks
- task_list- Recent tasks with optional status filter
- task_get- Full details of a specific task

- Database:~/.config/mcp-server-browser-use/tasks.db
- Retention:Completed tasks auto-deleted after 7 days
- Format:SQLite with WAL mode for concurrency

Warning:This feature is experimental and under active development. Expect rough edges.

Skills are disabled by default.Enable them first:

mcp-server-browser-use config set -k skills.enabled -v true

Skills let you "teach" the agent a task once, then replay it50x fasterby reusing discovered API endpoints instead of full browser automation.

Browser automation is slow (60-120 seconds per task). But most websites have APIs behind their UI. If we can discover those APIs, we can call them directly.

Skills capture the API calls made during a browser session and replay them directly via CDP (Chrome DevTools Protocol).

Without Skills: Browser navigation → 60-120 seconds With Skills: Direct API call → 1-3 seconds
mcp-server-browser-use call run_browser_agent \ task="Find React packages on npmjs.com" \ learn=true \ save_skill_as="npm-search"

- Recording:CDP captures all network traffic during execution
- Analysis:LLM identifies the "money request"—the API call that returns the data
- Extraction:URL patterns, headers, and response parsing rules are saved
- Storage:Skill saved as YAML to~/.config/browser-skills/npm-search.yaml

mcp-server-browser-use call run_browser_agent \ skill_name="npm-search" \ skill_params='{"query": "vue"}'

Every skill supports two execution paths:

1. Direct Execution (Fast Path) ~2 seconds

If the skill captured an API endpoint (SkillRequest):

2. Hint-Based Execution (Fallback) ~60-120 seconds

If direct execution fails or no API was found:

Inject navigation hints into task prompt ↓ Agent uses hints as guidance ↓ Agent discovers and calls API ↓ Return data

Skills are stored as YAML in~/.config/browser-skills/:

name: npm-search description: Search for packages on npmjs.com version: "1.0" # For direct execution (fast path) request: url: "https://www.npmjs.com/search?q={query}" method: GET headers: Accept: application/json response_type: json extract_path: "objects[*].package" # For hint-based execution (fallback) hints: navigation: - step: "Go to npmjs.com" url: "https://www.npmjs.com" money_request: url_pattern: "/search" method: GET # Auth recovery (if API returns 401/403) auth_recovery: trigger_on_status: [401, 403] recovery_page: "https://www.npmjs.com/login" # Usage stats success_count: 12 failure_count: 1 last_used: "2024-01-15T10:30:00Z"

Skills support parameterized URLs and request bodies:

request: url: "https://api.example.com/search?q={query}&limit={limit}" body_template: '{"filters": {"category": "{category}"}}'

Parameters are substituted at execution time fromskill_params.

If an API returns 401/403, skills can trigger auth recovery:

auth_recovery: trigger_on_status: [401, 403] recovery_page: "https://example.com/login" max_retries: 2
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.