项目简介

“MCP浏览器自动化控制服务器”是一个基于Model Context Protocol (MCP) 构建的强大后端服务,专注于提供浏览器自动化能力。它集成了Selenium WebDriver,能够执行70多种浏览器操作工具,覆盖网页导航、元素交互、内容提取、媒体测试(音频/视频)、JavaScript执行、对话框处理、存储管理、多窗口协调、网络监控和性能分析等多种场景。此服务器特别强调其革命性的音视频实时播放检测和Google Lighthouse集成的SEO分析能力,旨在为大型语言模型(LLM)客户端提供标准化、可扩展的上下文服务框架。

主要功能点

  • 全面的浏览器自动化: 支持Chrome和Firefox浏览器,执行网页导航、点击、输入、悬停、滚动等70多种精细的网页交互操作。
  • 革命性音视频测试: 提供世界领先的实时音频播放检测和视频帧级分析,支持音视频同步测试、质量评估和问题诊断,开创了媒体内容测试的新标准。
  • 高级数据提取与市场情报: 能够从网页中高效提取结构化数据、表格数据、表单信息、媒体元素和链接,并支持多页面分页处理,为商业智能和市场分析提供高质量的数据集。
  • Google驱动的SEO性能分析: 深度集成Google Lighthouse数据,提供Core Web Vitals、页面速度的详细分析,并具备性能问题检测、竞品SEO监控和元标签审计等高级SEO工具。
  • 会话管理与企业级特性: 提供多浏览器会话的生命周期管理、认证(API Key/JWT)、IP白名单、速率限制、智能会话池化、内存优化、请求队列和详细的Prometheus监控指标。
  • 安全与可扩展性: 支持Docker和Kubernetes部署,确保应用在生产环境中的可扩展性和可靠性;内置多层验证、XSS防护和基于角色的访问控制等安全机制。

安装步骤

  1. 克隆仓库: 打开命令行或终端,执行以下命令克隆项目仓库:
    git clone https://github.com/dimitrymd/mcp-browser-control
  2. 进入项目目录: 克隆完成后,进入项目文件夹:
    cd mcp-browser-control
  3. 安装依赖: 使用npm安装所有必要的项目依赖:
    npm install
  4. 配置环境:
    • 复制项目根目录下的 '.env.example' 文件,并将其重命名为 '.env'。
      cp .env.example .env
    • 使用文本编辑器打开 '.env' 文件,根据您的需求调整以下核心配置(更多选项请参考 '.env.example' 文件中的详细说明):
      • 'BROWSER_TYPE': 设置浏览器类型,可选值 'chrome' 或 'firefox'。
      • 'HEADLESS': 设置为 'true' 可在无头模式(无图形界面)下运行浏览器,设置为 'false' 则显示浏览器界面。
      • 'MAX_CONCURRENT_SESSIONS': 设置服务器支持的最大并发浏览器会话数。
      • 'SESSION_TIMEOUT': 设置浏览器会话的空闲超时时间(毫秒),超过此时间会自动关闭会话。
      • 'LOG_LEVEL': 设置日志输出级别,如 'info'、'debug'、'warn'、'error'。
      • 'CREATE_DEFAULT_SESSION': 设置为 'true' 可在服务器启动时自动创建一个默认浏览器会话,方便快速测试。
  5. 构建项目: 执行构建命令,编译TypeScript代码:
    npm run build
  6. 启动生产服务器: 项目构建成功后,即可启动MCP服务器:
    npm start
    服务器将在默认端口 3000 上运行,并通过Stdio传输协议与MCP客户端(如LLM代理)进行通信。

MCP服务器配置

MCP客户端(如LLM代理)需要以下JSON格式的配置信息才能与“MCP浏览器自动化控制服务器”建立连接和进行交互。请根据您的服务器环境和需求,参考以下配置示例:

{
  "name": "MCP浏览器自动化控制服务器",
  "command": "node",
  "args": ["mcp-server.js"],
  "env": {
    "BROWSER_TYPE": "chrome",        // 浏览器类型,可选值: "chrome" 或 "firefox"
    "HEADLESS": "true",              // 是否以无头模式运行浏览器,可选值: "true" 或 "false"
    "MAX_CONCURRENT_SESSIONS": "5",  // 服务器允许的最大并发浏览器会话数 (推荐值: 1-100)
    "SESSION_TIMEOUT": "600000",     // 会话空闲超时时间,单位毫秒 (例如: 600000ms = 10分钟)
    "LOG_LEVEL": "info",             // 服务器日志级别,可选值: "error", "warn", "info", "debug"
    "CREATE_DEFAULT_SESSION": "true" // 服务器启动时是否自动创建一个默认浏览器会话,可选值: "true" 或 "false"
    // 您可以在此添加更多环境变量,例如 SELENIUM_GRID_URL 用于连接远程Selenium Grid,
    // 或 GOOGLE_PAGESPEED_API_KEY 用于启用Google PageSpeed Insights API。
    // 请查阅服务器项目根目录下的 '.env.example' 文件获取所有可用配置项的详细说明。
  }
}

基本使用方法

一旦MCP客户端成功连接到MCP服务器,即可通过调用服务器提供的“工具”来执行各种浏览器自动化任务。以下是一些基本的使用示例:

  1. 创建浏览器会话: 在使用任何浏览器操作工具之前,通常需要先创建一个独立的浏览器会话。服务器将返回一个会话ID,客户端需保存此ID并在后续操作中使用。
    • MCP客户端请求示例(逻辑描述): '调用工具 "create_session",参数为: '{ "browserType": "chrome", "headless": true, "windowSize": { "width": 1920, "height": 1080 } }'
    • 服务器响应示例(逻辑描述): '返回成功,数据包含: '{ "sessionId": "your-new-session-id" }'
  2. 执行网页导航: 使用获取到的会话ID,指示浏览器导航到指定的URL。
    • MCP客户端请求示例: '调用工具 "navigate_to",参数为: '{ "url": "https://example.com", "sessionId": "your-session-id" }'
  3. 提取页面内容: 提取当前页面的完整HTML、纯文本或Markdown格式内容。
    • MCP客户端请求示例: '调用工具 "get_page_content",参数为: '{ "format": "markdown", "sessionId": "your-session-id" }'
  4. 执行页面点击: 模拟用户点击页面上的某个元素,例如一个按钮。
    • MCP客户端请求示例: '调用工具 "click",参数为: '{ "selector": "#submit-button", "sessionId": "your-session-id" }'
  5. 关闭浏览器会话: 完成所有操作后,务必关闭会话以释放服务器资源。
    • MCP客户端请求示例: '调用工具 "close_session",参数为: '{ "sessionId": "your-session-id" }'

提示: 所有工具的详细参数说明、预期返回格式和更复杂的使用场景,请查阅项目仓库中的 'README.md' 文件中"Tool Usage"部分。

信息

分类

开发者工具