返回市场
麦克普网页浏览器

麦克普网页浏览器

作者:random-robbie26 星标更新:2025-03-10

项目介绍

MCP Web浏览器服务器

一个由Playwright驱动的高级网络浏览服务器,适用于模型上下文协议(MCP),通过灵活、安全的API实现无头浏览器交互。

<a href="https://glama.ai/mcp/servers/lwqlaw6k6d"><img width="380" height="200" src="https://gips3.baidu.com/it/u=325179036,639407700&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Web Browser Server MCP服务器" /></a>

🌐 特性

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

🚀 快速开始

先决条件

  • Python 3.10+
  • MCP SDK
  • Playwright

安装

# 安装MCP和Playwright
pip install mcp playwright

# 安装浏览器依赖项
playwright install

配置Claude桌面

添加到你的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:可选的上下文对象(目前未使用)

🤝 贡献

欢迎贡献!请随时提交拉取请求。

开发环境设置

# 克隆仓库
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上打开一个issue