浏览器自动化服务器

一个基于模型上下文协议(MCP)的AI驱动浏览器自动化服务器,支持自然语言控制浏览器和网页研究,适用于自动化测试、数据抓取和智能研究等场景。

  • by wenpingwu001
  • 本地部署
  • 更新于
在 GitHub 查看 wenpingwu001/mcp-browser-use

使用说明


浏览器使用MCP服务器

项目说明:此MCP服务器实现基于 浏览器使用/web用户界面 基础。核心浏览器自动化逻辑和配置模式改编自原始项目。

人工智能驱动的浏览器自动化服务器,实现了用于自然语言浏览器控制和web研究的模型上下文协议(MCP)。

特性

  • 🧠 MCP集成 -AI代理通信的完整协议实现。
  • 🌐 浏览器自动化 -页面导航、表单填写、自然语言元素交互(run_browser_agent 工具)。
  • 👁️ 视觉理解 -支持视觉的LLM的可选屏幕截图分析。
  • 🔄 状态持久性 -通过多个MCP调用管理浏览器会话或连接到用户浏览器的选项。
  • 🔌 多LLM支持 -与OpenAI、Anthropic、Azure、DeepSeek、谷歌、Mistral、Ollama、OpenRouter、阿里巴巴、Moonshot、Unbound AI集成。
  • 🔍 深度研究工具 -用于多步骤网络研究和报告生成的专用工具(run_deep_search 工具)。
  • ⚙️ 环境变量配置 -完全可通过环境变量进行配置。
  • 🔗 CDP连接 -能够通过Chrome DevTools协议连接和控制用户启动的Chrome/Chromium实例。

快速开始

先决条件

  • Python 3.11或更高版本
  • uv (快速Python包安装程序): pip install uv
  • 已安装Chrome/Chromium浏览器
  • 安装Playwright浏览器: uv sync 然后 uv run playwright install

与MCP客户端集成(例如,Claude Desktop)

您可以配置像Claude Desktop这样的客户端连接到此服务器。将以下结构添加到客户端的配置中(例如。, claude_desktop_config.json),根据需要调整路径和环境变量:

// Example for Claude Desktop config
"mcpServers": {
    "browser-use": {
      // Option 1: Run installed package
      // "command": "uvx",
      // "args": ["mcp-server-browser-use"],

      // Option 2: Run from local development source
      "command": "uvx",
      "args": [
        "mcp-server-browser-use"
      ],
      "env": {
        // --- CRITICAL: Add required API keys here ---
        "OPENAI_API_KEY": "YOUR_KEY_HERE_IF_USING_OPENAI",
        "ANTHROPIC_API_KEY": "YOUR_KEY_HERE_IF_USING_ANTHROPIC",
        // ... add other keys based on MCP_MODEL_PROVIDER ...

        // --- Optional Overrides (defaults are usually fine) ---
        "MCP_MODEL_PROVIDER": "anthropic", // Default provider
        "MCP_MODEL_NAME": "claude-3-7-sonnet-20250219", // Default model
        "BROWSER_HEADLESS": "true",    // Default: run browser without UI
        "BROWSER_USE_LOGGING_LEVEL": "INFO",

        // --- Example for connecting to your own browser ---
        // "MCP_USE_OWN_BROWSER": "true",
        // "CHROME_CDP": "http://localhost:9222",

        // Ensure Python uses UTF-8
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUNBUFFERED": "1",
        "PYTHONUTF8": "1"
      }
    }
}

重要提示: 确保 command 和 args 正确指向您希望如何运行服务器(安装的包或源目录)。在中设置必要的API密钥 env 部分。

MCP工具

此服务器通过模型上下文协议公开以下工具:

同步工具(等待完成)

  1. run_browser_agent

    • 说明: 根据自然语言指令执行浏览器自动化任务,并等待其完成。使用前缀为的设置 MCP_ (例如。, MCP_HEADLESS, MCP_MAX_STEPS).
    • 论据:
      • task (string,必填):主要任务或目标。
      • add_infos (string,可选):代理的其他上下文或提示(由使用 custom 代理类型)。
    • 退货: (string)代理提取的最终结果或错误消息。
  2. run_deep_search

    • 说明: 对某个主题进行深入的网络研究,生成报告,并等待完成。使用前缀为的设置 MCP_RESEARCH_ 和一般 BROWSER_ 设置(例如。, BROWSER_HEADLESS).
    • 论据:
      • research_task (string,必填):研究的主题或问题。
      • max_search_iterations (整数,可选,默认值:10):最大搜索周期。
      • max_query_per_iteration (整数,可选,默认值:3):每个周期的最大搜索查询数。
    • 退货: (string)生成的Markdown格式的研究报告,包括文件路径或错误消息。

配置(环境变量)

使用环境变量配置服务器。您可以在系统中设置这些,也可以将它们放置在 .env 项目根目录中的文件。

变量 描述 必填项? 默认值 示例值
LLM设置
MCP_MODEL_PROVIDER 要使用的LLM提供程序。请参阅下面的选项。 是 anthropic openai
MCP_MODEL_NAME 所选提供程序的特定型号名称。 没有 claude-3-7-sonnet-20250219 gpt-4o
MCP_TEMPERATURE LLM温度(0.0-2.0)。控制随机性。 没有 0.0 0.7
MCP_TOOL_CALLING_METHOD 工具调用方法(“auto”、“json-schema”、“function_calling”)。影响 run_browser_agent。 没有 auto json_schema
MCP_MAX_INPUT_TOKENS LLM上下文的最大输入令牌数 run_browser_agent。 没有 128000 64000
MCP_BASE_URL 可选:LLM提供程序的基本URL的通用覆盖。 否 特定于提供程序 http://localhost:8080/v1
MCP_API_KEY 可选:LLM提供程序的API密钥的通用重写(优先于特定于提供程序的密钥)。 否 - sk-...
提供程序API密钥 根据要求 MCP_MODEL_PROVIDER 除非 MCP_API_KEY 已设置。
OPENAI_API_KEY OpenAI的API密钥。 如果使用 - sk-...
ANTHROPIC_API_KEY API无烟煤密钥。 如果使用 - sk-ant-...
GOOGLE_API_KEY API谷歌人工智能密钥(Gemini)。 如果使用 - AIza...
AZURE_OPENAI_API_KEY Azure OpenAI的API密钥。 如果使用 - ...
DEEPSEEK_API_KEY DeepSeek的API密钥。 如果使用 - sk-...
MISTRAL_API_KEY Mistral AI的API密钥。 如果使用 - ...
OPENROUTER_API_KEY OpenRouter的API密钥。 如果使用 - sk-or-...
ALIBABA_API_KEY API阿里云密钥(DashScope)。 如果使用 - sk-...
MOONSHOT_API_KEY Moonshot AI的API密钥。 如果使用 - sk-...
UNBOUND_API_KEY 未绑定AI的API密钥。 如果使用 - ...
提供者端点 可选:覆盖默认API终结点。
OPENAI_ENDPOINT OpenAI API端点URL。 否 https://api.openai.com/v1
ANTHROPIC_ENDPOINT Anthropic API端点URL。 否 https://api.anthropic.com
AZURE_OPENAI_ENDPOINT 如果使用Azure,则需要。 您的Azure资源终结点。 如果使用 - https://res.openai.azure.com/
AZURE_OPENAI_API_VERSION Azure API版本。 没有 2025-01-01-preview 2023-12-01-preview
DEEPSEEK_ENDPOINT DeepSeek API端点URL。 否 https://api.deepseek.com
MISTRAL_ENDPOINT 错误的API端点URL。 否 https://api.mistral.ai/v1
OLLAMA_ENDPOINT Ollama API端点URL. 没有 http://localhost:11434 http://ollama.local:11434
OPENROUTER_ENDPOINT OpenRouter API端点URL。 否 https://openrouter.ai/api/v1
ALIBABA_ENDPOINT 阿里巴巴(DashScope)API端点URL。 否 https://dashscope...v1
MOONSHOT_ENDPOINT Moonshot API端点URL。 否 https://api.moonshot.cn/v1
UNBOUND_ENDPOINT 取消绑定AI API端点URL。 否 https://api.getunbound.ai
Olama专用
OLLAMA_NUM_CTX Ollama模型的上下文窗口大小。 没有 32000 8192
OLLAMA_NUM_PREDICT 用于预测Ollama模型的最大令牌。 没有 1024 2048
代理设置(run_browser_agent)
MCP_AGENT_TYPE 代理实现 run_browser_agent (“org”或“custom”)。 没有 org custom
MCP_MAX_STEPS 每次代理运行的最大步数。 没有 100 50
MCP_USE_VISION 启用视觉功能(屏幕截图分析)。 没有 true false
MCP_MAX_ACTIONS_PER_STEP 每个代理步骤的最大操作数。 没有 5 10
MCP_KEEP_BROWSER_OPEN 保持服务器管理的浏览器在以下时间之间打开 run_browser_agent 呼叫(如果 MCP_USE_OWN_BROWSER=false). 没有 false true
MCP_ENABLE_RECORDING 启用Playwright视频录制 run_browser_agent。 没有 false true
MCP_SAVE_RECORDING_PATH 保存代理运行视频录制的路径(如果是必需的 MCP_ENABLE_RECORDING=true). 如果正在录制 - ./tmp/recordings
MCP_AGENT_HISTORY_PATH 用于保存代理历史JSON文件的目录。 没有 ./tmp/agent_history ./agent_runs
MCP_HEADLESS 运行浏览器,无需专门的用户界面 run_browser_agent 工具。 没有 true false
MCP_DISABLE_SECURITY 禁用专门针对以下对象的浏览器安全功能 run_browser_agent 工具(小心使用)。 没有 true false
深度研究设置(run_deep_search)
MCP_RESEARCH_MAX_ITERATIONS 深度研究的最大搜索迭代次数。 没有 10 5
MCP_RESEARCH_MAX_QUERY 每次迭代的最大搜索查询数。 没有 3 5
MCP_RESEARCH_USE_OWN_BROWSER 使用单独的浏览器实例进行研究(需要 CHROME_CDP 如果 MCP_USE_OWN_BROWSER=true). 没有 false true
MCP_RESEARCH_SAVE_DIR 保存研究成果(报告、结果)的目录。 没有 ./tmp/deep_research/{task_id} ./research_output
MCP_RESEARCH_AGENT_MAX_STEPS 深度研究中子代理的最大步骤。 没有 10 15
浏览器设置(常规和特定工具替代)
MCP_USE_OWN_BROWSER 设置为true以通过连接到用户的浏览器 CHROME_CDP 而不是推出一个新的。 没有 false true
CHROME_CDP 通过DevTools协议URL连接到现有Chrome。如果是必需的 MCP_USE_OWN_BROWSER=true 如果 MCP_USE_OWN_BROWSER=true - http://localhost:9222
BROWSER_HEADLESS 在没有可见UI的情况下运行浏览器。主要影响 run_deep_search.另见 MCP_HEADLESS。 没有 true false
BROWSER_DISABLE_SECURITY 常规浏览器安全设置。另见 MCP_DISABLE_SECURITY。 没有 false true
CHROME_PATH Chrome/Chromium可执行文件的路径。 否 - /usr/bin/chromium-browser
CHROME_USER_DATA Chrome用户数据目录的路径(适用于持久会话,与 CHROME_CDP). 否 - ~/.config/google-chrome/Profile 1
BROWSER_TRACE_PATH 保存Playwright跟踪文件的目录(对调试很有用)。 没有 ./tmp/trace ./traces
BROWSER_WINDOW_WIDTH 浏览器窗口宽度(像素)。 没有 1280 1920
BROWSER_WINDOW_HEIGHT 浏览器窗口高度(像素)。 没有 720 1080
服务器和日志记录
LOG_FILE 服务器日志文件的路径。 没有 mcp_server_browser_use.log /var/log/mcp_browser.log
BROWSER_USE_LOGGING_LEVEL 日志记录级别(DEBUG, INFO, WARNING, ERROR, CRITICAL). 没有 INFO DEBUG
ANONYMIZED_TELEMETRY 启用/禁用匿名遥测(true/false). 没有 true false

支持的LLM提供商(MCP_MODEL_PROVIDER):

openai, azure_openai, anthropic, google, mistral, ollama, deepseek, openrouter, alibaba, moonshot, unbound

连接到自己的浏览器(CDP)

您可以将服务器连接到您自己启动和管理的Chrome/Chromium浏览器,而不是让服务器启动和管理自己的浏览器实例。这有助于:

  • 使用您现有的浏览器配置文件(Cookie、登录名、扩展名)。
  • 直接在您自己的浏览器窗口中观察自动化。
  • 调试复杂场景。

步骤:

  1. 启动启用远程调试的Chrome/Chromium: 打开终端或命令提示符,运行适合您操作系统的命令。此操作会通知Chrome侦听特定端口(例如9222)上的连接。

    • macOS:

      /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
      

      (如果Chrome安装在其他地方,请调整路径)

    • Linux:

      google-chrome --remote-debugging-port=9222
      # or
      chromium-browser --remote-debugging-port=9222
      
    • Windows(命令提示符):

      "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
      

      (必要时调整Chrome安装路径)

    • Windows(PowerShell):

      & "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
      

      (必要时调整Chrome安装路径)

    注: 如果端口9222已在使用中,请选择其他端口(例如9223)并在 CHROME_CDP 环境变量。

  2. 配置环境变量: 在您的 .env 启动MCP服务器之前的文件或系统环境:

    MCP_USE_OWN_BROWSER=true
    CHROME_CDP=http://localhost:9222 # Use the same port you launched Chrome with
    
    • MCP_USE_OWN_BROWSER=true:告诉服务器连接到现有浏览器,而不是启动浏览器。
    • CHROME_CDP:指定服务器可以连接到浏览器的DevTools协议端点的URL。
  3. 运行MCP服务器: 像往常一样启动服务器:

    uv run mcp-server-browser-use
    

现在,当你使用 run_browser_agent 或 run_deep_search 工具,服务器将连接到您正在运行的Chrome实例,而不是创建一个新的实例。

重要注意事项:

  • 浏览器启动时 --remote-debugging-port MCP服务器运行时必须保持打开状态,并需要与之交互。
  • 确保 CHROME_CDP 可以从运行MCP服务器的位置访问URL(通常 http://localhost:PORT 如果在同一台机器上运行)。
  • 使用自己的浏览器意味着服务器会继承其状态(打开的选项卡、登录的会话)。在自动化过程中要注意这一点。
  • 设置如 MCP_HEADLESS, BROWSER_HEADLESS, MCP_KEEP_BROWSER_OPEN 在以下情况下被忽略 MCP_USE_OWN_BROWSER=true。窗口大小由浏览器窗口决定。

发展

# Install dev dependencies and sync project deps
uv sync --dev

# Install playwright browsers
uv run playwright install

# Run with debugger (Example connecting to own browser via CDP)
# 1. Launch Chrome: google-chrome --remote-debugging-port=9222
# 2. Run inspector command:
npx @modelcontextprotocol/inspector@latest \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  -e MCP_MODEL_PROVIDER=anthropic \
  -e MCP_MODEL_NAME=claude-3-7-sonnet-20250219 \
  -e MCP_USE_OWN_BROWSER=true \
  -e CHROME_CDP=http://localhost:9222 \
  uv --directory . run mcp run src/mcp_server_browser_use/server.py
# Note: Change timeout in inspector's config panel if needed (default is 10 seconds)

故障排除

  • 浏览器冲突:如果 不 使用 CHROME_CDP (MCP_USE_OWN_BROWSER=false),如果出现以下情况,请确保没有其他冲突的Chrome实例使用相同的用户数据目录运行 CHROME_USER_DATA 已指定。
  • CDP连接问题:如果使用 MCP_USE_OWN_BROWSER=true:
    • 验证Chrome是否随 --remote-debugging-port 旗帜。
    • 确保端口处于 CHROME_CDP 与启动Chrome时使用的端口匹配。
    • 检查防火墙是否阻止了与指定端口的连接。
    • 确保浏览器仍在运行。
  • API错误:双击检查正确的API密钥环境变量(OPENAI_API_KEY, ANTHROPIC_API_KEY等)为您选择的设置 MCP_MODEL_PROVIDER,或 MCP_API_KEY 已设置。验证密钥和端点(AZURE_OPENAI_ENDPOINT Azure需要)。
  • 愿景问题:确保 MCP_USE_VISION=true 如果使用视觉特征,并且您选择的LLM模型支持视觉。
  • 依赖性问题:运行 uv sync 以确保所有依赖项都已正确安装。检查 pyproject.toml.
  • 日志记录:检查由指定的日志文件 LOG_FILE (默认值: mcp_server_browser_use.log)查看详细的错误消息。增加 BROWSER_USE_LOGGING_LEVEL 到 DEBUG 以获得更详细的输出。

许可证

麻省理工学院-参见 许可证 了解详情。