项目简介
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进行无头浏览器渲染,确保获取完整的页面内容。
安装步骤
- 克隆仓库:
git clone https://github.com/ineersa/browser-mcp.git - 进入目录:
cd browser-mcp - 安装Composer依赖:
composer install - 生成可执行文件 (可选): 运行 './prepare_binary.sh' 脚本可以生成单个二进制文件,便于部署。这需要先安装 'box-project/box'。你也可以直接从项目的Releases页面下载预编译的二进制文件。
- 配置环境变量: 在项目的 '.env' 或 '.env.local' 文件中设置必要的环境变量,例如:
如果启用 'USE_PUPPETEER=true',你需要安装Node.js 18+,并在项目根目录运行以下命令安装Puppeteer及其相关依赖: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)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