关于 MCP Web Browser Server
MCP Web Browser Server 是基于 Playwright 的 MCP 服务,可通过无头浏览器访问网页并进行交互。适合需要让 AI 读取动态网页内容或操作页面的用户。
主要功能
- 01无头浏览器访问网页并提取内容
- 02提取文本、链接与页面信息
- 03点击元素与输入表单文本
- 04截取整页或指定元素的截图
- 05管理多个标签页并执行 JavaScript
适用场景
- 01让 AI 读取包含动态脚本内容的网页
- 02自动填写表单或点击页面按钮
- 03抓取页面链接并截图留存
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露浏览器操作相关的工具,例如导航、点击、输入和截图。客户端通过配置文件启动该服务即可调用这些工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Web Browser Server
一款由 Playwright 驱动的高级网页浏览服务,适用于 Model Context Protocol(MCP),通过灵活、安全的 API 实现无头浏览器交互。
🌐 功能
- 无头网页浏览:可访问任意网站,并绕过 SSL 证书验证
- 完整页面内容提取:获取完整的 HTML 内容,包括动态加载的 JavaScript
- 多标签页支持:创建、管理并切换多个浏览器标签页
- 高级网页交互工具:
- 提取文本内容
- 点击页面元素
- 在表单字段中输入文本
- 截取屏幕截图
- 提取页面链接,并支持筛选
- 向任意方向滚动页面
- 在页面上执行 JavaScript
- 刷新页面
- 等待导航完成
- 资源管理:在一段时间无活动后自动清理未使用的资源
- 增强的页面信息:获取当前页面的详细元数据
🚀 快速开始
前置条件
- Python 3.10+
- MCP SDK
- Playwright
安装
# Install MCP and Playwright
pip install mcp playwright
# Install browser dependencies
playwright install
Claude Desktop 配置
添加到 claude_desktop_config.json 中:
{
"mcpServers": {
"web-browser": {
"command": "python",
"args": [
"/path/to/your/server.py"
]
}
}
}
💡 使用示例
基本网页导航
# Browse to a website
page_content = browse_to("https://example.com")
# Extract page text
text_content = extract_text_content()
# Extract text from a specific element
title_text = extract_text_content("h1.title")
网页交互
# Navigate to a page
browse_to("https://example.com/login")
# Input text into a form
input_text("#username", "your_username")
input_text("#password", "your_password")
# Click a login button
click_element("#login-button")
截取屏幕截图
# Capture full page screenshot
full_page_screenshot = get_page_screenshots(full_page=True)
# Capture specific element screenshot
element_screenshot = get_page_screenshots(selector="#main-content")
提取链接
# Get all links on the page
page_links = get_page_links()
# Get links matching a pattern
filtered_links = get_page_links(filter_pattern="contact")
多标签页浏览
# Create a new tab
tab_id = create_new_tab("https://example.com")
# Create another tab
another_tab_id = create_new_tab("https://example.org")
# List all open tabs
tabs = list_tabs()
# Switch between tabs
switch_tab(tab_id)
# Close a tab
close_tab(another_tab_id)
高级交互
# Scroll the page
scroll_page(direction="down", amount="page")
# Execute JavaScript on the page
result = execute_javascript("return document.title")
# Get detailed page information
page_info = get_page_info()
# Refresh the current page
refresh_page()
# Wait for navigation to complete
wait_for_navigation(timeout_ms=5000)
🛡️ 安全功能
- 绕过 SSL 证书验证
- 安全的浏览器上下文管理
- 自定义 user-agent 配置
- 错误处理和全面的日志记录
- 可配置的超时设置
- CSP 绕过控制
- 防范 Cookie 窃取
🔧 故障排除
常见问题
- SSL 证书错误:自动绕过
- 页面加载缓慢:调整
browse_to()方法中的超时设置 - 未找到元素:仔细检查选择器
- 浏览器资源占用:一段时间无活动后自动清理
日志记录
所有重要事件都会记录详细信息,便于调试。
📋 工具参数
browse_to(url: str, context: Optional[Any] = None)
url:要导航到的网站context:可选的上下文对象(当前未使用)
extract_text_content(selector: Optional[str] = None, context: Optional[Any] = None)
selector:可选的 CSS 选择器,用于提取特定内容context:可选的上下文对象(当前未使用)
click_element(selector: str, context: Optional[Any] = None)
selector:要点击元素的 CSS 选择器context:可选的上下文对象(当前未使用)
get_page_screenshots(full_page: bool = False, selector: Optional[str] = None, context: Optional[Any] = None)
full_page:截取整个页面的屏幕截图selector:可选的要截取屏幕截图的元素context:可选的上下文对象(当前未使用)
get_page_links(filter_pattern: Optional[str] = None, context: Optional[Any] = None)
filter_pattern:可选的文本模式,用于筛选链接context:可选的上下文对象(当前未使用)
input_text(selector: str, text: str, context: Optional[Any] = None)
selector:输入元素的 CSS 选择器text:要输入的文本context:可选的上下文对象(当前未使用)
create_new_tab(url: Optional[str] = None, context: Optional[Any] = None)
url:可选的 URL,用于在新标签页中导航context:可选的上下文对象(当前未使用)
switch_tab(tab_id: str, context: Optional[Any] = None)
tab_id:要切换到的标签页 IDcontext:可选的上下文对象(当前未使用)
list_tabs(context: Optional[Any] = None)
context:可选的上下文对象(当前未使用)
close_tab(tab_id: Optional[str] = None, context: Optional[Any] = None)
tab_id:要关闭的标签页的可选 ID(默认为当前标签页)context:可选的上下文对象(目前未使用)
refresh_page(context: Optional[Any] = None)
context:可选的上下文对象(目前未使用)
get_page_info(context: Optional[Any] = None)
context:可选的上下文对象(目前未使用)
scroll_page(direction: str = "down", amount: str = "page", context: Optional[Any] = None)
direction:滚动方向('up'、'down'、'left'、'right')amount:滚动量('page'、'half' 或数字)context:可选的上下文对象(目前未使用)
wait_for_navigation(timeout_ms: int = 10000, context: Optional[Any] = None)
timeout_ms:等待的最长时间,单位为毫秒context:可选的上下文对象(目前未使用)
execute_javascript(script: str, context: Optional[Any] = None)
script:要执行的 JavaScript 代码context:可选的上下文对象(目前未使用)
🤝 贡献
欢迎贡献!欢迎提交 Pull Request。
开发环境设置
# Clone the repository
git clone https://github.com/random-robbie/mcp-web-browser.git
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`
# Install dependencies
pip install -e .[dev]
📄 许可证
MIT License
🔗 相关项目
💬 支持
如有问题或疑问,请在 GitHub 上提交问题。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。