Browser Use
About
An AI-driven browser automation server for natural language control and web research, with CLI access.
Details
- Author
- saik0s
- Categories
- Web Scraping
Jump to
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
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
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



