具有会话上下文的浏览器自动化MCP服务器
一种模型上下文协议(MCP)服务器,提供智能浏览器自动化 基于会话的上下文分析该服务器使AI助手能够与网页进行交互 做出明智的决定 基于页面分析和周围环境。
✨ 主要特点
🧠 基于会话的上下文智能
- 智能元件识别:分析页面结构,为您的任务找到合适的元素
- 情境感知建议:根据标签、附近的文本和相关性推荐元素
- 语义搜索:使用自然语言查询查找相关页面部分
- 进度跟踪:监测会议期间的行动和成功率
- 短暂记忆:仅会话存储,完成后清除(无持续学习)
- 相关性评分:根据上下文分析按置信度排列的要素
🌐 核心浏览器自动化
- 网络导航:导航到URL、处理重定向和管理浏览器历史记录
- 元素交互:单击按钮、链接和其他交互元素
- 文本输入:在表单字段、搜索框和文本区域中键入
- 内容提取:从网页中提取文本、HTML和结构化数据
- 电脑屏幕截图工具:截取整页或特定元素的屏幕截图
- JavaScript执行:在浏览器上下文中运行自定义JavaScript代码
🚀 高性能
- 表单处理:自动填写复杂的web表单
- Cookie管理:获取、设置和管理浏览器Cookie
- 会话保持:跨操作维护浏览器会话
- 多浏览器支持:Chrome、Firefox、带自动驱动程序管理的Edge
- 无头/有头模式:运行有或没有GUI的浏览器
- 元素等待:智能等待动态内容和AJAX加载
📦 安装
- 再进行:
pip install -e .
# or
uv add mcp selenium webdriver-manager pillow beautifulsoup4 chromadb sentence-transformers- 浏览器驱动程序 (由Web驱动程序管理器自动处理):
- Chrome/Chromium驱动程序 - Firefox Gecko驱动程序 - Edge WebDriver
- 上下文分析依赖关系:
- ChromaDB用于内存矢量存储 - 语义嵌入的句子变换器(全MiniLM-L6-v2)
用法
运行服务器
# STDIO transport (for local development)
python -m browser_mcp_server.server
# SSE transport (for web-based clients)
python -m browser_mcp_server.server --transport sse --port 8000使用Claude Desktop进行配置
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"browser-automation": {
"command": "uv",
"args": ["run", "python", "-m", "browser_mcp_server.server"],
"env": {
"BROWSER_HEADLESS": "true",
"BROWSER_TYPE": "chrome"
}
}
}
}可用工具
🧠 会话上下文智能工具
analyze_current_page:分析页面结构并存储在会话上下文中find_page_context:使用语义搜索查找任务的相关页面部分get_smart_element_selector:获取具有周围上下文的元素,以便更好地识别track_action_result:跟踪本届会议的行动和成功/失败get_session_progress:查看会话统计信息、采取的操作和成功率clear_session_context:清除会话内存并重新开始
导航和页面控制
navigate_to_url:导航到特定URLget_page_source:获取当前页面的完整HTML源代码get_rendered_html:获取动态渲染的HTML(JavaScript之后)get_current_url:获取当前页面URLrefresh_page:刷新当前页面go_back:在浏览器历史记录中导航回来go_forward:在浏览器历史记录中向前导航
元素交互
click_element:通过CSS选择器或XPath单击元素type_text:在输入框中键入文本clear_field:清除输入字段中的文本get_element_text:从元素中提取文本内容get_element_attribute:从元素中获取属性值is_element_present:检查页面上是否存在元素
内容提取
extract_links:从当前页面提取所有链接extract_images:提取所有图像及其属性extract_tables:将表数据提取为结构化JSONextract_forms:提取表单字段及其属性search_text:在页面上搜索文本模式
表单自动化
fill_form:用结构化数据填写整个表格select_dropdown_option:从下拉菜单中选择选项check_checkbox:选中或取消选中复选框元素select_radio_button:选择单选按钮选项
视觉与媒体
take_screenshot:捕获整页或元素截图scroll_page:沿不同方向滚动页面hover_element:将鼠标悬停在元素上drag_and_drop:拖放元素
JavaScript和高级
execute_javascript:执行自定义JavaScript代码wait_for_element:等待元素出现或消失wait_for_page_load:等待页面加载完成switch_to_frame:将上下文切换到iframehandle_alert:处理JavaScript警报和确认
会话和Cookie
get_cookies:检索浏览器Cookieset_cookies:设置浏览器Cookiedelete_cookies:删除特定或所有Cookieget_local_storage:访问浏览器本地存储set_local_storage:设置本地存储值
环境变量
BROWSER_TYPE:要使用的浏览器(chrome,firefox,edge)-默认值:chromeBROWSER_HEADLESS:在无头模式下运行(true/false)-默认值:trueBROWSER_TIMEOUT:操作的默认超时时间(秒)-默认值:30BROWSER_WINDOW_SIZE:浏览器窗口大小(1920x1080)-默认值:1920x1080BROWSER_USER_AGENT:自定义用户代理字符串BROWSER_DOWNLOAD_DIR:文件下载目录
示例使用模式
网络爬虫
# Navigate to a website and extract data
await navigate_to_url("https://example.com")
await wait_for_element("css:.content")
content = await extract_text("css:.main-content")
links = await extract_links()表单自动化
# Fill out and submit a contact form
await navigate_to_url("https://example.com/contact")
await fill_form({
"name": "John Doe",
"email": "john@example.com",
"message": "Hello from MCP!"
})
await click_element("css:button[type='submit']")电子商务自动化
# Search and interact with e-commerce sites
await navigate_to_url("https://shop.example.com")
await type_text("css:#search-input", "laptop")
await click_element("css:.search-button")
await wait_for_element("css:.product-list")
products = await extract_text("css:.product-item")安全考虑
此服务器提供强大的浏览器自动化功能,可以:
- 导航到任何网站
- 执行任意JavaScript
- 访问和修改Cookie和本地存储
- 截取网络内容的屏幕截图
- 填写并提交表格
建议:
- 在受控环境中使用
- 为生产实施适当的身份验证
- 审查和批准自动化脚本
- 监控可疑活动
- 在生产中使用无头模式
- 实施速率限制和超时
发展
运行测试
uv run pytest tests/代码格式化
uv run black browser_mcp_server/
uv run isort browser_mcp_server/类型检查
uv run mypy browser_mcp_server/许可证
MIT许可证-有关详细信息,请参阅许可证文件。
