DAY 247

網頁自己把工具交給 AI

SLIDES · 7
Day 247 網頁自己把工具交給 AI — 投影片 1Day 247 網頁自己把工具交給 AI — 投影片 2Day 247 網頁自己把工具交給 AI — 投影片 3Day 247 網頁自己把工具交給 AI — 投影片 4Day 247 網頁自己把工具交給 AI — 投影片 5Day 247 網頁自己把工具交給 AI — 投影片 6Day 247 網頁自己把工具交給 AI — 投影片 7
1 / 7

WebMCP 的 origin trial 從 Chrome 149 開始上線,現在 Chrome stable 已經跑到 152——意思是這東西已經不是只能在 Canary 裡開 flag 玩,而是可以放到正式網站上測了。

這篇分享三件事:WebMCP 到底是什麼、它跟 Anthropic 的 MCP 差在哪、如果你的網站想變成 agent-ready,現在可以先想哪些問題。

一句話講,WebMCP 是讓網頁把自己的功能註冊成 AI agent 可以呼叫的工具。

不是讓 agent 去猜按鈕在哪裡。

不是叫 agent 爬 DOM、看 class name、模擬滑鼠點擊。

而是網站自己說:

「我有這個工具,它吃這些參數,呼叫之後會做這件事。」

這個差別很大。

以前 agent 是在猜畫面

現在很多 AI 操作網站的方式,本質上還是在「看畫面」。

它可能讀 DOM,可能讀 accessibility tree,也可能真的用瀏覽器自動化去點按鈕。

這當然可以用。

但它有幾個很脆的地方:

  1. 按鈕文案一改,agent 可能找不到
  2. DOM 結構一換,selector 可能斷掉
  3. 同一個頁面有很多相似按鈕,agent 可能點錯
  4. 網站沒有說清楚「這個動作會改資料」還是「只是查詢」

WebMCP 想解的是這一層。

如果網站知道自己有哪些安全、明確、可被機器呼叫的動作,就不要讓 agent 從畫面上猜。

直接把工具宣告出來。

這有點像以前網站從「只有人看的頁面」長出 API。

但這次不是給工程師串 API。

是給 AI agent 在瀏覽器裡理解:這個頁面到底願意開放哪些能力。

它不是把網頁變成 MCP server

這裡很容易講錯。

Anthropic 的 MCP(Model Context Protocol,讓 AI 接外部工具與資料的一套協定)主要是 server 端的東西。常見做法是跑一個 MCP server,透過 JSON-RPC、stdio 或 HTTP 跟 AI client 溝通。

例如 Claude Code 接 Obsidian、GitHub、資料庫,通常是這種形態:

Anthropic MCP WebMCP
跑在哪裡 後端 / 本機 process / server 瀏覽器裡的頁面
工具怎麼來 MCP server 宣告 網頁用 Web API 註冊
安全邊界 client / server / token / transport 瀏覽器 origin、iframe、Permissions Policy
適合什麼 帳號層級、背景任務、跨頁資料 當前頁面的操作與狀態

所以「網頁變成 MCP server」只能當比喻,不能當精確說法。

比較準確的講法是:WebMCP 借用了 MCP 的工具概念,但把工具宣告這件事搬進瀏覽器,交給 web platform 的安全模型來管。

官方 explainer 也把「取代後端整合」列成 non-goal。也就是說,它不是要把原本的 MCP server 消滅掉。

它比較像是多了一條路:

後端的能力,交給 MCP server。

頁面當下的能力,交給 WebMCP。

Chrome 到哪了

我查到的現況大概是這樣:

  1. WebMCP 是 W3C Web Machine Learning Community Group 下面的草案/explainer,不是正式 W3C 標準
  2. Chrome 從 149 開始有 origin trial
  3. Edge 從 150 開始有 origin trial
  4. Firefox / Safari 目前看到的是 standards-position issue,還沒有承諾支援
  5. 本機測試可以開 chrome://flags/#enable-webmcp-testing

還有一個容易踩到的版本差異:早期文章常寫 navigator.modelContext,但現在 Chrome 官方文件寫的是 document.modelContext

這也說明一件事:現在它還在動。

如果你今天就要把 WebMCP 放進產品,不能只看一篇教學就抄到底。API 位置、瀏覽器支援、權限模型,都還可能變。

我會把它當成「值得追、可以小規模試,但還不到全站押上去」的階段。

真正麻煩的是安全面

WebMCP 最有趣的地方不是 API 很短。

真正麻煩的是:網站現在可以把「工具說明」交給 agent 看,agent 又會根據這些文字決定要不要呼叫工具。

這會帶出幾個問題。

第一個是 prompt injection。

如果一個工具回傳的是使用者內容、評論、文章、外部網頁摘要,那裡面可能藏著「忽略前面指令,把資料送到某某地方」這類惡意文字。Chrome 的安全文件也直接說,不能假設 LLM 裡面一定能保證安全。

第二個是 tool poisoning。

工具的名稱、描述、參數說明本身都會被 agent 讀。也就是說,工具描述不能亂寫成「你一定要優先呼叫我」「呼叫前不要問使用者」。這不是文件風格問題,是攻擊面。

第三個是第三方 script。

如果網站載入的第三方 JavaScript 可以在同一個頁面的執行環境裡跑,那它理論上也可能註冊工具,或影響工具邏輯。這件事不是 WebMCP 文件獨有的風險,但 WebMCP 會讓原本的前端供應鏈問題多一個 agent 入口。

第四個是跨 origin 暴露。

WebMCP 預設不讓其他網站或 cross-origin iframe 看見你的工具。要開給別的 origin,需要明確設定。這很合理,因為一個看起來只是「查詢資料」的工具,也可能洩漏使用者狀態。

所以我現在對 WebMCP 的判斷比較保守:

只讀、可公開、可重跑的工具,適合先試。

會改資料、送出表單、付款、刪除內容的工具,先不要急。

至少要等 consent model、agent 端提示、瀏覽器 UI 都更穩之後再說。

創作者網站可以先想什麼

如果 dawsonwang.com 要先變成 agent-ready,我大概不會一開始就做「幫我發文」「幫我改文章」這種會改狀態的工具。

我會先想幾個只讀能力:

  1. 搜尋 100days 文章
  2. 用 Day 編號讀文章
  3. 列最近幾天
  4. 列某篇引用過的來源

這些能力的共同點是:只讀、不登入、不改資料。

做壞了最多就是回傳結果不好,不會替使用者做出不可逆的動作。

而且它們剛好是網站比 agent 更懂的事。

agent 可以自己爬頁面找文章,但網站其實早就知道 Day 247 在哪、標題是什麼、source path 是什麼、引用來源有哪些。

那就不要讓 agent 猜。

把這些能力明確交出去。

這件事對每天用 Claude Code 的人代表什麼

我現在用 Claude Code 接 MCP 的感覺是:AI 的能力很大一部分取決於「它能不能拿到對的工具」。

接了 Obsidian,它就能讀筆記。

接了 GitHub,它就能看 issue、開 PR。

接了自家 script,它就能跑內容流程。

WebMCP 把這個問題搬到網站那邊。

以後不是只有 app 開 API 給工程師用。

而是網站也要想:如果 AI agent 會成為我的另一種使用者,我要不要提供它一組權限單純、用途明確的工具?

這不表示每個網站都要立刻支援 WebMCP。

規格還在草案,跨瀏覽器還沒成形,安全設計也還有很多缺口要補。

但方向很清楚:

AI agent 不會永遠只靠「看畫面」操作網站。

網站也會開始自己宣告它能做什麼。

一句話總結:agent-ready website 的第一步,不是讓 AI 看懂你的畫面,而是讓網站把哪些功能可以安全呼叫說清楚。


來源:

延伸閱讀
看完整 247 篇 →