使用说明
MCP浏览器操作员
用于浏览器自动化的模型控制协议(MCP)服务器,使LLM能够控制web浏览器,与网页交互,并通过标准化的JSON-RPC接口分析web内容。
特性
- 浏览器管理:创建、导航、操作和关闭浏览器实例
- 作业管理:使用作业ID跟踪浏览器操作的状态
- Web交互:使用OpenAI的计算机使用API执行自然语言指令
- 浏览器工具:访问控制台日志、网络活动、屏幕截图等
- 审计:运行可访问性、性能、SEO和其他网页审核
需求
- Python 3.11+
- 剧作家
- OpenAI API密钥(用于计算机使用API)
安装
-
克隆此存储库:
git clone https://github.com/yourusername/operator-mcp.git cd operator-mcp -
安装依赖项:
pip install -e . -
安装Playwright浏览器:
playwright install chromium -
设置您的OpenAI API密钥:
export OPENAI_API_KEY=your-api-key
用法
启动MCP服务器:
./run-server
服务器在stdin上监听JSON-RPC请求,并在stdout上按照MCP协议进行响应。
可执行脚本
-
run-server-运行MCP服务器(主入口点)# Run the MCP server ./run-server # Run with specific log directory ./run-server --log-dir /path/to/logs # Run in debug mode ./run-server --debug -
run-tests-运行所有测试(仅提供单元或集成选项)# Run all tests ./run-tests # Run only unit tests (faster) ./run-tests --unit-only # Run only integration tests ./run-tests --integration-only # Run with verbose output ./run-tests --verbose # Run a specific test ./run-tests --test TestBrowserOperatorMethods -
run-test-harness-使用MCP Inspector运行服务器进行交互式测试# Run with the MCP Inspector for interactive testing ./run-test-harness
核心方法
浏览器管理
-
创建浏览器:初始化新浏览器实例
{ "jsonrpc": "2.0", "id": 1, "method": "mcp__browser-operator__create-browser", "params": { "project_name": "my-project" } } -
浏览浏览器:将浏览器定向到指定的URL
{ "jsonrpc": "2.0", "id": 2, "method": "mcp__browser-operator__navigate-browser", "params": { "project_name": "my-project", "url": "https://example.com" } } -
操作浏览器:执行浏览器交互的自然语言指令
{ "jsonrpc": "2.0", "id": 3, "method": "mcp__browser-operator__operate-browser", "params": { "project_name": "my-project", "instruction": "Find the heading on this page and tell me what it says." } } -
关闭浏览器:终止浏览器实例
{ "jsonrpc": "2.0", "id": 4, "method": "mcp__browser-operator__close-browser", "params": { "project_name": "my-project" } }
作业管理
-
获取作业状态:按作业ID检索操作的状态和结果
{ "jsonrpc": "2.0", "id": 5, "method": "mcp__browser-operator__get-job-status", "params": { "job_id": "job-12345" } } -
列出工作:查看最近的浏览器操作作业
{ "jsonrpc": "2.0", "id": 6, "method": "mcp__browser-operator__list-jobs", "params": { "limit": 10 } }
用户注释
- 添加备注:创建和存储与浏览器操作相关的注释
{ "jsonrpc": "2.0", "id": 7, "method": "mcp__browser-operator__add-note", "params": { "name": "My Note", "content": "Important information about this browser session" } }
附加方法
浏览器调试工具
- 获取控制台日志:
mcp__browser-tools__getConsoleLogs - 获取控制台错误:
mcp__browser-tools__getConsoleErrors - 获取网络日志:
mcp__browser-tools__getNetworkLogs - 获取网络错误:
mcp__browser-tools__getNetworkErrors - 屏幕截图:
mcp__browser-tools__takeScreenshot - 获取选定元素:
mcp__browser-tools__getSelectedElement - 擦除日志:
mcp__browser-tools__wipeLogs
审计工具
- 运行辅助功能审核:
mcp__browser-tools__runAccessibilityAudit - 运行性能审核:
mcp__browser-tools__runPerformanceAudit - 运行SEO审计:
mcp__browser-tools__runSEOAudit - 运行NextJS审核:
mcp__browser-tools__runNextJSAudit - 运行最佳实践审核:
mcp__browser-tools__runBestPracticesAudit - 运行调试器模式:
mcp__browser-tools__runDebuggerMode - 运行审核模式:
mcp__browser-tools__runAuditMode
异步工作流模式
浏览器操作是异步的,并使用基于作业的方法:
- 启动操作:调用一个返回job_id的浏览器方法
- 投票完成:使用获取作业状态,直到作业完成
- 处理结果:作业完成后,根据作业状态进行访问
这种方法可以防止客户端超时,同时允许完成复杂的浏览器操作。
持久浏览器状态
当使用项目名称创建浏览器时,MCP操作员会保持持久状态:
- 浏览器状态(Cookie、本地存储、会话存储)在会话之间保留
- 多个项目可以保持独立的浏览器状态
- 可用于维护登录会话、购物车或其他个性化状态
项目结构
src/mcp_operator/:主包__init__.py:包初始化__main__.py:包裹入口点server.py:MCP服务器实现browser.py:浏览器运算符实现cua/:计算机使用API组件agent.py:代理实现computer.py:计算机接口utils.py:实用功能
run-server:运行MCP服务器的脚本run-tests:运行单元和集成测试的脚本run-test-harness:使用MCP检查器运行的脚本
发展
使用MCP检查器
对于调试,请使用 MCP检查员:
# Use the included run-test-harness script
./run-test-harness
# Or directly:
npx @modelcontextprotocol/inspector ./run-server
这提供了一个web界面来测试您的MCP服务器。
安全
- 对潜在有害网站进行域名屏蔽
- 导航前的URL验证
- 不同浏览器实例之间的会话隔离
- 基于文件的日志记录(无标准输出以保留MCP协议)