mcpField
P
Puppeteer MCP

Puppeteer MCP

本地服务
github.com/iatsiuk浏览器自动化042 周前更新

关于 Puppeteer MCP

Puppeteer MCP 是面向开发者和编码 Agent 的浏览器自动化 MCP 服务。它通过单个 `execute` 工具运行自定义 JavaScript,并提供 Puppeteer Browser API 访问和可复用会话。

主要功能

  1. 01通过单个 `execute` 工具运行 JavaScript
  2. 02访问 Puppeteer Browser API
  3. 03跨调用复用浏览器会话
  4. 04配置无头模式和视口
  5. 05向 Chrome 传递自定义标志

适用场景

  1. 01自动执行多步骤浏览器工作流
  2. 02抓取网页内容
  3. 03使用 Puppeteer 测试 Web 应用

MCP 相关

它向 MCP 客户端提供 `execute` 工具,在 Node.js VM 中运行可访问 `browser` 全局对象的 JavaScript。该 VM 并非安全沙箱,项目面向可信的本地开发。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"pptr": {
"command": "npx",
"args": [
"-y",
"pptr-mcp"
]
}
}
}
启动命令npx -y pptr-mcp

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

安装包
npmpptr-mcp

工具

1

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

参数类型必填说明
codestring是要执行的 JavaScript 代码。返回可序列化为 JSON 的数据
persistentboolean否在多次调用之间复用浏览器配置文件;false 表示每次调用创建隔离的配置文件

详细介绍

pptr-mcp

通过 Puppeteer 实现浏览器自动化的 MCP 服务。与其他提供固定工具(导航、点击、截图)的浏览器 MCP 服务不同,此服务可执行任意 JavaScript 代码,并直接访问 Puppeteer Browser 实例。

主要区别

大多数浏览器 MCP 服务都提供有限的预定义操作。这种方式在处理复杂工作流时需要多次往返,也无法处理边缘情况。

pptr-mcp 采用了不同的方式:它提供一个 execute 工具,可在 Node.js VM 中运行你的 JavaScript 代码,并提供全局变量 browser。你可以直接编写 Puppeteer 代码,在一次调用中访问完整 API。

Traditional MCP (5 round-trips)         pptr-mcp (1 round-trip)
================================        ================================

  Agent           Server                  Agent           Server
    |                |                      |                |
    |-- navigate --->|                      |-- execute ---->|
    |<-- ok ---------|                      |                |
    |                |                      |   +------------------------+
    |-- waitFor ---->|                      |   | const page = await     |
    |<-- ok ---------|                      |   |   browser.newPage();   |
    |                |                      |   | await page.goto(url);  |
    |-- click ------>|                      |   | await page.click(s);   |
    |<-- ok ---------|                      |   | await page.type(i, t); |
    |                |                      |   | return await           |
    |-- type ------->|                      |   |   page.screenshot();   |
    |<-- ok ---------|                      |   +------------------------+
    |                |                      |                |
    |-- screenshot ->|                      |<-- result -----|
    |<-- image ------|                      |                |
    |                |                      |                |

要求

  • Node.js >= 20

安装

npm install -g pptr-mcp

MCP 配置

添加到你的 MCP 客户端配置中(例如 Claude Desktop):

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["pptr-mcp"]
    }
  }
}

使用 CLI 选项:

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["pptr-mcp", "--no-headless", "--viewport=1080p"]
    }
  }
}

使用自定义 Chrome 标志(位于 -- 之后):

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": [
        "pptr-mcp",
        "--viewport=1280x720",
        "--",
        "--proxy-server=http://proxy:8080"
      ]
    }
  }
}

CLI 选项

选项描述
--no-headless显示浏览器窗口运行
--viewport=VALUE设置视口大小(例如 1920x1080 或 1080p)
--help, -h显示帮助
-- [args]将剩余参数传递给 Chrome

-- 之前的未知选项也会传递给 Chrome。

Claude Code 插件

安装为 Claude Code 插件:

/plugin marketplace add iatsiuk/pptr-mcp
/plugin install pptr-mcp@pptr-mcp

环境变量

变量描述
CHROME_PATHChrome 可执行文件的路径
PUPPETEER_EXECUTABLE_PATHCHROME_PATH 的替代项
PUPPETEER_CACHE_DIR浏览器下载缓存目录
PPTR_MCP_TIMEOUT执行超时时间,单位为毫秒(默认值:30000)

工具:execute

执行可访问 Puppeteer 浏览器的 JavaScript 代码。

参数
名称类型默认值描述
codestring必填要执行的 JavaScript 代码
persistentbooleantrue在多次调用之间复用浏览器会话

示例

禁用无头模式

执行期间显示浏览器窗口:

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["pptr-mcp", "--no-headless"]
    }
  }
}
自定义 Chrome 配置目录

使用你自己的 Chrome 配置,其中保存了登录信息和 Cookie:

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["pptr-mcp", "--", "--user-data-dir=/path/to/profile"]
    }
  }
}
使用系统 Chrome,而非下载的版本

默认情况下,pptr-mcp 会下载 Chrome for Testing,这是一个针对捆绑的 Puppeteer 优化并经过测试的版本。若要改用系统 Chrome:

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["pptr-mcp"],
      "env": {
        "CHROME_PATH": "/path/to/chrome"
      }
    }
  }
}

安全性

此服务专为使用大模型助手(Claude Code、Cursor 等)的可信本地开发而设计。执行的代码由你请求的大模型提供。

这意味着
  • 不是沙箱:Node.js VM 是为方便使用而隔离代码,并非出于安全目的设计。它不适用于运行不可信代码。
  • 完全控制浏览器:执行的代码可以导航到任意 URL、读取页面内容、截取屏幕截图并与 Web 应用交互。
  • Chrome 在无沙箱模式下运行:为兼容 Docker/容器,会使用 --no-sandbox 标志。
  • 持久会话:使用 persistent: true(默认值)时,Cookie 和浏览器状态会在多次调用之间保留。若要隔离,请使用 persistent: false。
不适用于
  • 多租户或共享服务部署
  • 执行来自外部来源的不可信代码
  • 构建接受任意用户输入的 Web 服务

许可证

WTFPL

评论

支持 Markdown

第一次接触 MCP?

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

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