MCP Browser Console Capture Service
概述
MCP Browser Console Capture Service 是一个基于 FastMCP 框架的浏览器自动化服务,专门用于智能舆情分析系统。该服务提供了完整的浏览器控制、JavaScript 执行、控制台日志捕获和页面交互功能。
技术栈
- FastMCP: MCP (Model Context Protocol) 服务框架
- Selenium: 浏览器自动化工具
- Chrome: 主要支持的浏览器
- ChromeDriver: Chrome 浏览器驱动程序
- Python 3.10.12+: 运行环境
核心功能
🌐 浏览器控制
- 启动和管理 Chrome/Firefox 浏览器实例
- 页面导航和 URL 访问
- 窗口大小调整和管理
- 多会话支持
📝 JavaScript 执行
- 在页面中执行自定义 JavaScript 代码
- 获取执行结果和返回值
- 支持异步脚本执行
📊 控制台日志捕获
- 实时捕获浏览器控制台日志
- 支持多种日志级别(INFO、WARNING、ERROR、DEBUG)
- 结构化日志数据返回
- 可配置日志数量限制(最多10000条)
🎯 页面交互
- 元素点击和文本输入
- 元素等待和条件检查
- 页面截图功能
- Cookie 和页面信息获取
🔐 认证机制
- 支持
test-token-eric
特殊认证 - 默认管理员权限
- 完整的操作日志记录
环境配置步骤
1. 系统要求
# Ubuntu/Debian 系统
sudo apt update
sudo apt install -y python3 python3-pip python3-venv
# 安装必要的系统依赖
sudo apt install -y wget unzip curl
2. Chrome 浏览器 和 ChromeDriver 安装
重要: 本服务需要特定路径的 Chrome 浏览器
3. ChromeDriver 安装
重要: ChromeDriver 版本必须与 Chrome 版本匹配
Google Chrome for Testing 137.0.7151.119 ChromeDriver 137.0.7151.119 (e0ac9d12dff5f2d33c935958b06bf1ded7f1c08c-refs/branch-heads/7151@{#2356})
请自行下载安装:json 源地址 https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json
验证安装
/opt/chromedriver-linux64/chromedriver --version /opt/chrome-linux64/chrome --version
配置到对应路径到server.py
4. Python 环境配置
创建虚拟环境
python3 -m venv venv
source venv/bin/activate
安装依赖
pip install -r requirements.txt
安装 FastMCP(如果不在 requirements.txt 中)
pip install fastmcp
5. 配置文件设置
确保 config.json
中的路径配置正确:
{
"mcpServers": {
"browser-console-capture": {
"command": "/home/cooper/IntelligentPublicSentimentSystem/mcp_services/browser_console_capture/server.py",
"args": [],
"env": {
"PYTHONPATH": "/home/cooper/IntelligentPublicSentimentSystem"
}
}
}
}
6. 权限设置
# 确保 Chrome 和 ChromeDriver 有执行权限
sudo chmod +x /opt/chrome-linux64/chrome
sudo chmod +x /opt/chromedriver-linux64/chromedriver
# 创建必要的目录
mkdir -p ./screenshots
mkdir -p ./logs
7. 环境验证
# 测试 Chrome 启动
/opt/chrome-linux64/chrome --version --no-sandbox
# 测试 ChromeDriver
/opt/chromedriver-linux64/chromedriver --version
# 测试 Python 依赖
python3 -c "import selenium; print('Selenium version:', selenium.__version__)"
python3 -c "import fastmcp; print('FastMCP imported successfully')"
启动服务
fastmcp run server.py:mcp
IntelligentPublicSentimentSystem/mcp_services/browser_console_capture$ fastmcp run server.py:mcp
2025-06-20 03:02:09,006 - server_module - INFO - 日志系统初始化完成,配置已加载 2025-06-20 03:02:09,010 - auth_utils - INFO - === 浏览器MCP认证配置 === 2025-06-20 03:02:09,010 - auth_utils - INFO - 默认用户: eric 2025-06-20 03:02:09,010 - auth_utils - INFO - 默认角色: admin 2025-06-20 03:02:09,010 - auth_utils - INFO - 特殊Token: test-token-eric 2025-06-20 03:02:09,011 - auth_utils - INFO - 浏览器MCP将自动使用eric用户身份进行认证 2025-06-20 03:02:09,011 - auth_utils - INFO - ========================== 2025-06-20 03:02:09,011 - server_module - INFO - 初始化FastMCP服务器... 2025-06-20 03:02:09,016 - server_module - INFO - FastMCP服务器初始化完成 2025-06-20 03:02:09,017 - server_module - INFO - 状态字典初始化完成
使用示例
基本浏览器操作
# 启动浏览器
start_browser(browser_type="chrome", headless=False)
# 导航到页面
navigate_to_url("https://example.com")
# 执行 JavaScript
execute_javascript("console.log('Hello World'); return document.title;")
# 获取控制台日志
get_console_logs(level="ALL", limit=100)
页面交互
# 点击元素
click_element("#submit-button", by="css")
# 输入文本
input_text("#search-input", "搜索内容", by="css")
# 等待元素
wait_for_element(".loading-complete", condition="visible")
# 截图
take_screenshot("page_screenshot.png", full_page=True)
配置说明
浏览器配置
chrome_binary_path
: Chrome 浏览器可执行文件路径chromedriver_path
: ChromeDriver 可执行文件路径headless
: 是否以无头模式运行window_size
: 浏览器窗口大小
日志配置
log_level
: 日志级别(DEBUG, INFO, WARNING, ERROR)log_file
: 日志文件路径max_log_size
: 最大日志文件大小
性能配置
page_load_timeout
: 页面加载超时时间script_timeout
: 脚本执行超时时间implicit_wait
: 隐式等待时间
MCP工具函数
函数名 | 描述 | 参数 |
---|---|---|
start_browser | 启动浏览器实例 | browser_type , headless , window_width , window_height |
navigate_to_url | 导航到指定URL | url , wait_for_load |
execute_javascript | 执行JavaScript代码 | script , capture_console |
get_console_logs | 获取控制台日志 | level , limit , clear_after_get |
click_element | 点击页面元素 | selector , by , timeout |
input_text | 输入文本 | selector , text , by , clear_first |
take_screenshot | 截取页面截图 | filename , full_page , element_selector |
close_browser | 关闭浏览器实例 | 无 |
安全注意事项
生产环境配置
- 使用 headless 模式,默认为 True
- 限制网络访问
- 配置防火墙规则
认证安全
test-token-eric
需要有token的情况
贡献指南
- Fork 项目
- 创建功能分支
- 提交更改
- 创建 Pull Request
许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
联系方式
如有问题或建议,请通过以下方式联系:
- 项目 Issues: GitHub Issues
- 邮箱: 项目邮箱
- 文档: 在线文档