网页自动化桥接工具

MCPWebKit是一个将MCPKit和WebViewBridge结合的网页自动化桥接工具,允许AI助手直接操作应用内的网页,简化HTTP服务器、JSON-RPC和JS回调的桥接过程。

  • by Sunalamye
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 Sunalamye/MCPWebKit

使用说明

MCPWebKit

把 MCPKit 和 WebViewBridge 接起來, 讓 Claude Code 之類的 AI 助手直接操作你 App 裡的網頁。


這解決什麼

你的 App 內嵌了一個網頁,想讓 AI 助手幫你除錯或自動化。 一般作法是自己接 HTTP server、自己定義 JSON-RPC、自己橋接 JS 回呼—— MCPWebKit 把這三段包好,你只要提供「怎麼執行 JavaScript」這一個 closure。

Claude Code
    │  MCP over HTTP
    ▼
MCPWebServer ──→ MCPWebHandler ──→ WebViewMCPContext
 (HTTP 監聽)      (JSON-RPC)        (JS 回呼橋接)
                                          │
                                          ▼
                                  WebPage / WKWebView

安裝

dependencies: [
    .package(url: "https://github.com/Sunalamye/MCPWebKit.git", from: "0.3.0")
]

快速開始

import MCPWebKit

@MainActor
final class MyViewModel: ObservableObject {
    let mcpServer = MCPWebServer(port: 8765)
    var webPage: WebPage?

    func setUpServer() {
        // 你只要接這一個:怎麼在你的網頁上執行 JS
        mcpServer.executeJavaScript = { [weak self] script, completion in
            guard let page = self?.webPage else {
                completion(nil, NSError(
                    domain: "App", code: -1,
                    userInfo: [NSLocalizedDescriptionKey: "WebPage not available"]))
                return
            }
            Task { @MainActor in
                do { completion(try await page.callJavaScript(script), nil) }
                catch { completion(nil, error) }
            }
        }

        mcpServer.start()
    }
}

接到 Claude Code:

claude mcp add --transport http my-app http://localhost:8765/mcp

內建工具

名稱 說明
execute_js 執行任意 JavaScript
query_selector 用 CSS 選擇器查元素
click_element 點擊頁面元素
get_page_info 取得頁面資訊
get_status 伺服器狀態
get_logs 取得日誌
clear_logs 清空日誌

要加自己的工具就照 MCPKit 的 MCPTool 協定寫,註冊上去即可。


⚠️ 執行 JavaScript 要寫 return

WebPage.callJavaScript() 收的是函式主體,不是運算式:

  • ❌ document.title → 回傳 null
  • ✅ return document.title → 回傳實際標題

不會報錯,只會靜默拿到 null。這是最常踩的坑。


版本門檻

版本
套件可以被加進去 macOS 14+ / iOS 17+
WebPage 相關路徑可以用 macOS 26+ / iOS 26+

部署目標是 14/17,所以你的 App 只要 14+ 就能列為依賴。 但 WebPage API 本身要 26,實際使用要包 @available; 26 以下需要自己準備 WKWebView 的替代路徑。


結構

Sources/MCPWebKit/
├── Core/
│   └── WebViewMCPContext.swift   實作 MCPKit 的 MCPContext
├── Server/
│   ├── MCPWebServer.swift        HTTP 監聽與生命週期
│   └── MCPWebHandler.swift       JSON-RPC 處理
├── Tools/
│   └── BuiltInTools.swift        內建工具
└── MCPWebKit.swift               版本資訊

安全性

這個 endpoint 能執行任意 JavaScript。請只綁 loopback—— 把 server 的 requiredInterfaceType 設成 .loopback, 同網段的其他裝置就連不進來。


更新日誌

v0.3.0

  • 部署目標降到 macOS 14 / iOS 17
  • 升級到 MCPKit 0.2.1

License

MIT