项目简介

AMI-WEB Browser Module 是一个功能强大的浏览器自动化模块,它以 FastMCP 服务器的形式运行,为大型语言模型 (LLM) 客户端提供与真实网页互动的能力。它支持 Chromium 自动化,可以执行网页导航、表单填写、元素点击、文本提取、截图以及网络搜索等操作,确保合规性和可审计性。

主要功能点

  • 浏览器生命周期管理: 启动、列出、获取当前活跃及终止浏览器实例。
  • 网页导航: 访问 URL、前进、后退、刷新页面及获取当前页面 URL。
  • 网页交互: 点击元素、输入文本、选择下拉选项、悬停、滚动页面及模拟键盘按键。
  • 内容提取: 获取元素文本、获取元素属性、检查元素是否存在、等待元素出现及获取浏览器 Cookie。支持大文本分块提取。
  • JavaScript 执行与评估: 在页面上下文中执行任意 JavaScript 代码并获取结果,支持大字符串结果分块传输。
  • 页面截图: 捕获整个页面或特定元素的屏幕截图。
  • 网页搜索: 通过配置的搜索引擎(默认本地 SearXNG)执行网络搜索,并返回结构化结果。

安装步骤

在启动 MCP 服务器之前,你需要确保 Chromium 和 ChromeDriver 已经安装在你的系统上。AMI-WEB 提供了一个便捷的安装脚本:

  1. 克隆仓库:
    git clone https://github.com/Independent-AI-Labs/AMI-WEB.git
    cd AMI-WEB
  2. 设置 Python 环境(如果需要): 请确保你的 'uv' 或 'pip' 工具已正确配置,并使用 Python 3.12 版本。
  3. 安装 Chromium/ChromeDriver:
    # 假设你已经安装了 uv (https://astral.sh/uv)
    uv run --python 3.12 --project browser python scripts/setup_chrome.py
    此命令会根据你的操作系统安装兼容的 Chromium 和 ChromeDriver 二进制文件,并更新配置文件。

服务器配置

MCP 客户端需要通过 JSON-RPC 协议与此服务器通信。以下是 MCP 客户端连接此服务器所需配置的 JSON 格式示例:

{
  "server_name": "AMI-WEB Browser MCP Server",
  "command": "uv",
  "args": [
    "run",
    "--python",
    "3.12",
    "--project",
    "browser",
    "python",
    "backend/mcp/chrome/run_chrome.py",
    "--transport",
    "stdio"
    // 或者使用 WebSocket 传输协议:
    // "--transport", "websocket",
    // "--port", "9000"
  ],
  "description": "连接到 AMI-WEB 浏览器 MCP 服务器,以实现网页自动化和搜索功能。"
}
  • 'server_name': (字符串) 服务器的友好名称。
  • 'command': (字符串) 启动 MCP 服务器进程的可执行命令(例如 'uv')。
  • 'args': (字符串数组) 传递给 'command' 的参数列表。
    • '--transport stdio': (参数) 使用标准输入/输出作为通信通道。
    • '--transport websocket --port 9000': (参数) 或者使用 WebSocket 作为通信通道,指定端口(例如 '9000')。
  • 'description': (字符串) 对此 MCP 服务器用途的简要描述。

基本使用方法

启动服务器后,你的 MCP 客户端即可通过 JSON-RPC 协议调用以下工具来与浏览器交互:

  • 启动浏览器: 调用 'browser_launch' 工具。
  • 导航到 URL: 调用 'browser_navigate' 工具并提供 'url' 参数。
  • 获取页面文本: 调用 'browser_get_text' 工具并提供 CSS 'selector'。
  • 执行网页搜索: 调用 'web_search' 工具并提供 'query' 参数。

例如,MCP 客户端可能会向服务器发送一个 JSON-RPC 请求,调用 'browser_launch' 工具,然后是 'browser_navigate',最后是 'browser_get_text'。

信息

分类

网页与API