MCP, Agent
MCP
基本介紹
MCP 全名為 Model Context Protocol,由 Anthropic 於 2024 年底所提出的。用意是希望能標準化 LLM 與其他系統間的通訊
MCP框架會有下列項目:
MCP host (MCP 主機)
- 執行 MCP Client 的環境
- 載入 MCP CLient,橋接到 Server
- 白話:讓 AI 活起來,提供介面讓我跟 AI 對話的軟體 (vscode, cursor, antigravity …)
MCP Client (MCP 客戶端)
- 管理主機與伺服器之間的連接
- 代表使用者或應用程式,發出需求與任務
MCP Server (MCP 伺服器)
- 輕量級程式
- 能力提供者 (工具箱的概念),他真正連到外部資源 (調用 API、資料庫…)
- 定義可以使用的工具 (tools),讓Agent or Client 可以呼叫
Agent (代理/ AI 模型)
- 大腦角色 (通常是 LLM)
- 能讀懂 Client 的要求,決定調用那些工具
- 扮演指揮者角色,協調 Client 需求與 Server 的能力

MCP Client & Server 的互動流程
Initialize: MCP Client 與 MCP Server 建立連線 (HTTP/SSE 或透過 mcp-remote),連線成功後,Server 處於待命狀態
Tool Discovery:Client 發送 tools/list 的請求給 Server
MCP Server 收到 tools/list 請求後會回傳所有工具的清單,包含每個工具的 schema (JSON, include description, parameters, …) (所以這時 Client 會有 MCP server 工具箱內所有的使用說明)
若要呼叫某個工具, MCP Client 發送執行請求給 Server
MCP Server 執行指定工具 (tools/call) 後回傳結果
舉例說明
我對 agent 輸入:今天天氣如何?
agent 會去看 client 的工具清單,決定要用工具還是能自行回答,然後 agent 發現 client 有提供 get_weather 這個工具。接著 agent 會請這個 client 去調用這個工具
client 收到任務後,找到提供 get_weather 這項工具的 server,接著請該 server 使用這個工具 (把需求打包成 MCP 標準格式,透過網路發送給遠端 Server)
server 收到請求後,會去執行 (背後邏輯是去打中央氣象署的氣象 API),得到結果後回傳給 client
client 收到結果,轉交給 agent
agent 拿到結果,潤飾之後,呈現在畫面上給我看:台北今天天氣很好,氣溫大約 25°C,是個適合出門的晴天喔!
註:之所以要透過 agent 呈現的原因是,回傳結果可能是一串結構化的資料,要在透過 agent 組織成語句之後再呈現。
MCP 架構

這張圖說明了 MCP 的架構,可以看到 一個 Host 是可以啟動多個 client 的,而 server 可以是在本地端,也能是在雲端,server 本身可能具有多項工具,通常是一個 client 配一個 server,但有時會因為有併發處理的需求,所以會開啟多個 client instance。
一個 server 內部會有三項東西,Resources, Tools, Prompts
- Resource 靜態資源
- Tools 動態功能,如圖中的 MCP Server2 就有 全台各縣市天氣預報、台北市各鄉鎮天氣預報、高雄市各鄉鎮天氣預報三種工具 (提供給 agent 的可執行函數)
- Prompts 提示詞,預設好的提示詞,讓 Agent 更容易學會如何使用這些資料。Prompts 是給 Agent 的「腦補說明書」(告訴它拿到資料後,應該怎麼思考、怎麼回話)。
這三項東西,都會在 client 跟 server 連線之後,回傳給 client,所以 agent 可以在收到使用者輸入的內容後,理解語意將關鍵字取出,寫成指令,再透過 client 傳給 server 做處理。
圖片右側定義了 MCP 運作的兩個維度
- Transport Layer 傳輸層
- 作用:定義 client server 之間如何握手和傳遞訊息。
- 兩大機制:
- stdio transport:用於本地端 server,透過電腦內部的標準輸入輸出來對話 (因為在本地端傳輸,所以不需要走網路協議,安全且快速)
- streamable HTTP transport :用於遠端 server,透過網路進行即時且連續的資料傳輸 (SSE (Server-Sent-Events) 是一種長連線,client連上線後,server 會保持連線不中斷,像串流一樣不斷把訊息傳給 client。算是一種 HTTP 協定的延伸,通常走80/443,底層仍是 TCP。)
- Data Layer 數據層
- 作用:定義對話的語言格式 (基於 JSON-RPC)
- 核心內容:規定了 server 應該如何定義 Resources、Tools、Prompts
- 數據層的溝通語言:JSON-RPC 2.0
- 當 Client 問你「你有什麼工具、資源和提示詞」時,你的 Server 應該回傳這樣的 JSON 結構:
| |
Agent
基本介紹
Agent 通常泛指 LLM (Claude, Gemini, Gpt …),在 MCP 中通常扮演三個角色:翻譯官、決策者、分析師
- 核心能力
意圖識別 使用者說的是「人話」,而 Server 只聽得懂「參數」 所以需要將輸入做拆解
舉例:你對 WealthWise 說:「昨天買宵夜噴了 200 塊。」
Agent 的工作: 它會從這句話分析出:
動作: 新增支出 (add_expense)。
金額: 200。
分類: 餐飲(宵夜自動對應到餐飲)。
備註: 宵夜。
工具選用與路徑規劃
面對複雜問題,它會決定呼叫工具的先後順序
舉例: 「幫我看看我現在的存款夠不夠買這台 $50,000 的筆電?」
Agent 的決策路徑:先呼叫 get_balance 工具拿到餘額(假設是 $45,000)。
大腦進行運算:$45,000 < 50,000$。
得出結論:不夠。
資料整合與人話回傳
Server 回傳的通常是乾燥的 JSON 數據,Agent 負責賦予它溫度。
舉例: Server 回傳: {“status”: “success”, “new_balance”: 45000}
Agent 的回覆: 「沒問題!已經幫你記下這筆 200 元的宵夜費了。目前剩餘預算還有 $45,000,這個月在餐飲上花得有點多,要稍微注意喔!」