跳至主要內容
技術

MCP 與 A2A 協議實戰:讓 Agent 從「只會讀 code」變成「能操作整個開發環境」

MCP 與 A2A 協議實戰:讓 Agent 從「只會讀 code」變成「能操作整個開發環境」
Agentic Engineering 實戰手冊 第 9 / 14 篇 ,前往系列總覽

這是「Agentic Engineering 實戰手冊」系列的第九篇。上一篇:CLAUDE.md 大師班

那一刻,我覺得未來到了(然後 Agent 把我的 Email 刪了)

第一次設定好 Chrome DevTools MCP,讓 Claude Code 直接操作我的瀏覽器的時候,我覺得這就是未來。Agent 可以自己開網頁、截圖、填表單、甚至跑 Lighthouse audit。

然後它在操作過程中,不小心把我正在寫的一封 email 給清空了。

那封 email 我寫了快半小時。

這個事件很能代表 MCP 的兩面性:它讓 agent 從讀寫 code 延伸到操作外部系統,但風險不是抽象的「指數成長」,而是取決於它拿到哪些帳號、資料與寫入權限。

A2A 則是讓多個這樣的強大 agent 可以互相對話。想像不只一個 agent 有能力操作你的環境,而是一群。興奮嗎?害怕嗎?兩者都是正確的反應。

MCP:AI 的 USB-C

什麼是 MCP

Model Context Protocol(MCP)是 Anthropic 在 2024 年底提出的開放協議。最簡單的理解方式:

MCP 之於 AI agent,就像 USB-C 之於你的設備——一個統一的接口,讓任何 agent 可以連接任何工具。

在 MCP 之前,每個 AI 工具有自己的 plugin 系統。Cursor 有自己的 extension、ChatGPT 有自己的 Plugins、Claude 有自己的 tools。如果你想讓你的工具同時被三個 AI 使用,你得寫三套整合。

MCP 統一了這個介面。你寫一個 MCP server,所有支援 MCP 的 AI agent 都能用。

2025 年底,Anthropic 把 MCP 捐給 Linux Foundation 新成立的 AAIF(Agentic AI Foundation)。多家模型、雲端與開發工具廠商已經支援或參與生態,但每個 client 實作的功能與安全邊界仍不完全相同。

它已經不是只能綁 Anthropic 產品的私有介面;更精確地說,它是一個快速普及、由基金會治理的開放協議。採用度很高,不代表所有 server 都同樣成熟。

MCP 的架構

你的 AI Agent(Claude Code / Cursor / etc.)
    ↕  MCP Protocol(JSON-RPC over stdio/HTTP)
MCP Server(一個小程式,暴露 tools 給 agent)
    ↕  實際操作
External System(Database / API / Browser / etc.)

MCP Server 就像一個翻譯官:它把外部系統的能力「翻譯」成 agent 能理解的 tool definition(輸入什麼、輸出什麼、做什麼),agent 就可以自主決定什麼時候呼叫哪個 tool。

MCP 沒有一個叫「v2」的正式大版本

MCP 規格使用日期版號,例如 2025-11-25,不是「v2」。功能也分散在不同修訂加入:目前穩定規格包含 authorization 改進、elicitation、tool calling 與實驗性 tasks 等;標準 transport 則是 stdioStreamable HTTP

因此看到某個 client 或 server 宣稱「支援 MCP」,還要再問三件事:支援哪個 protocol revision、哪些 capabilities、用哪種 transport。不能用一個「v2」標籤把 OAuth、multimodal 與 elicitation 全部當成必備功能。

我的 Production MCP Stack

一年下來,我試過超過 20 個 MCP server。初稿時留下來持續使用的有 5 個;這是我的個人工具清單,不是通用排名。

Tier 1:每天都用

Chrome DevTools MCP

用途:操控瀏覽器。截圖、填表單、跑 Lighthouse audit、監控 network requests。

使用場景:

  • 自動跑 visual regression test(截圖 → 比對)
  • 幫我在 NotebookLM 上自動操作(產生摘要素材)
  • 填寫重複的表單(測試環境的 seed data)

踩過的坑:

  • Agent 不知道頁面載入需要時間,常常在 DOM 還沒渲染完就嘗試操作 → 需要在 prompt 裡提醒「等 page load 完」
  • 開太多 tab 會讓 agent 搞混 → 限制每次只操作一個 tab
  • 那封被刪的 email → 現在改用獨立瀏覽器 profile 與測試帳號。Incognito 只是不保留一般瀏覽資料,不能取代權限隔離與操作前確認

Notion MCP

用途:讀寫 Notion databases。我的 task management、knowledge base、project brief 都在 Notion 上。

使用場景:

  • 讓 agent 直接讀取 Jira ticket 的內容(我用 Notion 做 task sync)
  • 寫 session 總結到 Notion daily log
  • 查找之前做過的決策紀錄

踩過的坑:

  • Notion API 的 block 格式很複雜,agent 常常建出格式不對的內容 → 我寫了一個 notion-block-format skill 來幫助它
  • Rate limiting:太頻繁的 API 呼叫會被 throttle

Tier 2:每週用幾次

Sentry MCP

用途:查詢 production error。Agent 可以直接搜尋 issues、看 stack trace、分析 error patterns。

Canva MCP

用途:產生社群圖片素材。Agent 可以生成設計、匯出不同格式。

Tier 3:偶爾用

自建的公司 API MCP

為工作專案自建的 MCP server,連接內部 API。讓 agent 可以查詢內部系統的資料。

MCP 的「少即是多」原則

重要的經驗:不要一次掛太多 MCP servers

Tool 名稱與描述需要讓 client/模型知道;不同產品可能延後載入完整 schema,所以不能用固定的 15–20% 估算。比較穩定的風險是:工具越多,權限面與選錯工具的可能性越大,也更難排查哪個連線失效。

我的原則:只開當前任務需要的 server。有時是一個,有時超過五個;數量不如最小權限、描述清楚與連線可觀測重要。

自建 MCP Server 的經驗

什麼時候該自建

  • 內部 API 整合:你的公司系統不會有現成的 MCP server
  • 客製化的工作流:現成的 MCP server 不支援你需要的操作
  • 效能優化:通用的 MCP server 可能做了太多你不需要的事

什麼時候不該自建

  • 已有可信且維護中的 MCP server:先確認發布者、權限範圍、更新頻率與原始碼,不要把「社群有做」等同官方背書
  • Tool 的使用頻率很低:自建的維護成本不值得
  • 只是固定、低頻的 API 呼叫:直接用既有 SDK 或受控 HTTP client 可能更簡單;但仍要處理 schema、認證、audit log 與錯誤,不是「讓 agent fetch」就沒有整合成本

架構要點

一個 MCP server 的核心就三件事:

  1. Tool Definition:這個 tool 叫什麼、做什麼、接收什麼 input、回傳什麼 output
  2. Input Validation:用 Zod 或 JSON Schema 驗證 agent 傳來的 input
  3. Error Handling:明確的錯誤訊息,讓 agent 知道出了什麼問題
// 一個最小的 MCP tool 長這樣(概念示意)
{
  name: "query_orders",
  description: "Query recent orders from internal system",
  inputSchema: {
    type: "object",
    properties: {
      status: { type: "string", enum: ["pending", "shipped", "delivered"] },
      limit: { type: "number", default: 10 }
    }
  }
}

關鍵description 寫得好不好,直接影響 agent 會不會正確使用這個 tool。這跟寫 spec 的邏輯一樣——越精確,agent 的表現越好。

A2A:Agent 之間的共同語言

什麼是 A2A

Agent2Agent Protocol(A2A)是 Google 在 2025 年 4 月提出的協議。2025 年 6 月,Google 把規格、SDK 與工具捐給 Linux Foundation 的獨立 Agent2Agent project。它與 AAIF 旗下的 MCP 都在 Linux Foundation 生態中,但不是一開始就屬於同一個專案。

如果 MCP 是「agent 跟工具對話」,A2A 就是「agent 跟 agent 對話」。

具體來說,A2A 解決三個問題:

  1. Discovery:Agent A 怎麼知道 Agent B 存在、它會什麼?
  2. Communication:Agent A 怎麼把任務發給 Agent B?
  3. Collaboration:兩個 Agent 怎麼在一個任務上協作?

A2A 的核心概念

  • Agent Card:每個 agent 的「名片」,描述它的能力、支援的 input/output format、認證方式
  • Task:agent 之間傳遞的工作單元
  • Message / Artifact:任務過程中的通訊內容和產出物

目前的生態

A2A 已在 2026 年發展到 v1.0,官方也提供多語言 SDK、Inspector 與相容性測試相關工作。本文初稿寫的 v0.3 已經過期。

v1.0 代表規格進入穩定里程碑,不代表你的供應商、認證與觀測工具都已成熟。是否能上 production,要看實際互通測試、失敗恢復、安全需求與團隊維運能力,不能只看版本號。

我目前怎麼用(或者說,還沒怎麼用)

坦白說,我日常工作裡還沒有真正的 A2A 使用場景。我的 multi-agent 架構——Claude Code + OpenClaw + n8n——它們之間的「通訊」是透過共享的 Markdown 檔案和 n8n webhook,不是透過 A2A 協議。

為什麼?因為我現在的流程在單一信任邊界內,用 webhook 與檔案已經夠用;引入 A2A 會多出 discovery、認證、版本協商與觀測成本,還沒有對應收益。這是我的需求判斷,不是說 A2A v1.0 不能進 production。

當你需要跨框架、跨廠商,甚至跨組織交換長任務時,A2A 的價值才會明顯。至於哪些 coding agent 會在何時互通,應以各產品正式支援為準,不先替它們寫 roadmap。

MCP vs A2A:互補而非競爭

這兩個協議經常被拿來比較,但它們解決的是不同的問題:

MCPA2A
連接什麼Agent ↔ ToolAgent ↔ Agent
比喻USB-C(設備接周邊)Wi-Fi(設備互聯)
目前規格日期版號,穩定版 2025-11-25v1.0
治理Anthropic 發起 → Linux Foundation AAIFGoogle 發起 → Linux Foundation Agent2Agent project
適用判斷工具整合有明確需求時跨 agent 互通有明確需求時
你現在該用嗎先做權限與 server 評估先做互通與維運成本評估

實際場景

Claude Code(我的 coding agent)
  ├── 透過 MCP → 操作 Chrome、讀寫 Notion、查 Sentry
  └── 未來透過 A2A → 跟 Devin 協作、跟 OpenClaw 交換 research 結果

畫成圖會更清楚——兩種協議是往不同方向長的:

flowchart LR
    CC["Claude Code<br/>我的 coding agent"]
    CC -->|"MCP"| T1["Chrome"]
    CC -->|"MCP"| T2["Notion"]
    CC -->|"MCP"| T3["Sentry"]
    CC -.->|"A2A(未來)"| A1["Devin"]
    CC -.->|"A2A(未來)"| A2["OpenClaw"]

實線往下是 MCP:接的是沒有自主性的工具,我叫它做什麼它就做什麼。虛線往右是 A2A:接的是另一個會自己思考、自己決定怎麼做的 agent——對方不是被我呼叫的函式,而是一個我只能提出請求、無法控制其內部行為的對等系統。

兩者今天都可以用,也都可能不需要。差別在你要連的是工具,還是另一個獨立 agent 系統。

協議的理想 vs 現實

理想

任何 agent 可以無縫連接任何工具(MCP),任何 agent 可以無縫跟任何其他 agent 協作(A2A)。一個統一的生態系,interoperable、secure、efficient。

現實

MCP 的現實問題

  • Server 品質參差不齊——有些官方維護、品質高;有些社群貢獻、bug 多
  • 認證與安全需要 client、server 和部署者一起做對;協議支援 authorization,不代表每個實作都安全
  • Tool discovery 不夠好——你得自己知道有什麼 MCP server 可以用

A2A 的現實問題

  • v1.0 才剛成為穩定里程碑,各產品支援版本可能不同
  • 跨廠商的認證、觀測、重試與長任務恢復仍要實測
  • 官方 SDK 與工具已存在,但不會替你解決業務層的信任與責任邊界

我的建議

  1. 有清楚的工具整合需求再用 MCP——先從最小權限的一個 server 開始,記錄它能讀寫什麼
  2. 有跨 agent 互通需求再評估 A2A——先驗證兩端版本、認證、重試與人工接管
  3. 追蹤各自的官方規格與治理——不要用「MCP v2」或舊版 A2A 文章代替現行文件

Takeaway

  1. MCP 把外部工具變成 agent 可呼叫的能力——先設 sandbox、最小權限、測試帳號與人工確認點,再依風險逐步開放。

  2. A2A v1.0 為跨 agent 協作提供穩定規格里程碑——能不能進 production 取決於兩端實作與你的維運條件,不宜一概說現在太早或一定該上。

  3. 兩個協議互補:MCP 偏 agent-to-tool,A2A 偏 agent-to-agent。先從問題選協議,不要從熱門協議反推問題。


上一篇:CLAUDE.md 大師班 下一篇:Multi-Agent 編排實戰

留言討論

esc
輸入關鍵字搜尋文章...
查看收藏 →