Token导航 LogoToken导航TokenDH.com
Patchright MCP logo
浏览器工具stdio官方级别未说明来源级核验

Patchright MCP

MCP Server

patchright-mcp@latest

Patchright MCP是一个使用Patchright提供浏览器自动化能力的模型上下文协议服务器,允许LLMs通过结构化无障碍快照与网页交互。

工具数

34

提示词数

0

GitHub Stars

18

资源数

0
浏览器自动化TypeScriptVS CodeLLM交互Claude DesktopClaudeCursorWindsurfClineVS CodeVS Code Insiders

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Ikaleio

提供方

Ikaleio

最后核验

2026/5/17 20:20

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx patchright-mcp@latest --config path/to/config.json

详细介绍

Patchright MCP

注:这个项目是上游剧作家mcp的一个小补丁。它主要将Playwright换成Patchright,并保持MCP API表面不变。

一种模型上下文协议(MCP)服务器,使用以下方式提供浏览器自动化功能 Patchright此服务器使LLM能够通过结构化的可访问性快照与网页交互,从而绕过了对屏幕截图或视觉优化模型的需要。

Patchright MCP与Patchright CLI

此软件包为Patchright提供了MCP接口。如果您正在使用 编程代理,您可能会从使用中受益 CLI+技能 相反。

  • 命令行界面:现代 编码剂 越来越青睐基于CLI的工作流,因为CLI调用更具令牌效率:它们避免将大型工具模式和冗长的可访问性树加载到模型上下文中,允许代理通过简洁、专门构建的命令进行操作。这使得CLI+SKILL更适合高通量编码代理,这些代理必须在有限的上下文窗口内平衡浏览器自动化与大型代码库、测试和推理。

更多了解 带技巧的剧作家CLI.

  • 主控程序:MCP仍然适用于受益于持久状态、丰富内省和页面结构迭代推理的专用代理循环,例如探索性自动化、自愈测试或长时间运行的自主工作流,在这些工作流中,维护连续的浏览器上下文重于令牌成本问题。

主要特点

  • 快速轻便。使用Patchright的可访问性树,而不是基于像素的输入。
  • LLM友好无需视觉模型,仅基于结构化数据进行操作。
  • 确定性工具应用避免了基于屏幕截图的方法中常见的歧义。

需求

  • Node.js 18或更新版本
  • VS Code、Cursor、Windsurf、Claude Desktop、Goose或任何其他MCP客户端

入门

首先,在您的客户端上安装Patchright MCP服务器。

标准配置 适用于大多数工具:

{
  "mcpServers": {
    "patchright": {
      "command": "npx",
      "args": [
        "patchright-mcp@latest"
      ]
    }
  }
}

Amp

通过Amp VS Code扩展设置屏幕或更新您的settings.json文件进行添加:

"amp.mcpServers": {
  "patchright": {
    "command": "npx",
    "args": [
      "patchright-mcp@latest"
    ]
  }
}

Amp CLI设置:

通过添加 amp mcp add命令如下

amp mcp add patchright -- npx patchright-mcp@latest

Antigravity

通过Antigravity设置或更新配置文件添加:

{
  "mcpServers": {
    "patchright": {
      "command": "npx",
      "args": [
        "patchright-mcp@latest"
      ]
    }
  }
}

Claude Code

使用Claude Code CLI添加Patchright MCP服务器:

claude mcp add patchright npx patchright-mcp@latest

Claude Desktop

遵循MCP安装 指南,使用上面的标准配置。

Cline

按照本节中的说明进行操作 配置MCP服务器

示例:本地设置

将以下内容添加到您的 cline_mcp_settings.json 文件:

{
  "mcpServers": {
    "patchright": {
      "type": "stdio",
      "command": "npx",
      "timeout": 30,
      "args": [
        "-y",
        "patchright-mcp@latest"
      ],
      "disabled": false
    }
  }
}

Codex

使用Codex CLI添加Patchright MCP服务器:

codex mcp add patchright npx "patchright-mcp@latest"

或者,创建或编辑配置文件 ~/.codex/config.toml 并添加:

[mcp_servers.patchright]
command = "npx"
args = ["patchright-mcp@latest"]

有关更多信息,请参阅 食品法典委员会MCP文件.

Copilot

使用Copilot CLI以交互方式添加Patchright MCP服务器:

/mcp add

或者,创建或编辑配置文件 ~/.copilot/mcp-config.json 并添加:

{
  "mcpServers": {
    "patchright": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "patchright-mcp@latest"
      ]
    }
  }
}

有关更多信息,请参阅 Copilot CLI文档.

Cursor

单击按钮安装:

[](https://cursor.com/en/install-mcp?name=Patchright&config=eyJjb21tYW5kIjoibnB4IHBhdGNocmlnaHQtbWNwQGxhdGVzdCJ9)

或手动安装:

首选 Cursor Settings -> MCP -> Add new MCP Server.按你的喜好命名,使用 command 使用命令键入 npx patchright-mcp@latest。您还可以通过单击来验证配置或添加类似命令的参数 Edit.

Factory

使用Factory CLI添加Patchright MCP服务器:

droid mcp add playwright "npx patchright-mcp@latest"

或者,键入 /mcp 在Factory droid中打开用于管理MCP服务器的交互式UI。

有关更多信息,请参阅 工厂MCP文件.

Gemini CLI

遵循MCP安装 指南,使用上面的标准配置。

Goose

单击按钮安装:

![Install in Goose](https://block.github.io/goose/extension?cmd=npx&arg=%40playwright%2Fmcp%40latest&id=patchright&name=Playwright&description=Interact%20with%20web%20pages%20through%20structured%20accessibility%20snapshots%20using%20Playwright)

或手动安装:

首选 Advanced settings -> Extensions -> Add custom extension.按你的喜好命名,使用类型 STDIO,并设置 commandnpx patchright-mcp。单击“添加扩展名”。

Kiro

关注MCP服务器 文档例如,在 .kiro/settings/mcp.json:

{
  "mcpServers": {
    "patchright": {
      "command": "npx",
      "args": [
        "patchright-mcp@latest"
      ]
    }
  }
}

LM Studio

单击按钮安装:

![Add MCP Server playwright to LM Studio](https://lmstudio.ai/install-mcp?name=patchright&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAcGxheXdyaWdodC9tY3BAbGF0ZXN0Il19)

或手动安装:

首选 Program 在右侧边栏-> Install -> Edit mcp.json.使用上面的标准配置。

opencode

关注MCP服务器 文档例如,在 ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "patchright": {
      "type": "local",
      "command": [
        "npx",
        "patchright-mcp@latest"
      ],
      "enabled": true
    }
  }
}

Qodo Gen

打开 Qodo Gen VSCode或IntelliJ中的聊天面板→ 连接更多工具→ + 添加新MCP→ 粘贴上面的标准配置。

点击 保存.

VS Code

单击按钮安装:

或手动安装:

遵循MCP安装 指南,使用上面的标准配置。您还可以使用VS Code CLI安装Patchright MCP服务器:

# For VS Code
code --add-mcp '{"name":"patchright","command":"npx","args":["patchright-mcp@latest"]}'

安装后,Patchright MCP服务器将可用于VS Code中的GitHub Copilot代理。

Warp

首选 Settings -> AI -> Manage MCP Servers -> + Add添加MCP服务器.使用上面的标准配置。

或者,使用斜线命令 /add-mcp 在Warp提示符下,粘贴上面的标准配置:

{
  "mcpServers": {
    "patchright": {
      "command": "npx",
      "args": [
        "patchright-mcp@latest"
      ]
    }
  }
}

Windsurf

关注Windsurf MCP 文档.使用上面的标准配置。

配置

Patchright MCP服务器支持以下参数。它们可以在上面的JSON配置中提供,作为 "args" 列表:

选项描述
--允许的主机\允许此服务器提供服务的主机列表,以逗号分隔。默认为服务器绑定到的主机。传递“\*”可禁用主机检查。
*环境* PLAYWRIGHT_MCP_ALLOWED_HOSTS
--允许的来源以分号分隔的可信来源列表,以允许浏览器请求。默认设置为允许所有。重要提示: *不* 作为安全边界 *不* 影响重定向。
*环境* PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--允许不受限制的文件访问允许访问工作区根目录之外的文件。还允许不受限制地访问file://URLs。默认情况下,对文件系统的访问仅限于工作区根目录(如果没有配置根目录,则仅限于cwd),并且阻止导航到file://URL。
*环境* PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--来源受阻以分号分隔的源列表,以阻止浏览器请求。在分配列表之前评估阻止列表。如果不使用allowlist,则仍然允许与阻止列表不匹配的请求。重要提示: *不* 作为安全边界 *不* 影响重定向。
*环境* PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--阻止服务人员阻止服务人员
*环境* PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--浏览器
要使用的浏览器或chrome频道,可能的值:chrome、firefox、webkit、msedge。
*环境* PLAYWRIGHT_MCP_BROWSER
--大写以逗号分隔的要启用的附加功能列表,可能的值:vision、pdf、devtools。
*环境* PLAYWRIGHT_MCP_CAPS
--cdp端点要连接的CDP终结点。
*环境* PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp header\要与连接请求一起发送的CDP标头,可以指定多个。
*环境* PLAYWRIGHT_MCP_CDP_HEADER
--cdp超时连接到CDP终结点的超时(毫秒),默认为30000ms
*环境* PLAYWRIGHT_MCP_CDP_TIMEOUT
--编码指定用于代码生成的语言,可能的值:“typescript”、“none”。默认值为“typescript”。
*环境* PLAYWRIGHT_MCP_CODEGEN
--config
配置文件的路径。
*环境* PLAYWRIGHT_MCP_CONFIG
--控制台级别要返回的控制台消息级别:“错误”、“警告”、“信息”、“调试”。每个级别都包含更严重级别的消息。
*环境* PLAYWRIGHT_MCP_CONSOLE_LEVEL
--设备要模拟的设备,例如:“iPhone 15”
*环境* PLAYWRIGHT_MCP_DEVICE
--可执行路径
浏览器可执行文件的路径。
*环境* PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extension连接到正在运行的浏览器实例(仅限Edge/Chrome)。需要安装“Patchright MCP Bridge”浏览器扩展。
*环境* PLAYWRIGHT_MCP_EXTENSION
--授予权限\要授予浏览器上下文的权限列表,例如“地理位置”、“剪贴板读取”、“剪切板写入”。
*环境* PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headless在默认情况下以headless模式运行浏览器
*环境* PLAYWRIGHT_MCP_HEADLESS
--主机将服务器绑定到的主机。默认值为localhost。使用0.0.0.0绑定到所有接口。
*环境* PLAYWRIGHT_MCP_HOST
--忽略https错误忽略https错误
*环境* PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init页面\
要在Patchright页面对象上求值的TypeScript文件的路径
*环境* PLAYWRIGHT_MCP_INIT_PAGE
--init脚本\
作为初始化脚本添加的JavaScript文件的路径。脚本将在每个页面的任何脚本之前进行评估。可以多次指定。
*环境* PLAYWRIGHT_MCP_INIT_SCRIPT
--isolated将浏览器配置文件保存在内存中,不要将其保存到磁盘。
*环境* PLAYWRIGHT_MCP_ISOLATED
--图像响应是否向客户端发送图像响应。可以是“允许”或“省略”,默认为“允许”。
*环境* PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no sandbox禁用通常沙盒的所有进程类型的沙盒。
*环境* PLAYWRIGHT_MCP_NO_SANDBOX
--输出目录
输出文件目录的路径。
*环境* PLAYWRIGHT_MCP_OUTPUT_DIR
--输出模式是否将快照、控制台消息、网络日志保存到文件或标准输出。可以是“file”或“stdout”。默认值为“stdout”。
*环境* PLAYWRIGHT_MCP_OUTPUT_MODE
--港口
港口监听SSE运输。
*环境* PLAYWRIGHT_MCP_PORT
--代理绕过逗号分隔的域可以绕过代理,例如“.com、chromium.org、.domain.com”
*环境* PLAYWRIGHT_MCP_PROXY_BYPASS
--代理服务器
指定代理服务器,例如“http://myproxy:3128“或”socks5://myproxy:8080“
*环境* PLAYWRIGHT_MCP_PROXY_SERVER
--sandbox为通常不沙盒的所有进程类型启用沙盒。
*环境* PLAYWRIGHT_MCP_SANDBOX
--save session是否将Patchright MCP会话保存到输出目录中。
*环境* PLAYWRIGHT_MCP_SAVE_SESSION
--save trace是否将会话的Patchright trace保存到输出目录中。
*环境* PLAYWRIGHT_MCP_SAVE_TRACE
--保存视频是否将会话视频保存到输出目录中。例如“--保存视频=800x600”
*环境* PLAYWRIGHT_MCP_SAVE_VIDEO
--秘密
包含dotenv格式机密文件的路径
*环境* PLAYWRIGHT_MCP_SECRETS
--共享浏览器上下文在所有连接的HTTP客户端之间重用相同的浏览器上下文。
*环境* PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--快照模式在为响应拍摄快照时,指定要使用的模式。可以是“增量”、“完全”或“无”。默认值为增量。
*环境* PLAYWRIGHT_MCP_SNAPSHOT_MODE
--存储状态
隔离会话的存储状态文件的路径。
*环境* PLAYWRIGHT_MCP_STORAGE_STATE
--测试id属性指定用于测试id的属性,默认为“data-testid”
*环境* PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--超时操作以毫秒为单位指定操作超时,默认值为5000ms
*环境* PLAYWRIGHT_MCP_TIMEOUT_ACTION
--超时导航以毫秒为单位指定导航超时,默认值为60000ms
*环境* PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--用户代理指定用户代理字符串
*环境* PLAYWRIGHT_MCP_USER_AGENT
--用户数据目录
用户数据目录的路径。如果未指定,将创建一个临时目录。
*环境* PLAYWRIGHT_MCP_USER_DATA_DIR
--视口大小以像素为单位指定浏览器视口大小,例如“1280x720”
*环境* PLAYWRIGHT_MCP_VIEWPORT_SIZE

用户资料

您可以像常规浏览器(默认)一样,在孤立的环境中运行具有持久配置文件的Patchright MCP进行测试会话,或者使用浏览器扩展连接到现有的浏览器。

持久配置文件

所有登录信息都将存储在持久配置文件中,如果您想清除脱机状态,可以在会话之间删除它。 持久配置文件位于以下位置,您可以用 --user-data-dir 争论。

# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-profile

# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-profile

# Linux
- ~/.cache/ms-playwright/mcp-{channel}-profile

孤立的

在隔离模式下,每个会话都在隔离配置文件中启动。每次您要求MCP关闭浏览器时, 会话关闭,此会话的所有存储状态都丢失。您可以提供初始存储状态 通过配置到浏览器 contextOptions 或通过 --storage-state 争论。了解有关存储的更多信息 状态 这里.

{
  "mcpServers": {
    "patchright": {
      "command": "npx",
      "args": [
        "patchright-mcp@latest",
        "--isolated",
        "--storage-state={path/to/storage.json}"
      ]
    }
  }
}

浏览器扩展

Patchright MCP Chrome扩展程序允许您连接到现有的浏览器选项卡,并利用您的登录会话和浏览器状态。看 包/扩展/README.md 有关安装和设置说明。

初始状态

有多种方法可以向浏览器上下文或页面提供初始状态。

对于存储状态,您可以:

  • 使用以下命令从用户数据目录开始 --user-data-dir 争论。这将在会话之间保留所有浏览器数据。
  • 使用以下命令从存储状态文件开始 --storage-state 争论。这将把Cookie和本地存储从文件加载到隔离的浏览器上下文中。

对于页面状态,您可以使用:

  • --init-page 指向将在Patchright页面对象上评估的TypeScript文件。这允许您运行任意代码来设置页面。
// init-page.ts
export default async ({ page }) => {
  await page.context().grantPermissions(['geolocation']);
  await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
  await page.setViewportSize({ width: 1280, height: 720 });
};
  • --init-script 指向将作为初始化脚本添加的JavaScript文件。脚本将在每个页面的任何脚本之前进行评估。

这对于覆盖浏览器API或设置环境非常有用。

// init-script.js
window.isPatchrightMCP = true;

配置文件

Patchright MCP服务器可以使用JSON配置文件进行配置。您可以指定配置文件 使用 --config 命令行选项:

npx patchright-mcp@latest --config path/to/config.json

Configuration file schema

{
  /**
   * The browser to use.
   */
  browser?: {
    /**
     * The type of browser to use.
     */
    browserName?: 'chromium' | 'firefox' | 'webkit';

    /**
     * Keep the browser profile in memory, do not save it to disk.
     */
    isolated?: boolean;

    /**
     * Path to a user data directory for browser profile persistence.
     * Temporary directory is created by default.
     */
    userDataDir?: string;

    /**
     * Launch options passed to
     * @see https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/tree/main/docs/src/api/class-browsertype.md#browsertypelaunchpersistentcontextuserdata-dir-options
     *
     * This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
     */
    launchOptions?: playwright.LaunchOptions;

    /**
     * Context options for the browser context.
     *
     * This is useful for settings options like `viewport`.
     */
    contextOptions?: playwright.BrowserContextOptions;

    /**
     * Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
     */
    cdpEndpoint?: string;

    /**
     * CDP headers to send with the connect request.
     */
    cdpHeaders?: Record;

    /**
     * Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
     */
    cdpTimeout?: number;

    /**
     * Remote endpoint to connect to an existing Patchright server.
     */
    remoteEndpoint?: string;

    /**
     * Paths to TypeScript files to add as initialization scripts for Patchright page.
     */
    initPage?: string[];

    /**
     * Paths to JavaScript files to add as initialization scripts.
     * The scripts will be evaluated in every page before any of the page's scripts.
     */
    initScript?: string[];
  },

  /**
   * Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
   * config is ignored.
   * Requires the "Patchright MCP Bridge" browser extension to be installed.
   */
  extension?: boolean;

  server?: {
    /**
     * The port to listen on for SSE or MCP transport.
     */
    port?: number;

    /**
     * The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
     */
    host?: string;

    /**
     * The hosts this server is allowed to serve from. Defaults to the host server is bound to.
     * This is not for CORS, but rather for the DNS rebinding protection.
     */
    allowedHosts?: string[];
  },

  /**
   * List of enabled tool capabilities. Possible values:
   *   - 'core': Core browser automation features.
   *   - 'pdf': PDF generation and manipulation.
   *   - 'vision': Coordinate-based interactions.
   *   - 'devtools': Developer tools features.
   */
  capabilities?: ToolCapability[];

  /**
   * Whether to save the Patchright session into the output directory.
   */
  saveSession?: boolean;

  /**
   * Whether to save the Patchright trace of the session into the output directory.
   */
  saveTrace?: boolean;

  /**
   * If specified, saves the Patchright video of the session into the output directory.
   */
  saveVideo?: {
    width: number;
    height: number;
  };

  /**
   * Reuse the same browser context between all connected HTTP clients.
   */
  sharedBrowserContext?: boolean;

  /**
   * Secrets are used to prevent LLM from getting sensitive data while
   * automating scenarios such as authentication.
   * Prefer the browser.contextOptions.storageState over secrets file as a more secure alternative.
   */
  secrets?: Record;

  /**
   * The directory to save output files.
   */
  outputDir?: string;

  /**
   * Whether to save snapshots, console messages, network logs and other session logs to a file or to the standard output. Defaults to "stdout".
   */
  outputMode?: 'file' | 'stdout';

  console?: {
    /**
     * The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
     */
    level?: 'error' | 'warning' | 'info' | 'debug';
  },

  network?: {
    /**
     * List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    allowedOrigins?: string[];

    /**
     * List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    blockedOrigins?: string[];
  };

  /**
   * Specify the attribute to use for test ids, defaults to "data-testid".
   */
  testIdAttribute?: string;

  timeouts?: {
    /*
     * Configures default action timeout: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
     */
    action?: number;

    /*
     * Configures default navigation timeout: https://github.com/Kaliiiiiiiiii-Vinyzu/patchright/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
     */
    navigation?: number;
  };

  /**
   * Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
   */
  imageResponses?: 'allow' | 'omit';

  snapshot?: {
    /**
     * When taking snapshots for responses, specifies the mode to use.
     */
    mode?: 'incremental' | 'full' | 'none';
  };

  /**
   * Whether to allow file uploads from anywhere on the file system.
   * By default (false), file uploads are restricted to paths within the MCP roots only.
   */
  allowUnrestrictedFileAccess?: boolean;

  /**
   * Specify the language to use for code generation.
   */
  codegen?: 'typescript' | 'none';
}

独立MCP服务器

当在无显示器的系统上或从IDE的工作进程运行带头浏览器时, 使用DISPLAY从环境中运行MCP服务器,并传递 --port 标志以启用HTTP传输。

npx patchright-mcp@latest --port 8931

然后在MCP客户端配置中,设置 url 到HTTP端点:

{
  "mcpServers": {
    "patchright": {
      "url": "http://localhost:8931/mcp"
    }
  }
}

安全

Patchright MCP是 安全边界。看 MCP安全最佳实践 以获取有关确保部署安全的指导。

Docker

注: Docker实现目前只支持无头铬。

{
  "mcpServers": {
    "patchright": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--init", "--pull=always", "patchright-mcp"]
    }
  }
}

或者,如果您更喜欢将容器作为长期服务运行,而不是让MCP客户端生成它,请使用:

docker run -d -i --rm --init --pull=always \
  --entrypoint node \
  --name patchright \
  -p 8931:8931 \
  patchright-mcp \
  cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0

服务器将侦听主机端口 8931 并且可以由任何MCP客户端访问。

你可以自己构建Docker镜像。

docker build -t patchright-mcp .

Programmatic usage

import http from 'http';

import { createConnection } from 'patchright-mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';

http.createServer(async (req, res) => {
  // ...

  // Creates a headless Patchright MCP server with SSE transport
  const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
  const transport = new SSEServerTransport('/messages', res);
  await connection.connect(transport);

  // ...
});

工具

Core automation

  • 浏览器点击

- 标题:点击 - 说明:在网页上执行点击操作 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - doubleClick (布尔值,可选):是否执行双击而不是单击 - button (字符串,可选):点击按钮,默认为左侧 - modifiers (数组,可选):按修改键 - 只读: 错误的

  • 浏览器_关闭

- 标题:关闭浏览器 - 说明:关闭页面 - 参数:无 - 只读: 错误的

  • browser_console_消息

- 标题:获取控制台消息 - 说明:返回所有控制台消息 - 参数: - level (string):要返回的控制台消息的级别。每个级别都包含更严重级别的消息。默认为“info”。 - filename (字符串,可选):用于保存控制台消息的文件名。如果未提供,消息将以文本形式返回。 - 只读:

  • browser_drag

- 标题:拖动鼠标 - 说明:在两个元素之间执行拖放操作 - 参数: - startElement (string):人类可读的源元素描述,用于获得与元素交互的权限 - startRef (string):页面快照中的精确源元素引用 - endElement (string):人类可读的目标元素描述,用于获得与元素交互的权限 - endRef (string):页面快照中的精确目标元素引用 - 只读: 错误的

  • 浏览器_评估

- 标题:评估JavaScript - 描述:在页面或元素上计算JavaScript表达式 - 参数: - function (string):()=>{/\*代码 */}或(元素)=>{/* 提供元素时的代码\*/} - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string,可选):页面快照中的精确目标元素引用 - 只读: 错误的

  • 浏览器文件上传

- 标题:上传文件 - 说明:上传一个或多个文件 - 参数: - paths (array,可选):要上传的文件的绝对路径。可以是单个文件或多个文件。如果省略,文件选择器将被取消。 - 只读: 错误的

  • browser_fill_form

- 标题:填写表格 - 说明:填写多个表单字段 - 参数: - fields (数组):要填写的字段 - 只读: 错误的

  • 浏览器处理对话框

- 标题:处理对话框 - 描述:处理对话框 - 参数: - accept (boolean):是否接受对话。 - promptText (string,可选):提示对话框中的提示文本。 - 只读: 错误的

  • 浏览器切换

- 标题:鼠标悬停 - 描述:将鼠标悬停在页面上的元素上 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - 只读: 错误的

  • 浏览器导航

- 标题:导航到URL - 描述:导航到URL - 参数: - url (string):要导航到的URL - 只读: 错误的

  • 浏览器导航返回

- 标题:返回 - 说明:返回历史记录的上一页 - 参数:无 - 只读: 错误的

  • 浏览器网络请求

- 标题:列出网络请求 - 描述:返回自加载页面以来的所有网络请求 - 参数: - includeStatic (boolean):是否包含成功的静态资源,如图像、字体、脚本等。默认为false。 - filename (字符串,可选):用于保存网络请求的文件名。如果未提供,请求将以文本形式返回。 - 只读:

  • browser_press_key

- 标题:按键 - 说明:按键盘上的一个键 - 参数: - key (string):要按的键的名称或要生成的字符,例如 ArrowLefta - 只读: 错误的

  • 浏览器大小

- 标题:调整浏览器窗口大小 - 说明:调整浏览器窗口大小 - 参数: - width (数字):浏览器窗口的宽度 - height (数字):浏览器窗口的高度 - 只读: 错误的

  • 浏览器运行代码

- 标题:运行Patchright代码 - 说明:运行Patchright代码片段 - 参数: - code (string):一个包含要执行的Patchright代码的JavaScript函数。它将通过一个参数page调用,您可以将其用于任何页面交互。例如: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); } - 只读: 错误的

  • 浏览器选择选项

- 标题:选择选项 - 说明:在下拉列表中选择一个选项 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - values (array):在下拉列表中选择的值数组。这可以是单个值或多个值。 - 只读: 错误的

  • 浏览器快照

- 标题:页面快照 - 描述:捕获当前页面的可访问性快照,这比截图更好 - 参数: - filename (string,可选):将快照保存到markdown文件,而不是在响应中返回它。 - 只读:

  • browser_take_screenshot

- 标题:截图 - 描述:截取当前页面的屏幕截图。您无法根据屏幕截图执行操作,请使用browser_snapshot进行操作。 - 参数: - type (string):截图的图像格式。默认值为png。 - filename (string,可选):保存截图的文件名。默认为 page-{timestamp}.{png|jpeg} 如果没有指定。希望相对文件名保留在输出目录中。 - element (string,可选):人类可读的元素描述,用于获得对元素进行截图的权限。如果没有提供,将对视口进行截图。如果提供了元素,也必须提供ref。 - ref (string,可选):页面快照中的精确目标元素引用。如果没有提供,将对视口进行截图。若提供了ref,则也必须提供元素。 - fullPage (boolean,可选):当为true时,会截取整个可滚动页面的屏幕截图,而不是当前可见的视口。不能与元素截图一起使用。 - 只读:

  • 浏览器类型

- 标题:键入文本 - 说明:在可编辑元素中键入文本 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - text (string):要在元素中键入的文本 - submit (布尔值,可选):是否提交输入的文本(之后按Enter键) - slowly (boolean,可选):是否一次键入一个字符。可用于触发页面中的密钥处理程序。默认情况下,一次填写整个文本。 - 只读: 错误的

  • 浏览器等待

- 标题:等待 - 描述:等待文本出现或消失或经过指定时间 - 参数: - time (数字,可选):等待时间(秒) - text (string,可选):等待的文本 - textGone (string,可选):等待消失的文本 - 只读: 错误的

Tab management

  • 浏览器标签

- 标题:管理选项卡 - 说明:列出、创建、关闭或选择浏览器选项卡。 - 参数: - action (string):要执行的操作 - index (数字,可选):选项卡索引,用于关闭/选择。如果省略关闭,则关闭当前选项卡。 - 只读: 错误的

Browser installation

  • 浏览器安装

- 标题:安装配置中指定的浏览器 - 说明:安装配置中指定的浏览器。如果您收到浏览器未安装的错误,请调用此命令。 - 参数:无 - 只读: 错误的

Coordinate-based (opt-in via --caps=vision)

  • 浏览器_主页_点击_xy

- 标题:点击 - 说明:在给定位置单击鼠标左键 - 参数: - x (数字):X坐标 - y (数字):Y坐标 - 只读: 错误的

  • 浏览器_主页_关闭

- 标题:按下鼠标 - 说明:按下鼠标 - 参数: - button (字符串,可选):要按下的按钮,默认为左侧 - 只读: 错误的

  • 浏览器_主页_拖动_xy

- 标题:拖动鼠标 - 说明:将鼠标左键拖动到给定位置 - 参数: - startX (数字):开始X坐标 - startY (数字):开始Y坐标 - endX (数字):结束X坐标 - endY (数字):结束Y坐标 - 只读: 错误的

  • 浏览器_家庭_移动_xy

- 标题:移动鼠标 - 说明:将鼠标移动到给定位置 - 参数: - x (数字):X坐标 - y (数字):Y坐标 - 只读: 错误的

  • 浏览器主页

- 标题:向上按鼠标 - 说明:向上按鼠标 - 参数: - button (字符串,可选):要按下的按钮,默认为左侧 - 只读: 错误的

  • 浏览器主控轮

- 标题:滚动鼠标滚轮 - 说明:滚动鼠标滚轮 - 参数: - deltaX (数字):X增量 - deltaY (数字):Y增量 - 只读: 错误的

PDF generation (opt-in via --caps=pdf)

  • 浏览器_pdf_save

- 标题:另存为PDF - 说明:将页面另存为PDF - 参数: - filename (字符串,可选):用于保存pdf的文件名。默认为 page-{timestamp}.pdf 如果没有指定。希望相对文件名保留在输出目录中。 - 只读:

Test assertions (opt-in via --caps=testing)

  • 浏览器生成定位器

- 标题:为元素创建定位器 - 描述:为测试中使用的给定元素生成定位器 - 参数: - element (string,可选):人类可读的元素描述,用于获得与元素交互的权限 - ref (string):页面快照中的精确目标元素引用 - 只读:

  • 浏览器验证元素可见

- 标题:验证元素是否可见 - 说明:验证元素在页面上是否可见 - 参数: - role (string):元素的角色。可以在快照中找到,如下所示: - {ROLE} "Accessible Name": - accessibleName (string):元素的名称。可以在快照中找到,如下所示: - role "{ACCESSIBLE_NAME}" - 只读: 错误的

  • 浏览器验证列表可见

- 标题:验证列表是否可见 - 说明:验证列表在页面上是否可见 - 参数: - element (string):人类可读的列表描述 - ref (string):指向列表的精确目标元素引用 - items (array):要验证的项目 - 只读: 错误的

  • 浏览器验证文本可见

- 标题:验证文本是否可见 - 说明:验证文本在页面上是否可见。如果可能的话,首选browser_verify_element_visible。 - 参数: - text (string):要验证的文本。可以在快照中找到,如下所示: - role "Accessible Name": {TEXT} 或者像这样: - text: {TEXT} - 只读: 错误的

  • 浏览器验证值

- 标题:验证值 - 说明:验证元素值 - 参数: - type (string):元素的类型 - element (string):人类可读的元素描述 - ref (string):指向该元素的精确目标元素引用 - value (string):要验证的值。对于复选框,使用“true”或“false”。 - 只读: 错误的

Tracing (opt-in via --caps=tracing)

目录标签

目录标签

浏览器自动化TypeScriptVS CodeLLM交互本地部署无障碍快照模型上下文协议

支持客户端

Claude DesktopClaudeCursorWindsurfClineVS CodeVS Code Insiders

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

patchright-mcp@latest

工具数量(toolCount,工具数)

34

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP