2025 年在台北 iThome 臺灣雲端大會 (CloudSummit) 給一場 Workshop,主題是「一步步學會用 Golang 開發 MCP 伺服器與客戶端 (Model Context Protocol)」。這次的工作坊旨在幫助開發者了解如何使用 Golang 實現 MCP 協議,並提供實際的程式碼範例和操作指南。我已經先將 Workshop 的內容整理成一個 GitHub Repo,您可以在 go-training/mcp-workshop 找到相關資源。詳細 Workshop 內容,請參考此連結。
課程內容
本工作坊由一系列實作模組組成,每個模組展現如何在 Go 中構建 MCP(Model Context Protocol)伺服器及相關基礎架構。
- 01. 基礎 MCP 伺服器:
- 提供支援 stdio 及 HTTP 的極簡 MCP 伺服器實作,採用 Gin。示範伺服器設置、工具註冊、以及日誌與錯誤處理最佳實踐。
- 重點特色: stdio/HTTP 雙通道、Gin 整合、可擴充工具註冊
- 02. 基礎 Token 傳遞:
- 支援 HTTP 與 stdio 的透明認證 token 傳遞,說明 context 注入與帶認證請求的工具開發。
- 重點特色: Token 傳遞、context 注入、認證工具範例
- 03. OAuth MCP 伺服器:
- 具備 OAuth 2.0 保護的 MCP 伺服器,展示授權、token 與資源 metadata 端點,包含 context token 處理及 API 認證用工具。
- 重點特色: OAuth 2.0 流程、受保護端點、context token 傳播、demo 工具
- 04. 可觀測性:
- MCP 伺服器的可觀測性與追蹤,整合 OpenTelemetry 及結構化日誌,包含指標、詳細追蹤與錯誤回報。
- 重點特色: 追蹤、結構化日誌、可觀測中介、錯誤報告
- 05. MCP Proxy:
- 聚合多個 MCP 伺服器於單一端點的 Proxy 伺服器。支援即時串流、集中設定與安全。
- 重點特色: 統一入口、SSE/HTTP 串流、彈性設定、提升安全性
投影片
這次工作坊的投影片已經上傳到 Speaker Deck,您可以在 這裡查看。在 90 分鐘的工作坊,完全沒有時間讓大家練習,原因是在 MCP 的 OAuth 流程比較複雜,所以花了蠻多時間在講解這一部分,會再寫另一篇文章來介紹如何在 Golang 中實作 OAuth 流程。
完整 OAuth token 流程詳見 MCP 規範。細部流程可以看底下簡化的流程圖:
之後找機會深入跟大家解釋如何在 Golang 中實作這個流程。