浏览器自动化服务

MCP服务器为AI助手提供浏览器自动化能力,包括页面导航、表单填写、数据提取等功能。

  • by Saik0s
  • Python
  • 本地部署
  • 972 星标
  • 更新于
在 GitHub 查看 Saik0s/mcp-browser-use

使用说明

mcp服务器浏览器使用

MCP服务器,赋予AI助手控制网络浏览器的能力。


目录


这是什么?

这个包裹 浏览器使用 作为MCP服务器,让Claude(或任何MCP客户端)自动化一个真正的浏览器——导航页面、填写表单、点击按钮、提取数据等等。

为什么选择HTTP而不是stdio?

浏览器自动化任务需要30-120+秒。标准MCP stdio传输在长时间运行的操作中存在超时问题——任务中途连接中断。 HTTP传输解决了这个问题 通过作为持久守护进程运行,无论持续时间长短,都能可靠地处理请求。


安装

Claude代码插件(推荐)

作为Claude Code插件安装以进行自动设置:

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

插件自动:

  • 首次运行时安装Playwright浏览器
  • Claude Code启动时启动HTTP守护进程
  • 向Claude注册MCP服务器

设置API密钥 (浏览器代理需要LLM来决定操作):

# 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

就是这样!Claude现在可以使用浏览器自动化工具。

手动安装

对于其他MCP客户端或独立使用:

# 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

添加到克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):

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

对于不支持HTTP传输的MCP客户端,请使用 mcp-remote 作为代理人:

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

Web用户界面

访问任务查看器http://localhost:8383当守护进程运行时。

特征:

  • 带有状态和进度的实时任务列表
  • 带有执行日志的任务详细信息
  • 服务器健康状态和正常运行时间
  • 运行任务监控

web UI提供了对浏览器自动化任务的可见性,而不需要CLI命令。


Web仪表板

访问功能齐全的仪表板http://localhost:8383/dashboard当守护进程运行时。

特征:

  • 任务选项卡: 完整的任务历史记录,包括过滤、实时状态更新和详细的执行日志
  • 技能选项卡: 使用统计数据浏览、检查和管理所学技能
  • 历史选项卡: 所有已完成任务的历史视图,按状态和时间过滤

关键能力:

  • 使用自定义参数直接从仪表板运行现有技能
  • 开始学习课程以掌握新技能
  • 删除过时或无效的技能
  • 使用实时进度更新监控正在运行的任务
  • 查看完整的任务结果和错误详细信息

仪表板提供了一个全面的web界面,用于管理浏览器自动化的各个方面,而无需CLI命令。


配置

设置存储在 ~/.config/mcp-server-browser-use/config.json.

查看当前配置:

mcp-server-browser-use config view

更改设置:

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

设置参考

密钥 默认值 描述
llm.provider google LLM提供商(anthropic、openai、谷歌、azure _openai、groq、deepseek、braneas、ollama、基岩、browser_use、openrouter、vercel)
llm.model_name gemini-3-flash-preview 浏览器代理的模型
llm.api_key - 提供程序的API密钥(首选env vars:GEMINI_API_key、ANTHROPIC_API_key等)
browser.headless true 运行不带GUI的浏览器
browser.cdp_url - 连接到现有的Chrome(例如。,http://localhost:9222)
browser.user_data_dir - 用于持久登录/Cookie的Chrome配置文件目录
browser.chromium_sandbox true 启用Chromium沙盒以确保安全
agent.max_steps 20 每个浏览器任务的最大步数
agent.use_vision true 为代理启用视觉功能
research.max_searches 5 每个研究任务的最大搜索次数
research.search_timeout - 单个搜索超时
server.host 127.0.0.1 服务器绑定地址
server.port 8383 服务器端口
server.results_dir - 保存结果的目录
server.auth_token - 非本地主机连接的身份验证令牌
skills.enabled false 启用技能系统(测试版-默认禁用)
skills.directory ~/.config/browser-skills 技能存储位置
skills.validate_results true 验证技能执行结果

配置优先级

Environment Variables > Config File > Defaults

环境变量使用前缀 MCP_ +部分+ _ +密钥(例如。, MCP_LLM_PROVIDER).

使用自己的浏览器

选项1:持久配置文件(推荐)

使用专用的Chrome配置文件来保存登录信息和Cookie:

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

选项2:连接到现有的Chrome

连接到现有的Chrome实例(可用于高级调试):

# 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

CLI参考

服务器管理

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"

提示: 技能也可以通过以下web仪表板进行管理:http://localhost:8383/dashboard用于一键执行和学习会话的可视化界面。


MCP工具

这些工具通过MCP向AI客户端公开:

工具 描述 典型持续时间
run_browser_agent 执行浏览器自动化任务 60-120s
run_deep_research 多搜索综合研究 2-5分钟
skill_list 列出所学技能 <1s
skill_get 获取技能定义 <1s
skill_delete 删除技能 <1s
health_check 服务器状态和正在运行的任务 <1s
task_list 查询任务历史 <1s
task_get 获取完整任务详细信息 <1s

run_browser_agent

主要工具。用简单的英语告诉它你想要什么:

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

代理启动浏览器,导航到apple.com,找到产品并返回价格。

参数:

参数 类型 说明
task string 做什么(必填)
max_steps int 覆盖默认最大步数
skill_name string 使用所学技能
skill_params JSON 技能参数
learn bool 启用学习模式
save_skill_as string 所学技能的名称

run_deep_research

具有自动合成功能的多步网络研究:

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

代理搜索多个来源,提取关键发现,并编写降价报告。


深入研究

深入研究执行一个3阶段的工作流程:

┌─────────────────────────────────────────────────────────┐
│  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                            │
└─────────────────────────────────────────────────────────┘

通过配置,可以自动保存报告 research.save_directory.


可观测性

所有工具的执行都在SQLite中进行跟踪,以便进行调试和监控。

任务生命周期

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

任务阶段

在执行过程中,任务会经历细粒度阶段:

INITIALIZING → PLANNING → NAVIGATING → EXTRACTING → SYNTHESIZING

查询任务

列出最近的任务:

mcp-server-browser-use tasks
┌──────────────┬───────────────────┬───────────┬──────────┬──────────┐
│ ID           │ Tool              │ Status    │ Progress │ Duration │
├──────────────┼───────────────────┼───────────┼──────────┼──────────┤
│ a1b2c3d4     │ run_browser_agent │ completed │ 15/15    │ 45s      │
│ e5f6g7h8     │ run_deep_research │ running   │ 3/7      │ 2m 15s   │
└──────────────┴───────────────────┴───────────┴──────────┴──────────┘

获取任务详细信息:

mcp-server-browser-use task a1b2c3d4

服务器运行状况:

mcp-server-browser-use health

显示正常运行时间、内存使用情况和当前运行的任务。

MCP可观察性工具

AI客户端可以直接查询任务状态:

  • health_check -服务器状态+正在运行的任务列表
  • task_list -最近使用可选状态筛选器的任务
  • task_get -特定任务的完整细节

存储

  • 数据库: ~/.config/mcp-server-browser-use/tasks.db
  • 保留: 7天后自动删除已完成的任务
  • 格式: SQLite采用WAL模式实现并发

技能系统(超级阿尔法)

警告: 该功能尚处于试验阶段,正在积极开发中。预计会有粗糙的边缘。

默认情况下,技能处于禁用状态。 先启用它们:

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

技能让你“教”代理人一次任务,然后重播 快50倍 通过重用发现的API端点而不是完全的浏览器自动化。

问题

浏览器自动化很慢(每个任务60-120秒)。但大多数网站的UI后面都有API。如果我们能发现这些API,我们可以直接调用它们。

解决方案

技能捕获在浏览器会话期间进行的API调用,并通过CDP(Chrome DevTools协议)直接回放这些调用。

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"

发生了什么:

  1. 记录: CDP在执行过程中捕获所有网络流量
  2. 分析: LLM识别“资金请求”-返回数据的API调用
  3. 提取: 保存URL模式、标头和响应解析规则
  4. 储存: 技能另存为YAML ~/.config/browser-skills/npm-search.yaml

使用技能

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

两种执行模式

每种技能都支持两种执行路径:

1.直接执行(快速路径)~2秒

如果技能获取了API端点(SkillRequest):

Initialize CDP session
    ↓
Navigate to domain (establish cookies)
    ↓
Execute fetch() via Runtime.evaluate
    ↓
Parse response with JSONPath
    ↓
Return data

2.基于提示的执行(回退)~60-120秒

如果直接执行失败或找不到API:

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

技能文件格式

技能以YAML格式存储在 ~/.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"

参数

技能支持参数化URL和请求体:

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

参数在执行时被替换为 skill_params.

身份恢复

如果API返回401/403,技能可以触发身份验证恢复:

auth_recovery:
  trigger_on_status: [401, 403]
  recovery_page: "https://example.com/login"
  max_retries: 2

系统将导航到恢复页面(允许您登录)并重试。

局限性

  • API发现: 只有当网站有API时才有效。在服务器端呈现所有内容的网站不会产生有用的技能。
  • 授权状态: 技能依赖于浏览器Cookie。如果您注销,它们可能会失败。
  • API变更: 如果一个网站改变了他们的API,技能就会中断。回到基于提示的执行。
  • 复杂流程: 多步骤工作流(登录→ 导航→ 搜索)可能无法清晰地捕获。

REST API参考

服务器公开REST端点以进行直接HTTP访问。除非另有说明,否则所有端点都返回JSON。

基本URL

http://localhost:8383

健康与状态

GET/api/健康

使用正在运行的任务信息进行服务器健康检查。

curl http://localhost:8383/api/health

答复:

{
  "status": "healthy",
  "uptime_seconds": 1234.5,
  "memory_mb": 256.7,
  "running_tasks": 2,
  "tasks": [...],
  "stats": {...}
}

任务

GET/api/任务

使用可选筛选列出最近的任务。

# 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}

获取特定任务的完整详细信息。

curl http://localhost:8383/api/tasks/abc123

GET/api/tasks/{task_id}/logs 上海证券交易所

通过服务器发送事件实时任务进度流。

const events = new EventSource('/api/tasks/abc123/logs');
events.onmessage = (e) => console.log(JSON.parse(e.data));

技能

GET/api/技能

列出所有可用技能。

curl http://localhost:8383/api/skills

答复:

{
  "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}

获取JSON格式的完整技能定义。

curl http://localhost:8383/api/skills/npm-search

删除/api/skills/{name}

删除技能。

curl -X DELETE http://localhost:8383/api/skills/npm-search

POST/api/技能/{name}/run

使用参数执行技能(启动后台任务)。

curl -X POST http://localhost:8383/api/skills/npm-search/run \
  -H "Content-Type: application/json" \
  -d '{"params": {"query": "react"}}'

答复:

{
  "task_id": "abc123...",
  "skill_name": "npm-search",
  "message": "Skill execution started",
  "status_url": "/api/tasks/abc123..."
}

POST/api/学习

开始学习课程以掌握新技能(开始背景任务)。

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"
  }'

答复:

{
  "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..."
}

实时更新

GET/api/events 上海证券交易所

所有任务更新的服务器发送事件流。

const events = new EventSource('/api/events');
events.onmessage = (e) => {
  const data = JSON.parse(e.data);
  console.log(`Task ${data.task_id}: ${data.status}`);
};

事件格式:

{
  "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..."
  }
}

建筑

高级概述

┌─────────────────────────────────────────────────────────────────────────┐
│                           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)  │
                              └─────────────────────────┘

模块结构

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

文件位置

什么 在哪里
配置 ~/.config/mcp-server-browser-use/config.json
任务数据库 ~/.config/mcp-server-browser-use/tasks.db
技能 ~/.config/browser-skills/*.yaml
服务器日志 ~/.local/state/mcp-server-browser-use/server.log
服务器PID ~/.local/state/mcp-server-browser-use/server.json

支持的LLM提供商

  • 开放人工智能
  • Anthropic
  • 谷歌双子座
  • Azure OpenAI
  • 格罗克
  • 深度求索
  • 大脑
  • Ollama(当地)
  • AWS基岩
  • 开放路由
  • Vercel AI

许可证

麻省理工学院