使用说明
浏览器使用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工具
此服务器通过模型上下文协议公开以下工具:
同步工具(等待完成)
-
run_browser_agent- 说明: 根据自然语言指令执行浏览器自动化任务,并等待其完成。使用前缀为的设置
MCP_(例如。,MCP_HEADLESS,MCP_MAX_STEPS). - 论据:
task(string,必填):主要任务或目标。add_infos(string,可选):代理的其他上下文或提示(由使用custom代理类型)。
- 退货: (string)代理提取的最终结果或错误消息。
- 说明: 根据自然语言指令执行浏览器自动化任务,并等待其完成。使用前缀为的设置
-
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、登录名、扩展名)。
- 直接在您自己的浏览器窗口中观察自动化。
- 调试复杂场景。
步骤:
-
启动启用远程调试的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环境变量。 -
-
配置环境变量: 在您的
.env启动MCP服务器之前的文件或系统环境:MCP_USE_OWN_BROWSER=true CHROME_CDP=http://localhost:9222 # Use the same port you launched Chrome withMCP_USE_OWN_BROWSER=true:告诉服务器连接到现有浏览器,而不是启动浏览器。CHROME_CDP:指定服务器可以连接到浏览器的DevTools协议端点的URL。
-
运行MCP服务器: 像往常一样启动服务器:
uv run mcp-server-browser-use
现在,当你使用 run_browser_agent 或 run_deep_search 工具,服务器将连接到您正在运行的Chrome实例,而不是创建一个新的实例。
重要注意事项:
- 浏览器启动时
--remote-debugging-portMCP服务器运行时必须保持打开状态,并需要与之交互。 - 确保
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时使用的端口匹配。 - 检查防火墙是否阻止了与指定端口的连接。
- 确保浏览器仍在运行。
- 验证Chrome是否随
- API错误:双击检查正确的API密钥环境变量(
OPENAI_API_KEY,ANTHROPIC_API_KEY等)为您选择的设置MCP_MODEL_PROVIDER,或MCP_API_KEY已设置。验证密钥和端点(AZURE_OPENAI_ENDPOINTAzure需要)。 - 愿景问题:确保
MCP_USE_VISION=true如果使用视觉特征,并且您选择的LLM模型支持视觉。 - 依赖性问题:运行
uv sync以确保所有依赖项都已正确安装。检查pyproject.toml. - 日志记录:检查由指定的日志文件
LOG_FILE(默认值:mcp_server_browser_use.log)查看详细的错误消息。增加BROWSER_USE_LOGGING_LEVEL到DEBUG以获得更详细的输出。
许可证
麻省理工学院-参见 许可证 了解详情。