首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
mcp-web-browser2025-05-270分享
github
一个高级的网络浏览服务器,通过安全的API启用无头浏览器交互,提供导航、内容提取、元素交互和截图捕获等功能。
By random-robbie
2025-05-270
github
详情内容

MCP 网页浏览器服务器

这是一个基于 Playwright 的高级网页浏览服务器,专为 Model Context Protocol (MCP) 设计,通过灵活安全的 API 实现无头浏览器交互。

Web Browser Server MCP server

🌐 功能特性

  • 无头网页浏览:绕过 SSL 证书验证访问任意网站
  • 全页面内容提取:获取完整 HTML 内容,包括动态加载的 JavaScript
  • 多标签页支持:创建、管理和切换多个浏览器标签页
  • 高级网页交互工具
    • 提取文本内容
    • 点击页面元素
    • 在表单字段中输入文本
    • 截取屏幕截图
    • 提取页面链接(支持过滤功能)
    • 向任意方向滚动页面
    • 在页面上执行 JavaScript
    • 刷新页面
    • 等待导航完成
  • 资源管理:非活动后自动清理未使用资源
  • 增强页面信息:获取当前页面的详细元数据

🚀 快速开始

前提条件

  • Python 3.10+
  • MCP SDK
  • Playwright

安装

# 安装 MCP 和 Playwright
pip install mcp playwright

# 安装浏览器依赖
playwright install

Claude Desktop 配置

在您的 claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "web-browser": {
      "command": "python",
      "args": [
        "/path/to/your/server.py"
      ]
    }
  }
}

💡 使用示例

基本网页导航

# 浏览网站
page_content = browse_to("https://example.com")

# 提取页面文本
text_content = extract_text_content()

# 提取特定元素的文本
title_text = extract_text_content("h1.title")

网页交互

# 导航到页面
browse_to("https://example.com/login")

# 在表单中输入文本
input_text("#username", "your_username")
input_text("#password", "your_password")

# 点击登录按钮
click_element("#login-button")

截图捕获

# 捕获全页截图
full_page_screenshot = get_page_screenshots(full_page=True)

# 捕获特定元素截图
element_screenshot = get_page_screenshots(selector="#main-content")

链接提取

# 获取页面上的所有链接
page_links = get_page_links()

# 获取匹配模式的链接
filtered_links = get_page_links(filter_pattern="contact")

多标签页浏览

# 创建新标签页
tab_id = create_new_tab("https://example.com")

# 创建另一个标签页
another_tab_id = create_new_tab("https://example.org")

# 列出所有打开的标签页
tabs = list_tabs()

# 切换标签页
switch_tab(tab_id)

# 关闭标签页
close_tab(another_tab_id)

高级交互

# 滚动页面
scroll_page(direction="down", amount="page")

# 在页面上执行 JavaScript
result = execute_javascript("return document.title")

# 获取详细的页面信息
page_info = get_page_info()

# 刷新当前页面
refresh_page()

# 等待导航完成
wait_for_navigation(timeout_ms=5000)

🛡️ 安全特性

  • 绕过 SSL 证书验证
  • 安全的浏览器上下文管理
  • 自定义用户代理配置
  • 错误处理和全面日志记录
  • 可配置的超时设置
  • 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:要切换到的标签页 ID
  • context:可选上下文对象(当前未使用)

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。

开发设置

# 克隆仓库
git clone https://github.com/random-robbie/mcp-web-browser.git

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # 在 Windows 上使用 `venv\Scripts\activate`

# 安装依赖
pip install -e .[dev]

📄 许可证

MIT 许可证

🔗 相关项目

💬 支持

如有问题,请在 GitHub 上提交问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档