發表文章

目前顯示的是 6月, 2025的文章

原來使用 .net 寫個 MCP Client 也如此簡單

圖片
之前我發了一篇文章,標題是「原來使用 .NET 寫一個 MCP Server 如此簡單」。結果有不少朋友留言敲碗,說:「只有 Server,沒有 Client,這怎麼行?」 呃…我只能說,這個要求顯然 很有道理 。🙄 所以今天趁上課的空檔,補一篇文,來介紹如何撰寫 MCP Client ,把整個架構補齊。 你會發現,其實,開發 MCP Client 也非常簡單耶。 MCP 架構的本質 不過,在開始之前,有一個觀念需要釐清:無論是 MCP Server 或 MCP Client,其實都與 LLM(大型語言模型)沒有 直接關聯 ,這和很多人理解的不同。 MCP 架構的本質,只是為了讓 AI Agent(或 Chat Bot)更容易知道怎麼呼叫外部的服務提供者(就叫做MCP Server),並且能方便地列舉出這些服務所提供的功能(就叫做MCP Server Tool),以及清楚了解每個功能呼叫時所需的參數。某種程度上,它的角色有點類似早期 Web Service 時代的 WSDL/SOAP ,或是現代 REST API 架構中的 Swagger/OpenAPI 👉👉 都是用來提供一種 標準化的服務描述與呼叫方式 ,使服務整合變得更一致、更具可預測性。 至於, 什麼時候該呼叫哪一個功能 、呼叫時所要填入的具體參數 值 是什麼,這些判斷與決策的工作,才是由 AI(LLM) 來處理的。而真正去執行這些呼叫動作的,則是 AI Agent(或者稱之為,MCP Host)。 簡單的說就是,對談機器人(或AI Agent)可以藉由 LLM 來呼叫遠端的服務,而 MCP 架構則讓對談機器人可以得知有哪些服務可供呼叫,並且在呼叫時應該要傳入哪些參數。 因此,要開發一個能夠呼叫 MCP Server 服務的 Client 端,自然也需要建立一個具備決策與執行能力的 AI Agent。 這部分,我們待會會採用 Semantic Kernel 作為實作的基礎框架。 之前我們 早已介紹過 Semantic Kernel ,它不僅可以介接各種 大語言模型(像是 OpenAI 或 Azure OpenAI),還能彈性地設計與掛上各種 skills 與 plugins ,非常適合用來打造具備「對談 → 意圖理解 → 功能選擇 → 發出呼叫」這一整套流程的AI Agen...

原來使用 .net 寫個 MCP Server 如此簡單

圖片
MCP 的重要性與意義 MCP 的重要性在於它建立了一個標準化的架構,讓開發者能夠快速建構出給 AI Agent 呼叫的各種功能。 舉例來說,假設我們希望實現一個 可以透過自然語言對談的請假功能 ,傳統上我們必須建立一個前端 Chat Bot 作為 UI、還得撰寫後端 API、資料驗證邏輯、資料庫存取介面…等,另外還要設計 Chat Bot 的對話邏輯,才能把請假功能整合到Chat Bot的對談訊息中。 但在 MCP 的架構下,這樣的流程可以大幅簡化。 開發者只需要實作幾個「請假功能」的介面(Tool Interface),接著定義好運行這個功能需要輸入哪些參數(例如請假人、開始時間、代理人、事由…etc.),並透過 JSON 來描述這些參數的格式與驗證邏輯。接著,AI Agent 便可以在對話過程中,自動根據對談前後文理解使用者意圖,挑選出適合的Tool來運行,主動發出呼叫的請求。如此一來,大幅簡化了AI Agent開發的難度。(本質上就是 Function Calling 的概念) 而 .net 又把這個難度降低到人人可以開發的程度,底下是一個使用 .net 開發的 請假功能 MCP Server,並且使用 GitHub Copilot來呼叫的例子: 其實我之前用 Semantic Kernel做個類似的範例,只是如今 .net 讓它變得更簡單,而且輕易地可以透過MCP架構讓不同的 MCP Client端呼叫使用。 如何用 .NET 撰寫 MCP Server 要使用 .NET 撰寫 MCP Server 非常簡單,受益於 Microsoft.Extensions.Hosting 和 ModelContextProtocol 套件,我們可以在幾分鐘內輕鬆地實作 MCP Tool 和 MCP Server 。 以下是MCP Server的完整程式碼: using Microsoft . Extensions . DependencyInjection ; using Microsoft . Extensions . Hosting ; using Microsoft . Extensions . Logging ; using ModelContextProtocol . Server ; using System ...