项目简介
“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防护和基于角色的访问控制等安全机制。
安装步骤
- 克隆仓库:
打开命令行或终端,执行以下命令克隆项目仓库:
git clone https://github.com/dimitrymd/mcp-browser-control - 进入项目目录:
克隆完成后,进入项目文件夹:
cd mcp-browser-control - 安装依赖:
使用npm安装所有必要的项目依赖:
npm install - 配置环境:
- 复制项目根目录下的 '.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' 可在服务器启动时自动创建一个默认浏览器会话,方便快速测试。
- 复制项目根目录下的 '.env.example' 文件,并将其重命名为 '.env'。
- 构建项目:
执行构建命令,编译TypeScript代码:
npm run build - 启动生产服务器:
项目构建成功后,即可启动MCP服务器:
服务器将在默认端口 3000 上运行,并通过Stdio传输协议与MCP客户端(如LLM代理)进行通信。npm start
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服务器,即可通过调用服务器提供的“工具”来执行各种浏览器自动化任务。以下是一些基本的使用示例:
- 创建浏览器会话:
在使用任何浏览器操作工具之前,通常需要先创建一个独立的浏览器会话。服务器将返回一个会话ID,客户端需保存此ID并在后续操作中使用。
- MCP客户端请求示例(逻辑描述): '调用工具 "create_session",参数为: '{ "browserType": "chrome", "headless": true, "windowSize": { "width": 1920, "height": 1080 } }'
- 服务器响应示例(逻辑描述): '返回成功,数据包含: '{ "sessionId": "your-new-session-id" }'
- 执行网页导航:
使用获取到的会话ID,指示浏览器导航到指定的URL。
- MCP客户端请求示例: '调用工具 "navigate_to",参数为: '{ "url": "https://example.com", "sessionId": "your-session-id" }'
- 提取页面内容:
提取当前页面的完整HTML、纯文本或Markdown格式内容。
- MCP客户端请求示例: '调用工具 "get_page_content",参数为: '{ "format": "markdown", "sessionId": "your-session-id" }'
- 执行页面点击:
模拟用户点击页面上的某个元素,例如一个按钮。
- MCP客户端请求示例: '调用工具 "click",参数为: '{ "selector": "#submit-button", "sessionId": "your-session-id" }'
- 关闭浏览器会话:
完成所有操作后,务必关闭会话以释放服务器资源。
- MCP客户端请求示例: '调用工具 "close_session",参数为: '{ "sessionId": "your-session-id" }'
提示: 所有工具的详细参数说明、预期返回格式和更复杂的使用场景,请查阅项目仓库中的 'README.md' 文件中"Tool Usage"部分。
信息
分类
开发者工具