mcpField
B
Browser Use Mcp Server

Browser Use Mcp Server

本地服务
github.com/bytedance浏览器自动化39.4k3 周前更新

关于 Browser Use Mcp Server

Browser Use MCP Server 是基于 Puppeteer 的轻量级浏览器自动化 MCP 服务。它通过结构化的无障碍快照让 LLM 操作网页,无需依赖截图或视觉模型。也可选择开启视觉模式处理复杂界面。

主要功能

  1. 01基于无障碍树的结构化页面操作
  2. 02可选的视觉模式处理复杂布局
  3. 03通过 HTTP 请求头配置视口与 User-Agent
  4. 04支持 stdio、SSE 与 Streamable HTTP 传输
  5. 05支持本地、远程浏览器及 CDP 端点

适用场景

  1. 01让 LLM 在网页上完成点击、填写表单等操作
  2. 02抓取页面文本、链接或截图用于分析
  3. 03在 VNC 虚拟显示环境中运行远程浏览器自动化

MCP 相关

该服务以 MCP 服务形式提供浏览器工具,如 browser_navigate、browser_click 和 browser_screenshot,以及 console://logs、screenshot:// 等资源。MCP 客户端可通过 stdio 或远程端点连接它。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"browser": {
"command": "npx",
"args": [
"-y",
"@agent-infra/mcp-server-browser"
],
"env": {
"DISPLAY": "<DISPLAY>"
}
}
}
}
启动命令npx -y @agent-infra/mcp-server-browser
需要配置的环境变量
DISPLAYDISPLAY environment variable for browser rendering

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@agent-infra/mcp-server-browserlatest

工具

21

收录的工具列表 · 更新于 3 周前

参数类型必填说明
urlstring是

详细介绍

Browser Use MCP 服务

NPM Downloads smithery badge codecov

Install MCP Server Install in VS Code Install in VS Code Insiders

一款快速、轻量的 Model Context Protocol(MCP)服务,通过 Puppeteer 的结构化辅助功能数据,为大模型提供浏览器自动化能力;支持可选视觉模式,可进行复杂视觉理解,并提供灵活的跨平台配置。

README 配图

主要功能
  • ⚡ 快速轻量。使用 Puppeteer 的标签索引,而非基于像素的输入和辅助功能 DOM 树。
  • 👁️ 支持视觉模式。当结构化数据不足以应对复杂布局和视觉元素时,可选用视觉理解功能。
  • 🤖 针对大模型优化。无需视觉模型,完全基于结构化数据运行,减少上下文,从而降低上下文令牌用量。
  • 🧩 灵活的运行时配置。可通过 HTTP 标头在运行时自定义视口大小、坐标系比例因子和 User-Agent。
  • 🌐 跨平台且可扩展。支持远程和本地浏览器,并可使用自定义浏览器引擎。
要求
  • Node.js 18 或更高版本
  • VS Code、Cursor、Windsurf、Claude Desktop 或其他 MCP 客户端
开始使用
本地(Stdio)

首先,使用你的客户端安装 Browser MCP 服务。典型配置如下:

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
在 VS Code 中安装

你也可以使用 VS Code CLI 安装 Browser MCP 服务:

# For VS Code
code --add-mcp '{"name":"browser","command":"npx","args":["@agent-infra/mcp-server-browser@latest"]}'

安装后,即可在 VS Code 中通过 GitHub Copilot Agent 使用 Browser MCP 服务。

在 Cursor 中安装

前往 Cursor Settings -> MCP -> Add new MCP Server。名称可自定义,类型选择 command,命令使用 npx @agent-infra/mcp-server-browser。你也可以点击 Edit 来检查配置或添加命令参数。

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
在 Windsurf 中安装

请参阅 Windsurf MCP 文档。使用以下配置:

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
在 Claude Desktop 中安装

请参阅 MCP 安装指南,并使用以下配置:

{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": [
        "@agent-infra/mcp-server-browser@latest"
      ]
    }
  }
}
#### 远程(SSE / Streamable HTTP)

同时,使用 --port $your_port 参数启动浏览器 MCP,即可将其转换为 SSE 和 Streamable HTTP 服务。

# normal run remote mcp server
npx @agent-infra/mcp-server-browser --port 8089

# run with DISPLAY environment for VNC or other virtual display
DISPLAY=:0 npx @agent-infra/mcp-server-browser --port 8089

你可以使用以下两个 MCP 服务远程端点之一:

  • Streamable HTTP(推荐):http://127.0.0.1::8089/mcp
  • SSE:http://127.0.0.1::8089/sse

然后在 MCP 客户端配置中,将 url 设置为 SSE 端点:

{
  "mcpServers": {
    "browser": {
      "url": "http://127.0.0.1::8089/sse"
    }
  }
}

将 url 设置为 Streamable HTTP 端点:

{
  "mcpServers": {
    "browser": {
      "type": "streamable-http", // If there is MCP Client support
      "url": "http://127.0.0.1::8089/mcp"
    }
  }
}
内存中调用

如果你的 MCP 客户端基于 JavaScript / TypeScript 开发,可以直接使用进程内调用,避免要求用户安装命令行界面才能使用 Browser MCP。

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';

// type: module project usage
import { createServer } from '@agent-infra/mcp-server-browser';
// commonjs project usage
// const { createServer } = await import('@agent-infra/mcp-server-browser')

const client = new Client(
  {
    name: 'test browser client',
    version: '1.0',
  },
  {
    capabilities: {},
  },
);

const server = createServer();
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();

await Promise.all([
  client.connect(clientTransport),
  server.connect(serverTransport),
]);

// list tools
const result = await client.listTools();
console.log(result);

// call tool
const toolResult = await client.callTool({
  name: 'browser_navigate',
  arguments: {
    url: 'https://www.google.com',
  },
});
console.log(toolResult);
配置

Browser MCP 服务支持以下参数。你可以将它们作为 "args" 列表的一部分,填入上述 JSON 配置中:

> npx @agent-infra/mcp-server-browser@latest -h
  -V, --version              output the version number
  --browser <browser>        browser or chrome channel to use, possible values: chrome, edge, firefox.
  --cdp-endpoint <endpoint>  CDP endpoint to connect to, for example "http://127.0.0.1:9222/json/version"
  --ws-endpoint <endpoint>   WebSocket endpoint to connect to, for example "ws://127.0.0.1:9222/devtools/browser/{id}"
  --executable-path <path>   path to the browser executable.
  --headless                 run browser in headless mode, headed by default
  --host <host>              host to bind server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
  --port <port>              port to listen on for SSE and HTTP transport.
  --proxy-bypass <bypass>    comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com"
  --proxy-server <proxy>     specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"
  --user-agent <ua string>   specify user agent string
  --user-data-dir <path>     path to the user data directory.
  --viewport-size <size>     specify browser viewport size in pixels, for example "1280, 720"
  --output-dir <path>        path to the directory for output files
  --vision                   Run server that uses screenshots (Aria snapshots are used by default)
  -h, --help                 display help for command
运行时配置

浏览器运行时需要配置 Viewport Size、Vision Model Coordinate Factors 和 User Agent。这些配置可以通过对应的 HTTP 标头传递:

标头说明
x-viewport-size浏览器视口大小,格式为:以逗号分隔的 width,height
x-vision-factors视觉模型坐标系因子,格式为:以逗号分隔的 x_factor,y_factor
x-user-agentUser Agent 字符串;若未指定,则默认为系统 User Agent

注意: 标头名称不区分大小写。

示例:

x-viewport-size: 1920,1080
x-vision-factors: 1.0,1.0
x-user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Docker

我们已将 VNC 和 MCP 的部署统一到单个 URL 端点下,Dockerfile 和 DockerHub 镜像也将一同发布!视频

API
工具
工具名称描述参数
browser_click点击页面上的元素。使用此工具前,请先使用 browser_get_clickable_elements 获取元素的索引,但不要多次调用 browser_get_clickable_elementsindex(number,可选):要点击的元素索引
browser_close任务完成且不再需要浏览器时关闭浏览器
browser_close_tab关闭当前标签页
browser_evaluate在浏览器控制台中执行 JavaScriptscript(string,必需):要执行的 JavaScript 代码,() => { /* code */ }
browser_form_input_fill填写输入框。使用此工具前,必须提供“index”或“selector”之一selector(string,可选):输入框的 CSS 选择器,优先使用 index;如果未提供 index,则使用 selector
index(number,可选):要填写的元素索引
value(string,必需):要填写的值
clear(boolean,可选):是否先清除现有文本
browser_get_clickable_elements获取当前页面上可点击、可悬停或可选择的元素,不要多次调用此工具
browser_get_download_list获取已下载文件列表
browser_get_markdown获取当前页面的 Markdown 内容
browser_get_text获取当前页面的文本内容
browser_go_back返回上一页
browser_go_forward前进到下一页
browser_hover将鼠标悬停在页面上的元素上。必须提供“index”或“selector”之一index(number,可选):要悬停的元素索引
selector(string,可选):要悬停的元素的 CSS 选择器
browser_navigate导航至 URLurl(string,必需):
browser_new_tab打开新标签页url(string,必需):要在新标签页中打开的 URL
browser_press_key按下键盘上的按键key(string,必需):要按下的按键名称或要生成的字符,例如 Enter、Tab、Escape、Backspace、Delete、Insert、F1、F2、F3、F4、F5、F6、F7、F8、F9、F10、F11、F12、ArrowLeft、ArrowRight、ArrowUp、ArrowDown、PageUp、PageDown、Home、End、ShiftLeft、ShiftRight、ControlLeft、ControlRight、AltLeft、AltRight、MetaLeft、MetaRight、CapsLock、PrintScreen、ScrollLock、Pause、ContextMenu
browser_read_links获取当前页面上的所有链接
browser_screenshot截取当前页面或特定元素的屏幕截图name(string,可选):屏幕截图名称
selector(string,可选):要截取屏幕截图的元素的 CSS 选择器
index(number,可选):要截取屏幕截图的元素索引
width(number,可选):像素宽度(默认值:视口宽度)
height(number,可选):像素高度(默认值:视口高度)
fullPage(boolean,可选):是否截取整页屏幕截图(默认值:false)
highlight(boolean,可选):是否突出显示该元素
browser_scroll滚动页面amount(number,可选):滚动像素数(正数向下滚动,负数向上滚动);如果未提供 amount,则滚动到页面底部
browser_select使用索引选择页面上的元素。必须提供“index”或“selector”之一index(number,可选):要选择的元素索引
selector(string,可选):要选择的元素的 CSS 选择器
value(string,必需):要选择的值
browser_switch_tab切换到指定标签页index(number,必需):要切换到的标签页索引
browser_tab_list获取标签页列表
browser_vision_screen_capture为视觉模式截取当前页面的屏幕截图
browser_vision_screen_click使用视觉和屏幕快照在页面上单击鼠标左键。调用此工具前,应先调用一次 browser_vision_screen_capture;如果失败,则回退使用 browser_clickfactors(array,可选):视觉模型坐标系的缩放因子 [width_factor, height_factor],用于坐标空间归一化。转换公式:x = (x_model * screen_width * width_factor) / width_factor y = (y_model * screen_height * height_factor) / height_factor,其中 x_model、y_model 是归一化的模型输出坐标(0-1),screen_width/height 是屏幕尺寸,width_factor/height_factor 是量化因子。如果因子未知,请留空。大多数模型不需要此参数。
x(number,必需):X 像素坐标
y(number,必需):Y 像素坐标
资源
资源名称URI 模式描述MIME 类型
浏览器控制台日志console://logstext/plain
浏览器下载内容download://{name}根据文件扩展名自动识别
浏览器截图screenshot://{name}根据文件扩展名自动识别
开发

访问 http://127.0.0.1:6274/:

npm run dev
扩展 CLI 入口
#!/usr/bin/env node

const {
  BaseLogger,
  setConfig,
  addMiddleware,
} = require('@agent-infra/mcp-server-browser/request-context');

class CustomLogger extends BaseLogger {
  info(...args) {
    console.log('custom');
    console.log(...args);
  }
}

addMiddleware((req, res, next) => {
  console.log('req', req.headers);
  next();
});

setConfig({
  logger: new CustomLogger(),
});

// start server
require('@agent-infra/mcp-server-browser/index');

评论

支持 Markdown

第一次接触 MCP?

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

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