MCP Operator
MCP 浏览器操作员
用于浏览器自动化的模型控制协议 (MCP) 服务器,使 LLM 能够通过标准化的 JSON-RPC 接口控制 Web 浏览器、与网页交互以及分析 Web 内容。
特征
浏览器管理:创建、导航、操作和关闭浏览器实例
作业管理:使用作业 ID 跟踪浏览器操作的状态
Web 交互:使用 OpenAI 的计算机使用 API 执行自然语言指令
浏览器工具:访问控制台日志、网络活动、屏幕截图等
审计:运行可访问性、性能、SEO 和其他网页审计
Related MCP server: Chrome MCP Server
要求
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服务器按照 MCP 协议在 stdin 上监听 JSON-RPC 请求并在 stdout 上做出响应。
可执行脚本
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 --debugrun-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 TestBrowserOperatorMethodsrun-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 的浏览器方法
轮询完成情况:使用 get-job-status 直到作业完成
处理结果:作业完成时,从作业状态访问结果
这种方法可以防止客户端超时,同时允许复杂的浏览器操作完成。
持久浏览器状态
当使用项目名称创建浏览器时,MCP Operator 会维持持久状态:
浏览器状态(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 Inspector 运行的脚本
发展
使用 MCP 检查器
如需调试,请使用MCP Inspector :
# Use the included run-test-harness script
./run-test-harness
# Or directly:
npx @modelcontextprotocol/inspector ./run-server这提供了一个 Web 界面来测试您的 MCP 服务器。
安全
阻止潜在有害网站的域名
导航前的 URL 验证
不同浏览器实例之间的会话隔离
基于文件的日志记录(没有标准输出来保留 MCP 协议)
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/willer/mcp-operator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server