在 .NET 中建構 MCP 伺服器以公開現有服務
何時使用: 你使用 .NET,且希望在不重寫程式的情況下將商業邏輯公開給 Agent 使用。
前置條件
- .NET 8+ SDK —
dotnet --version
步驟
-
建立專案dotnet new console -n MyMcpServer。新增
ModelContextProtocolNuGet 套件。使用 MCP 的最小託管範本。✓ 已複製→ csproj + Program.cs 內含 MCP hosted service -
新增工具建立一個帶有
[McpServerToolType]的靜態類別。加入以[McpServerTool(Description="...")]裝飾的GetOrder(string id)方法,透過 DI 呼叫現有的 OrderService。✓ 已複製→ 工具可編譯,描述來自屬性 -
使用 Inspector 測試以 stdio 模式執行伺服器。透過
npx @modelcontextprotocol/inspector dotnet run啟動 MCP Inspector,呼叫 GetOrder。✓ 已複製→ 工具呼叫回傳訂單 JSON
結果: 一個已編譯、具強型別的 MCP 伺服器,可重複使用現有的 .NET 服務與 DI 容器。
注意事項
- 工具方法若為類別的實例方法,需要 DI 才能運作 — 在 ServiceCollection 中註冊該類別;SDK 會透過 DI 進行解析
- 非同步方法若缺少適當的取消權杖,會在關閉時卡住 — 在每個工具的最後一個參數加入
CancellationToken ct——SDK 會自動注入