Better Playwright MCP
B

Better Playwright MCP

一個優化的Playwright MCP服務器,採用客戶端-服務端架構實現瀏覽器自動化,通過創新的語義快照算法大幅減少頁面內容傳輸量,保留關鍵元素的同時降低90%的token消耗。
2.5分
6.4K

安裝

複製以下命令到你的Client進行配置
注意:您的密鑰屬於敏感信息,請勿與任何人分享。

🚀 better-playwright-mcp

better-playwright-mcp 是一個更出色的 Playwright MCP(模型上下文協議)服務器,採用客戶端 - 服務器架構實現瀏覽器自動化。它通過創新的語義快照算法,能將頁面內容減少多達 90%,同時保留所有有意義的元素,有效解決了傳統瀏覽器自動化工具常面臨的令牌限制問題。

🚀 快速開始

安裝

npm install -g better-playwright-mcp

運行

默認模式(MCP)

MCP 服務器需要 HTTP 服務器運行。你需要啟動這兩個服務器: 步驟 1:啟動 HTTP 服務器

npx better-playwright-mcp server

步驟 2:在另一個終端中,啟動 MCP 服務器

npx better-playwright-mcp

MCP 服務器將:

  1. 開始在標準輸入輸出上監聽 MCP 協議消息。
  2. 連接到端口 3102 上的 HTTP 服務器。
  3. 通過 HTTP 服務器路由瀏覽器自動化命令。

獨立 HTTP 服務器模式

你也可以獨立運行 HTTP 服務器(這對於調試或自定義集成很有用):

npx better-playwright-mcp server

選項:

  • -p, --port <number> - 服務器端口(默認:3102)
  • --host <string> - 服務器主機(默認:localhost)
  • --headless - 以無頭模式運行瀏覽器
  • --chromium - 使用 Chromium 而不是 Chrome
  • --no-user-profile - 不使用持久用戶配置文件
  • --user-data-dir <path> - 用戶數據目錄
  • --snapshot-dir <path> - 保存快照的目錄

✨ 主要特性

  • 🎯 通過語義 HTML 快照減少 90% 的令牌使用。
  • 🎭 通過 MCP 實現完整的 Playwright 瀏覽器自動化。
  • 🏗️ 客戶端 - 服務器架構,更好地分離關注點。
  • 🛡️ 隱身模式,避免被檢測。
  • 📍 基於哈希的元素標識符,實現精確目標定位。
  • 💾 持久的瀏覽器配置文件。
  • 🚀 針對長時間運行的自動化任務進行優化。
  • 📊 支持令牌感知輸出,並自動截斷。

📦 安裝指南

npm install -g better-playwright-mcp

💻 使用示例

基礎用法

創建和導航頁面

// MCP 工具使用
{
  "tool": "createPage",
  "arguments": {
    "name": "shopping",
    "description": "Amazon shopping page",
    "url": "https://amazon.com"
  }
}

// 返回: { pageId: "uuid", snapshot: "..." }

與元素交互

// 使用 xp 標識符點擊元素
{
  "tool": "browserClick",
  "arguments": {
    "pageId": "uuid",
    "ref": "3fa2b8c1"  // 快照中的 xp 屬性值
  }
}

// 在輸入字段中輸入文本
{
  "tool": "browserType",
  "arguments": {
    "pageId": "uuid",
    "ref": "xp456",
    "text": "search query",
    "submit": true  // 輸入後按 Enter 鍵
  }
}

捕獲頁面狀態

// 獲取語義快照
{
  "tool": "getPageSnapshot",
  "arguments": {
    "pageId": "uuid"
  }
}

// 截圖
{
  "tool": "getScreenshot",
  "arguments": {
    "pageId": "uuid",
    "fullPage": true,
    "type": "png"
  }
}

📚 詳細文檔

MCP 工具

當與 AI 助手一起使用時,可使用以下工具:

頁面管理

  • createPage - 創建一個帶有名稱和描述的新瀏覽器頁面。
  • activatePage - 通過 ID 激活特定頁面。
  • closePage - 關閉特定頁面。
  • listPages - 列出所有管理的頁面及其標題和 URL。
  • closeAllPages - 關閉所有管理的頁面。
  • listPagesWithoutId - 列出未管理的瀏覽器頁面。
  • closePagesWithoutId - 關閉所有未管理的頁面。
  • closePageByIndex - 按索引關閉頁面。

瀏覽器操作

  • browserClick - 使用元素的 xp 標識符點擊元素。
  • browserType - 在元素中輸入文本。
  • browserHover - 懸停在元素上。
  • browserSelectOption - 在下拉菜單中選擇選項。
  • browserPressKey - 按下鍵盤鍵。
  • browserFileUpload - 上傳文件到文件輸入框。
  • browserHandleDialog - 處理瀏覽器對話框(警告、確認、提示)。
  • browserNavigate - 導航到 URL。
  • browserNavigateBack - 返回上一頁。
  • browserNavigateForward - 前進到下一頁。
  • scrollToBottom - 滾動到頁面/元素底部。
  • scrollToTop - 滾動到頁面/元素頂部。
  • waitForTimeout - 等待指定的毫秒數。
  • waitForSelector - 等待元素出現。

快照和實用工具

  • getPageSnapshot - 獲取帶有 xp 標識符的語義 HTML 快照。
  • getScreenshot - 截圖(PNG/JPEG)。
  • getPDFSnapshot - 生成頁面的 PDF。
  • getElementHTML - 獲取特定元素的 HTML。
  • downloadImage - 從 URL 下載圖像。
  • captureSnapshot - 通過自動滾動捕獲全頁。

工作原理

語義快照的實際應用

原始 HTML

<div class="wrapper" style="padding: 20px; margin: 10px;">
  <div class="container">
    <div class="inner">
      <button class="btn btn-primary" onclick="handleClick()" 
              style="background: blue; color: white;">
        Click me
      </button>
    </div>
  </div>
</div>

語義快照

button xp=3fa2b8c1 Click me

該算法:

  • 移除不必要的包裝 div。
  • 去除內聯樣式和事件處理程序。
  • 添加唯一標識符(xp 屬性) - 元素 XPath 的哈希值。
  • 僅保留有意義的內容。

基於差異的優化

為了減少數據傳輸和令牌使用:

  • 第一個快照始終是完整的。
  • 後續快照僅包含更改(差異)。
  • 自動緩存以提高性能。

隱身功能

瀏覽器實例配置了:

  • 自定義用戶代理字符串。
  • 禁用自動化指示符。
  • WebGL 供應商欺騙。
  • Canvas 指紋保護。

🔧 技術細節

問題所在

  • 全頁 HTML 通常超過 100K+ 令牌。
  • 大多數 HTML 是噪聲:內聯樣式、跟蹤腳本、不可見元素。
  • AI 助手的上下文窗口有限(即使有 200K 限制)。
  • 僅加載幾頁後,複雜的網頁自動化就變得不可能。

解決方案:語義快照

我們的核心創新是一種多階段修剪算法,它:

  1. 識別有意義的元素 - 交互式元素(按鈕、輸入框)、語義 HTML5 標籤和包含文本的元素。
  2. 生成唯一標識符 - 每個元素都有一個基於哈希的 xp 屬性,該屬性源自其 XPath,用於精確目標定位。
  3. 移除不可見內容 - 標記並移除具有 display:none、零尺寸或隱藏父元素的元素。
  4. 解開無用的包裝器 - 消除僅包裝其他元素的 div 和 span。
  5. 去除不必要的屬性 - 僅保留必要的屬性,如 hrefvalueplaceholder

結果:一個簡潔、語義化的表示,通常只使用原始令牌的 10%,同時保持完整功能。

架構

本項目實現了獨特的兩層架構:

  1. MCP 服務器 - 通過模型上下文協議與 AI 助手通信。
  2. HTTP 服務器 - 在後臺運行以控制實際的瀏覽器實例。
AI 助手 <--[MCP 協議]--> MCP 服務器 <--[HTTP]--> HTTP 服務器 <---> 瀏覽器

這種設計允許 MCP 服務器保持輕量級,同時將瀏覽器控制委託給專用的 HTTP 服務。

開發

先決條件

  • Node.js >= 18.0.0
  • TypeScript
  • Chrome 或 Chromium 瀏覽器

從源代碼構建

# 克隆倉庫
git clone https://github.com/yourusername/better-playwright-mcp.git
cd better-playwright-mcp

# 安裝依賴
npm install

# 構建項目
npm run build

# 在開發模式下運行
npm run dev

項目結構

better-playwright-mcp/
├── src/
│   ├── index.ts                 # MCP 模式入口點
│   ├── server.ts                # HTTP 服務器模式入口點
│   ├── playwright-mcp.ts        # MCP 服務器實現
│   ├── client/
│   │   └── playwright-client.ts # MCP→HTTP 通信的 HTTP 客戶端
│   ├── server/
│   │   └── playwright-server.ts # 控制瀏覽器的 HTTP 服務器
│   ├── extractor/
│   │   ├── parse2.ts           # 生成 xp 標識符的 HTML 解析
│   │   ├── simplify-html.ts    # HTML 簡化
│   │   └── utils.ts            # 提取實用工具
│   └── utils/
│       └── token-limiter.ts    # 令牌計數和限制
├── bin/
│   └── cli.js                  # CLI 入口點
├── package.json
├── tsconfig.json
├── CLAUDE.md                   # AI 助手說明
└── README.md

故障排除

常見問題

  1. MCP 服務器無法連接

    • 確保 HTTP 服務器在端口 3102 上可訪問。
    • 檢查防火牆設置。
    • 嘗試使用 DEBUG=* npx better-playwright-mcp 運行。
  2. 瀏覽器無法啟動

    • 確保安裝了 Chrome 或 Chromium。
    • 嘗試使用 --chromium 標誌。
    • 檢查系統資源。
  3. 令牌限制超出

    • 快照會自動截斷為 20,000 令牌。
    • 使用目標選擇器減少快照大小。
    • 考慮使用截圖而不是快照進行視覺檢查。

調試模式

啟用詳細日誌記錄:

DEBUG=* npx better-playwright-mcp

日誌和記錄

操作記錄保存到:

  • macOS/Linux: /tmp/playwright-records/
  • Windows: %TEMP%\playwright-records\

每個頁面都有自己的目錄,其中包含帶時間戳的操作日誌。

貢獻

歡迎貢獻!請隨時提交拉取請求。

📄 許可證

MIT

替代品

M
MCP
微軟官方MCP服務器,為AI助手提供最新微軟技術文檔的搜索和獲取功能
9.1K
5分
A
Aderyn
Aderyn是一個開源的Solidity智能合約靜態分析工具,由Rust編寫,幫助開發者和安全研究人員發現Solidity代碼中的漏洞。它支持Foundry和Hardhat項目,可生成多種格式報告,並提供VSCode擴展。
Rust
4.9K
5分
D
Devtools Debugger MCP
Node.js調試器MCP服務器,提供基於Chrome DevTools協議的完整調試功能,包括斷點設置、單步執行、變量檢查和表達式評估等
TypeScript
5.4K
4分
S
Scrapling
Scrapling是一個自適應網頁抓取庫,能自動學習網站變化並重新定位元素,支持多種抓取方式和AI集成,提供高性能解析和開發者友好體驗。
Python
7.9K
5分
M
Mcpjungle
MCPJungle是一個自託管的MCP網關,用於集中管理和代理多個MCP服務器,為AI代理提供統一的工具訪問接口。
Go
0
4.5分
C
Cipher
Cipher是一個專為編程AI代理設計的開源記憶層框架,通過MCP協議與各種IDE和AI編碼助手集成,提供自動記憶生成、團隊記憶共享和雙系統記憶管理等核心功能。
TypeScript
0
5分
N
Nexus
Nexus是一個AI工具聚合網關,支持連接多個MCP服務器和LLM提供商,通過統一端點提供工具搜索、執行和模型路由功能,支持安全認證和速率限制。
Rust
0
4分
S
Shadcn Ui MCP Server
一個為AI工作流提供shadcn/ui組件集成的MCP服務器,支持React、Svelte和Vue框架,包含組件源碼、示例和元數據訪問功能。
TypeScript
12.2K
5分
M
Markdownify MCP
Markdownify是一個多功能文件轉換服務,支持將PDF、圖片、音頻等多種格式及網頁內容轉換為Markdown格式。
TypeScript
19.8K
5分
B
Baidu Map
已認證
百度地圖MCP Server是國內首個兼容MCP協議的地圖服務,提供地理編碼、路線規劃等10個標準化API接口,支持Python和Typescript快速接入,賦能智能體實現地圖相關功能。
Python
26.7K
4.5分
F
Firecrawl MCP Server
Firecrawl MCP Server是一個集成Firecrawl網頁抓取能力的模型上下文協議服務器,提供豐富的網頁抓取、搜索和內容提取功能。
TypeScript
66.2K
5分
S
Sequential Thinking MCP Server
一個基於MCP協議的結構化思維服務器,通過定義思考階段幫助分解複雜問題並生成總結
Python
22.1K
4.5分
N
Notion Api MCP
已認證
一個基於Python的MCP服務器,通過Notion API提供高級待辦事項管理和內容組織功能,實現AI模型與Notion的無縫集成。
Python
13.4K
4.5分
M
Magic MCP
Magic Component Platform (MCP) 是一個AI驅動的UI組件生成工具,通過自然語言描述幫助開發者快速創建現代化UI組件,支持多種IDE集成。
JavaScript
16.5K
5分
E
Edgeone Pages MCP Server
EdgeOne Pages MCP是一個通過MCP協議快速部署HTML內容到EdgeOne Pages並獲取公開URL的服務
TypeScript
16.5K
4.8分
C
Context7
Context7 MCP是一個為AI編程助手提供即時、版本特定文檔和代碼示例的服務,通過Model Context Protocol直接集成到提示中,解決LLM使用過時信息的問題。
TypeScript
45.9K
4.7分
AIBase
智啟未來,您的人工智慧解決方案智庫
© 2025AIBase