Labsco
Saik0s logo

Browser Use

β˜… 948

from Saik0s

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

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup

mcp-server-browser-use

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

Table of Contents

  • What is this?

  • Installation

  • Web UI

  • Web Dashboard

  • Configuration

  • CLI Reference

  • MCP Tools

  • Deep Research

  • Observability

  • Skills System

  • REST API Reference

  • Architecture

  • License

What is this?

This wraps browser-use as an MCP server, letting Claude (or any MCP client) automate a real browserβ€”navigate pages, fill forms, click buttons, extract data, and more.

Why HTTP instead of stdio?

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 this by running as a persistent daemon that handles requests reliably regardless of duration.

Web UI

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

Features:

  • 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.

Web Dashboard

Access the full-featured dashboard at http://localhost:8383/dashboard when the daemon is running.

Features:

  • 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

Key Capabilities:

  • 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.

CLI Reference

Server Management

Copy & paste β€” that's it
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

Calling Tools

Copy & paste β€” that's it
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"

Configuration

Copy & paste β€” that's it
mcp-server-browser-use config view # Show all settings
mcp-server-browser-use config set -k -v 
mcp-server-browser-use config path # Show config file location

Observability

Copy & paste β€” that's it
mcp-server-browser-use tasks # List recent tasks
mcp-server-browser-use tasks --status running
mcp-server-browser-use task # Get task details
mcp-server-browser-use task cancel # Cancel a running task
mcp-server-browser-use health # Server health + stats

Skills Management

Copy & paste β€” that's it
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 at http://localhost:8383/dashboard for a visual interface with one-click execution and learning sessions.

MCP Tools

These tools are exposed via MCP for AI clients:

Tool Description Typical Duration run_browser_agent Execute browser automation tasks 60-120s run_deep_research Multi-search research with synthesis 2-5 min skill_list List learned skills <1s skill_get Get skill definition <1s skill_delete Delete a skill <1s health_check Server status and running tasks <1s task_list Query task history <1s task_get Get full task details <1s

run_browser_agent

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

Copy & paste β€” that's it
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.

Parameters:

Parameter Type Description task string What to do (required) max_steps int Override default max steps skill_name string Use a learned skill skill_params JSON Parameters for the skill learn bool Enable learning mode save_skill_as string Name for the learned skill

run_deep_research

Multi-step web research with automatic synthesis:

Copy & paste β€” that's it
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

Deep research executes a 3-phase workflow:

Copy & paste β€” that's it
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 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 configuring research.save_directory.

Observability

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

Task Lifecycle

Copy & paste β€” that's it
PENDING ──► RUNNING ──► COMPLETED
 β”‚
 β”œβ”€β”€β–Ί FAILED
 └──► CANCELLED

Task Stages

During execution, tasks progress through granular stages:

Copy & paste β€” that's it
INITIALIZING β†’ PLANNING β†’ NAVIGATING β†’ EXTRACTING β†’ SYNTHESIZING

Querying Tasks

List recent tasks:

Copy & paste β€” that's it
mcp-server-browser-use tasks
Copy & paste β€” that's it
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ID β”‚ Tool β”‚ Status β”‚ Progress β”‚ Duration β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ a1b2c3d4 β”‚ run_browser_agent β”‚ completed β”‚ 15/15 β”‚ 45s β”‚
β”‚ e5f6g7h8 β”‚ run_deep_research β”‚ running β”‚ 3/7 β”‚ 2m 15s β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Get task details:

Copy & paste β€” that's it
mcp-server-browser-use task a1b2c3d4

Server health:

Copy & paste β€” that's it
mcp-server-browser-use health

Shows uptime, memory usage, and currently running tasks.

MCP Tools for Observability

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

Storage

  • Database: ~/.config/mcp-server-browser-use/tasks.db

  • Retention: Completed tasks auto-deleted after 7 days

  • Format: SQLite with WAL mode for concurrency

Skills System (Super Alpha)

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

Skills are disabled by default. Enable them first:

Copy & paste β€” that's it
mcp-server-browser-use config set -k skills.enabled -v true

Skills let you "teach" the agent a task once, then replay it 50x faster by reusing discovered API endpoints instead of full browser automation.

The Problem

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.

The Solution

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

Copy & paste β€” that's it
Without Skills: Browser navigation β†’ 60-120 seconds
With Skills: Direct API call β†’ 1-3 seconds

Learning a Skill

Copy & paste β€” that's it
mcp-server-browser-use call run_browser_agent \
 task="Find React packages on npmjs.com" \
 learn=true \
 save_skill_as="npm-search"

What happens:

  • 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

Using a Skill

Copy & paste β€” that's it
mcp-server-browser-use call run_browser_agent \
 skill_name="npm-search" \
 skill_params='{"query": "vue"}'

Two Execution Modes

Every skill supports two execution paths:

1. Direct Execution (Fast Path) ~2 seconds

If the skill captured an API endpoint (SkillRequest):

Copy & paste β€” that's it
Initialize CDP session
 ↓
Navigate to domain (establish cookies)
 ↓
Execute fetch() via Runtime.evaluate
 ↓
Parse response with JSONPath
 ↓
Return data

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

If direct execution fails or no API was found:

Copy & paste β€” that's it
Inject navigation hints into task prompt
 ↓
Agent uses hints as guidance
 ↓
Agent discovers and calls API
 ↓
Return data

Skill File Format

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

Copy & paste β€” that's it
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"

Parameters

Skills support parameterized URLs and request bodies:

Copy & paste β€” that's it
request:
 url: "https://api.example.com/search?q={query}&limit={limit}"
 body_template: '{"filters": {"category": "{category}"}}'

Parameters are substituted at execution time from skill_params.

Auth Recovery

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

Copy & paste β€” that's it
auth_recovery:
 trigger_on_status: [401, 403]
 recovery_page: "https://example.com/login"
 max_retries: 2

The system will navigate to the recovery page (letting you log in) and retry.

Limitations

  • API Discovery: Only works if the site has an API. Sites that render everything server-side won't yield useful skills.

  • Auth State: Skills rely on browser cookies. If you're logged out, they may fail.

  • API Changes: If a site changes their API, the skill breaks. Falls back to hint-based execution.

  • Complex Flows: Multi-step workflows (login β†’ navigate β†’ search) may not capture cleanly.

REST API Reference

The server exposes REST endpoints for direct HTTP access. All endpoints return JSON unless otherwise specified.

Base URL

Copy & paste β€” that's it
http://localhost:8383

Health & Status

GET /api/health

Server health check with running task information.

Copy & paste β€” that's it
curl http://localhost:8383/api/health

Response:

Copy & paste β€” that's it
{
 "status": "healthy",
 "uptime_seconds": 1234.5,
 "memory_mb": 256.7,
 "running_tasks": 2,
 "tasks": [...],
 "stats": {...}
}

Tasks

GET /api/tasks

List recent tasks with optional filtering.

Copy & paste β€” that's it
# List all tasks
curl http://localhost:8383/api/tasks

# Filter by status
curl http://localhost:8383/api/tasks?status=running

# Limit results
curl http://localhost:8383/api/tasks?limit=50

GET /api/tasks/{task_id}

Get full details of a specific task.

Copy & paste β€” that's it
curl http://localhost:8383/api/tasks/abc123

GET /api/tasks/{task_id}/logs (SSE)

Real-time task progress stream via Server-Sent Events.

Copy & paste β€” that's it
const events = new EventSource('/api/tasks/abc123/logs');
events.onmessage = (e) => console.log(JSON.parse(e.data));

Skills

GET /api/skills

List all available skills.

Copy & paste β€” that's it
curl http://localhost:8383/api/skills

Response:

Copy & paste β€” that's it
{
 "skills": [
 {
 "name": "npm-search",
 "description": "Search for packages on npmjs.com",
 "success_rate": 92.5,
 "usage_count": 15,
 "last_used": "2024-01-15T10:30:00Z"
 }
 ],
 "count": 1,
 "skills_directory": "/Users/you/.config/browser-skills"
}

GET /api/skills/{name}

Get full skill definition as JSON.

Copy & paste β€” that's it
curl http://localhost:8383/api/skills/npm-search

DELETE /api/skills/{name}

Delete a skill.

Copy & paste β€” that's it
curl -X DELETE http://localhost:8383/api/skills/npm-search

POST /api/skills/{name}/run

Execute a skill with parameters (starts background task).

Copy & paste β€” that's it
curl -X POST http://localhost:8383/api/skills/npm-search/run \
 -H "Content-Type: application/json" \
 -d '{"params": {"query": "react"}}'

Response:

Copy & paste β€” that's it
{
 "task_id": "abc123...",
 "skill_name": "npm-search",
 "message": "Skill execution started",
 "status_url": "/api/tasks/abc123..."
}

POST /api/learn

Start a learning session to capture a new skill (starts background task).

Copy & paste β€” that's it
curl -X POST http://localhost:8383/api/learn \
 -H "Content-Type: application/json" \
 -d '{
 "task": "Search for TypeScript packages on npmjs.com",
 "skill_name": "npm-search"
 }'

Response:

Copy & paste β€” that's it
{
 "task_id": "def456...",
 "learning_task": "Search for TypeScript packages on npmjs.com",
 "skill_name": "npm-search",
 "message": "Learning session started",
 "status_url": "/api/tasks/def456..."
}

Real-Time Updates

GET /api/events (SSE)

Server-Sent Events stream for all task updates.

Copy & paste β€” that's it
const events = new EventSource('/api/events');
events.onmessage = (e) => {
 const data = JSON.parse(e.data);
 console.log(`Task ${data.task_id}: ${data.status}`);
};

Event format:

Copy & paste β€” that's it
{
 "task_id": "abc123",
 "full_task_id": "abc123-full-uuid...",
 "tool": "run_browser_agent",
 "status": "running",
 "stage": "navigating",
 "progress": {
 "current": 5,
 "total": 15,
 "percent": 33.3,
 "message": "Loading page..."
 }
}

Architecture

High-Level Overview

Copy & paste β€” that's it
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ MCP CLIENTS β”‚
β”‚ (Claude Desktop, mcp-remote, CLI call) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ HTTP POST /mcp
 β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ FastMCP SERVER β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ MCP TOOLS β”‚ β”‚
β”‚ β”‚ β€’ run_browser_agent β€’ skill_list/get/delete β”‚ β”‚
β”‚ β”‚ β€’ run_deep_research β€’ health_check/task_list/task_get β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ β”‚ β”‚ β”‚
 β–Ό β–Ό β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ CONFIG β”‚ β”‚ PROVIDERS β”‚ β”‚ SKILLS β”‚ β”‚ OBSERVABILITY β”‚
β”‚ Pydantic β”‚ β”‚ 12 LLMs β”‚ β”‚ Learn+Run β”‚ β”‚ Task Tracking β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
 β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ browser-use β”‚
 β”‚ (Agent + Playwright) β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Module Structure

Copy & paste β€” that's it
src/mcp_server_browser_use/
β”œβ”€β”€ server.py # FastMCP server + MCP tools
β”œβ”€β”€ cli.py # Typer CLI for daemon management
β”œβ”€β”€ config.py # Pydantic settings
β”œβ”€β”€ providers.py # LLM factory (12 providers)
β”‚
β”œβ”€β”€ observability/ # Task tracking
β”‚ β”œβ”€β”€ models.py # TaskRecord, TaskStatus, TaskStage
β”‚ β”œβ”€β”€ store.py # SQLite persistence
β”‚ └── logging.py # Structured logging
β”‚
β”œβ”€β”€ skills/ # Machine-learned browser skills
β”‚ β”œβ”€β”€ models.py # Skill, SkillRequest, AuthRecovery
β”‚ β”œβ”€β”€ store.py # YAML persistence
β”‚ β”œβ”€β”€ recorder.py # CDP network capture
β”‚ β”œβ”€β”€ analyzer.py # LLM skill extraction
β”‚ β”œβ”€β”€ runner.py # Direct fetch() execution
β”‚ └── executor.py # Hint injection
β”‚
└── research/ # Deep research workflow
 β”œβ”€β”€ models.py # SearchResult, ResearchSource
 └── machine.py # Plan β†’ Search β†’ Synthesize

File Locations

What Where Config ~/.config/mcp-server-browser-use/config.json Tasks DB ~/.config/mcp-server-browser-use/tasks.db Skills ~/.config/browser-skills/*.yaml Server Log ~/.local/state/mcp-server-browser-use/server.log Server PID ~/.local/state/mcp-server-browser-use/server.json

Supported LLM Providers

  • OpenAI

  • Anthropic

  • Google Gemini

  • Azure OpenAI

  • Groq

  • DeepSeek

  • Cerebras

  • Ollama (local)

  • AWS Bedrock

  • OpenRouter

  • Vercel AI

License

MIT