KeyFrame

How to build an AI Agent and MCP Server (step-by-step)

Google Cloud Tech·6月18日週四·7 min英文

三句話摘要

示範如何透過 MCP(Model Context Protocol)將 ADK 部落格撰寫 Agent 連接到 Google Trends 外部工具,讓 Agent 具備即時資料查詢能力。 MCP 讓 Agent 以標準、隔離、語言無關的方式連接任意外部工具,而 ADK 的 `FunctionTool` 讓接入成本降到幾乎只需撰寫一個普通 Python 函式。 MCP 是工具與 Agent 之間的標準協議:Agent 本身無法直接執行外部查詢,MCP 作為中間層,讓工具以獨立 Process 運行,Agent 透過 stdio 詢問「有哪些工具」再呼叫,結果以 JSON 回傳,雙方完全解耦。

重點整理

重點
  • 1

    MCP 是工具與 Agent 之間的標準協議:Agent 本身無法直接執行外部查詢,MCP 作為中間層,讓工具以獨立 Process 運行,Agent 透過 stdio 詢問「有哪些工具」再呼叫,結果以 JSON 回傳,雙方完全解耦。

  • 2

    隔離性與互通性是 MCP 的核心優勢:工具可以用 Python、Go 或 Node.js 撰寫,Agent 不需知道實作細節;工具崩潰不會拖垮 Agent,且工具可隨時新增、替換或版本化,無需改寫 Agent 主程式碼。

  • 3

    ADK FunctionTool 自動化 Schema 生成:只需撰寫標準 Python 函式並加上 Docstring,ADK 的 `FunctionTool` 裝飾器會自動解析 Signature,產生符合 MCP 規範的工具 Schema,省去手動定義模型的步驟。

  • 4

    整合只需在 Agent.py 新增一個工具參考:從 Agent 的角度,呼叫 MCP 工具與呼叫本地函式完全相同,只需將 `trends_mcp` 加入 Root Agent 的工具清單,Agent 即可在撰寫部落格時自動查詢當前 Google Trends 趨勢。

實用技巧與重點

乾貨
  • 協議名稱:MCP(Model Context Protocol)
  • 框架:ADK(Agent Development Kit)
  • 工具:Google Trends(透過 MCP 串接)
  • 通訊方式:stdio(標準輸入輸出),非 HTTP
  • 結果格式:JSON
  • 核心檔案:`server.py`(MCP Server)、`Agent.py`(Root Agent)
  • 關鍵 ADK 類別:`FunctionTool`、`adk_mcp_tool`(將 ADK meta data 轉換為 MCP Tool Schema)
  • 兩個必要 Handler:`list_tools`(回傳工具清單與 Schema)、`call_tool`(執行工具並回傳結果)
  • 錯誤處理:呼叫失敗時回傳 JSON 格式錯誤訊息,並將詳細內容輸出至 stderr
  • 啟動方式:主程式呼叫 `asyncio.run()`,ADK 可直接開啟該 Process 並使用工具
  • UI:ADK Web UI 可視化測試 Agent 與 MCP Server 的連線

結論

結論

MCP 讓 Agent 以標準、隔離、語言無關的方式連接任意外部工具,而 ADK 的 `FunctionTool` 讓接入成本降到幾乎只需撰寫一個普通 Python 函式。

完整解析

詳細

這部影片的核心問題是:一個純靠語言模型運作的 Agent,雖然能根據主題規劃並撰寫部落格文章,但它不知道外部世界正在發生什麼。為了讓文章更貼近當下,講者決定將 Agent 連接到 Google Trends 的即時資料,而連接的橋樑就是 MCP——Model Context Protocol。

MCP 的概念其實很直觀。Agent(大腦)無法直接執行查詢 Trends 資料庫這類操作,因此需要一個標準化的中介層。MCP 讓外部工具以獨立 Process 的形式運行,透過 stdio 與 Agent 溝通:Agent 先問「你有哪些工具?」,工具回傳名稱、參數與回傳型別的 Schema;Agent 再說「用這些參數呼叫這個工具」,工具執行後以 JSON 回傳結果。整個設計的精髓在於隔離——工具用什麼語言撰寫、用了什麼 Library 都無所謂,只要遵守 MCP 協議即可;工具崩潰也不會影響 Agent 主程式,且工具可隨時新增或替換,不須重寫 Agent。

實作層面,講者在專案中建立 `server.py`,撰寫一個標準 Python 函式 `trends`,接收 JSON 格式的語言參數並回傳 JSON。接著用 ADK 的 `FunctionTool` 包裝這個函式——ADK 會自動讀取函式的 Signature 與 Docstring,產生完整的工具 Schema,無需手動定義模型。MCP Server 物件作為工具與 Agent 之間的小型中介,實作兩個關鍵 Handler:`list_tools` 在 Agent 連線時回傳工具清單(透過 `adk_mcp_tool` helper 將 ADK meta data 轉換為 MCP 格式),`call_tool` 則驗證工具名稱後直接呼叫 `FunctionTool` 的 `run_async` 方法,成功時回傳 JSON 文字內容,失敗時回傳結構化錯誤訊息並將詳細資訊輸出至 stderr。最後以 `asyncio.run()` 啟動整個服務。

完成 Server 端後,Agent.py 的改動極為精簡:只需在 Root Agent 的工具清單中加入 `trends_mcp`。從 Agent 的角度,呼叫這個 MCP 工具與呼叫本地函式沒有任何差異,但背後卻已串接到真實的外部資料流。開啟 ADK Web UI 後,Agent 便能在撰寫文章前先查詢當前 Google Trends,讓部落格內容錨定在真實趨勢上。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「AI 技術」的內容

Claude Cowork vs Codex: 誰才是更好的AI工作助手?
16 min
AI 技術中文6月20日

Claude Cowork vs Codex: 誰才是更好的AI工作助手?

李厂长来了

  • 介面設計哲學不同:Codework 以標籤頁區分聊天、文書與程式碼三種模式,任務彼此隔離不混淆;Codex 則將所有功能整合在單一介面,減少切換成本,但頁面相對雜亂。
  • 第三方整合能力差距明顯:Codework 提供大量連接器並支援 Zapier 擴展,且可針對每個連接器精細設定讀寫權限(如 Gmail 只讀免確認、寫信需批准);Codex 的插件數量較少且缺乏同等級的權限控制機制。
  • 定時任務管理方式影響長期使用體驗:Codework 將同一自動化任務的歷史記錄歸類在同一條目下,便於追蹤;Codex 每次執行都獨立列出,隨任務增多左側欄會越來越臃腫,不利於長期管理。
我贏得 NVIDIA GTC Taipei 2026 的金票啦!這 4 天展期會有什麼不一樣的體驗呢? | Computex 2026
編輯精選
28 min
AI 技術中文6月20日

我贏得 NVIDIA GTC Taipei 2026 的金票啦!這 4 天展期會有什麼不一樣的體驗呢? | Computex 2026

EngineerGary

  • Tokenomics 重新定義 AI 工廠價值:黃仁勛將所有輸出重新框架為 Token = Revenue,傳統工廠生產實體商品,AI 工廠改為生產 Token;對製造端而言,目標是以最低成本產生最多 Token,實現每投入 1 元帶回 3–5 元回報的商業邏輯。
  • 開源策略是市場放大器而非讓利:NVIDIA 釋出 Cosmos 3、Apomile 3 等開源模型,以及通用人型機器人,目的是降低新創進入自動駕駛、World Model、Physical AI 的門檻,擴大整體生態系規模,最終帶動更多算力與服務需求(「The more you buy, the more you earn」)。
  • Deal to Delivery Agent 解決中小企業流程瓶頸:Gary 團隊識別出企業收到客戶需求後,需跨工具手動完成報價、開票、GitHub issue、通知等重複性操作是最大效率殺手;Agent 自動拆解商機、建立 ERP 記錄並推送 Telegram 通知,人類只需在 Draft 狀態下做最終 Review 確認。
黃仁勳親自欽點⁉️執笠手機公司 BlackBerry 變身 AI 機械人主系統🤖下一個大浪提前準備
編輯精選
30 min
AI 技術中文6月20日

黃仁勳親自欽點⁉️執笠手機公司 BlackBerry 變身 AI 機械人主系統🤖下一個大浪提前準備

Coco哥

  • QNX 擁有機器人 OS 三大不可替代技術門檻
  • Windows 響應延遲 200 毫秒,Linux 一旦核心崩潰全部失效,而 QNX 具備毫秒級即時決策、ISO 26262 ASIL-D 與 IEC 61508 SIL-3 最高安全認證,以及微型內核獨立架構(單一模組崩潰不影響其餘系統),三項條件同時達標,現階段競爭對手均未能複製。
  • 40 年護城河非短期可追趕