mcpField
M
MCP Web Browser Server

MCP Web Browser Server

本地服务
github.com/random-robbie浏览器自动化2785 周前更新

关于 MCP Web Browser Server

MCP Web Browser Server 是基于 Playwright 的 MCP 服务,可通过无头浏览器访问网页并进行交互。适合需要让 AI 读取动态网页内容或操作页面的用户。

主要功能

  1. 01无头浏览器访问网页并提取内容
  2. 02提取文本、链接与页面信息
  3. 03点击元素与输入表单文本
  4. 04截取整页或指定元素的截图
  5. 05管理多个标签页并执行 JavaScript

适用场景

  1. 01让 AI 读取包含动态脚本内容的网页
  2. 02自动填写表单或点击页面按钮
  3. 03抓取页面链接并截图留存

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露浏览器操作相关的工具,例如导航、点击、输入和截图。客户端通过配置文件启动该服务即可调用这些工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Web Browser Server

一款由 Playwright 驱动的高级网页浏览服务,适用于 Model Context Protocol(MCP),通过灵活、安全的 API 实现无头浏览器交互。

Web Browser Server MCP 服务

🌐 功能

  • 无头网页浏览:可访问任意网站,并绕过 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:要切换到的标签页 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。

开发环境设置
# 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

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。