项目简介

Browser MCP 服务端是一个用PHP和Symfony框架开发的Model Context Protocol (MCP) 服务器实现。它旨在通过标准化的Model Context Protocol向LLM客户端提供强大的浏览器能力,包括网页搜索(通过SearxNG后端)、打开网页获取内容以及在已打开网页中进行文本查找。它支持复杂的页面渲染(可选的Puppeteer)和HTML到纯文本的转换,以优化LLM的消费体验。

主要功能点

  • 网页搜索 ('browser.search'): 通过SearxNG后端执行网络搜索,返回相关网页的标题、URL和摘要列表。
  • 打开网页 ('browser.open'): 根据提供的URL获取网页内容,并按行数或令牌限制返回指定部分的文本。支持页面缓存,方便后续操作。
  • 网页查找 ('browser.find'): 在已打开的网页内容中查找符合正则表达式的文本。返回匹配结果及其上下文行,如果未找到则提供下一步建议。
  • HTML到纯文本处理: 对获取的网页内容进行优化处理,移除不必要的HTML标签,提取关键信息,并格式化为LLM易于理解的纯文本。
  • 可选的Puppeteer渲染: 对于依赖JavaScript渲染的复杂网页(如GitHub),可配置使用Puppeteer进行无头浏览器渲染,确保获取完整的页面内容。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/ineersa/browser-mcp.git
  2. 进入目录:
    cd browser-mcp
  3. 安装Composer依赖:
    composer install
  4. 生成可执行文件 (可选): 运行 './prepare_binary.sh' 脚本可以生成单个二进制文件,便于部署。这需要先安装 'box-project/box'。你也可以直接从项目的Releases页面下载预编译的二进制文件。
  5. 配置环境变量: 在项目的 '.env' 或 '.env.local' 文件中设置必要的环境变量,例如:
    BROWSER_BACKEND=searxng
    BACKEND_URL=http://server:8088  # SearxNG后端服务的URL,替换为你的SearxNG地址
    SEARCH_VIEW_TOKENS=1024          # 页面内容返回的最大令牌数
    USE_PUPPETEER=false              # 是否启用Puppeteer渲染JavaScript页面 (true/false)
    PUPPETEER_NODE_BINARY=node       # Node.js可执行文件路径(如果启用Puppeteer)
    如果启用 'USE_PUPPETEER=true',你需要安装Node.js 18+,并在项目根目录运行以下命令安装Puppeteer及其相关依赖:
    npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth puppeteer-extra-plugin-user-preferences puppeteer-extra-plugin-user-data-dir

服务器配置

MCP客户端通过JSON-RPC协议与Browser MCP服务器通信。客户端通常需要一个 JSON 格式的配置文件来启动服务器。以下是配置示例及其参数说明:

{
    "serverName": "browser",
    "command": "./dist/browser-mcp",
    "args": [],
    "env": {
        "APP_LOG_DIR": "/tmp/.symfony/browser-mcp/log"
    },
    "description": "提供LLM访问网页搜索、内容读取和文本查找等功能的MCP服务器。",
    "version": "0.0.1",
    "protocolVersion": "2024-11-05"
}
  • 'serverName': 服务器的名称,此处为 "browser"。
  • 'command': 启动Browser MCP服务器的命令路径。如果使用预编译的二进制文件,请确保路径正确。
  • 'args': 启动命令的额外参数,通常为空数组。
  • 'env': 环境变量对象,例如 'APP_LOG_DIR' 用于指定服务器日志的存储路径。
  • 'description': 服务器的描述信息。
  • 'version': 服务器的版本号。
  • 'protocolVersion': 服务器支持的MCP协议版本。

基本使用方法

启动服务器后,MCP客户端(例如 '@modelcontextprotocol/inspector''MCPO' 等)可以通过JSON-RPC调用服务器暴露的工具:

  • 搜索: 调用 'browser.search' 工具,参数为 'query' (搜索关键词) 和可选的 'topn' (返回结果数量)。
  • 打开网页: 调用 'browser.open' 工具,参数为 'url' (网页URL), 'start_at_line' (起始行号,0-based) 和 'number_of_lines' (显示行数)。
  • 查找: 调用 'browser.find' 工具,参数为 'url' (网页URL) 和 'regex' (PCRE格式的正则表达式,例如 '/pattern/iu')。

例如,在支持MCP的LLM环境中,你可以指示LLM:'使用 browser.search 工具搜索 "Model Context Protocol 定义"',LLM将通过客户端调用该服务器执行搜索并获取结果。

信息

分类

网页与API