使用说明
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
