如果你已經讀過本站《MCP Server 排名與評測》並裝好了幾個官方 Server,下一步往往是自己封裝內部系統,或維護 fork 過的社群 Server。2026 年的變化主要集中在三方面:協議治理開源化、傳輸層收斂(Streamable HTTP)、工具/資源描述的 Schema 更嚴格。
好訊息是:大多數「薄包裝型」Server——把現有 API 用官方 SDK 暴露為 tools/list + tools/call——不必重寫業務邏輯,升級依賴 + 迴歸測試往往就夠。需要改程式碼的,通常是踩了已廢棄協議細節、或自己實現了傳輸/握手層。
2026 有哪些實質變化
| 領域 | 2024–2025 常見做法 | 2026 推薦做法 | 對 Server 程式碼影響 |
|---|---|---|---|
| 治理 | Anthropic 主導早期規範 | Agentic AI Foundation 開源治理,多廠商共建 | 關注 changelog,鎖定 SDK 大版本 |
| 傳輸 | stdio + 早期 SSE | stdio(本機)+ Streamable HTTP(遠端) | 遠端部署需適配新傳輸;純 stdio 影響小 |
| 能力協商 | capabilities 欄位較鬆散 | initialize 握手更明確,錯誤碼統一 | 自定義握手邏輯需對照新版 SDK |
| 工具描述 | inputSchema 各家子集不一 | 更貼近 JSON Schema,description 更受重視 | 補全 Schema 欄位與樣例校驗 |
| 安全 | 設定分散、許可權偏大 | OAuth、最小許可權成 Host 側標配 | Server 側仍要限制 scope,少改協議多改設定 |
對絕大多數開發者而言,真正需要動手的不是重寫工具實現,而是升級 SDK、核對 Schema、跑回歸。這與《AI Agent 與 MCP 技術演進》一文中的分層一致:MCP 變的是「連線與描述」,不是業務 API 本身。
要不要改程式碼:決策樹
- 你用的是官方
@modelcontextprotocol/sdk嗎?
是 → 先升級到 2026 推薦的穩定大版本,跑下文檢查清單;業務程式碼通常不用動。
否 → 評估遷移到官方 SDK 的成本,往往低於自己維護協議細節。 - 你是否自定義了傳輸層(手寫 SSE/WebSocket)?
是 → 需要對照 Streamable HTTP 檔案改造或改用 SDK 內建傳輸。
否(僅 stdio)→ 大機率只升級依賴。 - 你是否解析了非公開的 JSON-RPC 欄位?
是 → 必須改;改用 SDK 公開 API。
否 → 繼續下一項。 - 工具
inputSchema是否缺少type/properties/description?
是 → 補 Schema(可用 JSON 工具箱本機校驗),不必改工具執行邏輯。
否 → 以迴歸測試為主。 - Host 升級後工具列表為空或 call 失敗?
是 → 按遷移步驟排查 initialize 與 capabilities。
否 → 鎖定版本,納入 CI 定期 smoke test。
結論:約 70% 的自建 Server 屬於「升級 SDK + 補 Schema + 設定調整」;只有深度定製傳輸或依賴廢棄欄位的才需要實質性改程式碼。
相容性檢查清單
在測試環境用目標 Host(Cursor / Claude Desktop / VS Code)連線你的 Server,逐項打勾:
| # | 檢查項 | 透過標準 |
|---|---|---|
| 1 | 程式啟動 | stdio 無崩潰;日誌無未捕獲異常 |
| 2 | initialize | 返回 serverInfo、capabilities;無 protocol version 錯誤 |
| 3 | tools/list | 工具名、description、inputSchema 完整可見 |
| 4 | tools/call(讀操作) | 合法引數返回 JSON 內容;非法引數返回結構化錯誤 |
| 5 | tools/call(寫操作) | 許可權受限時明確拒絕,不靜默失敗 |
| 6 | resources(如有) | resources/list、resources/read 正常 |
| 7 | 大結果集 | 超限時截斷或分頁,不撐爆 Host 上下文 |
| 8 | 併發 | 連續多次 call 無狀態錯亂 |
| 9 | 升級前後對比 | 同一組用例在新舊 Host 上行為一致 |
| 10 | Schema 校驗 | 樣例輸入/輸出透過 JSON Schema 本機校驗 |
建議把 3–5 的用例固化為 JSON 檔案納入 CI:Mock Host 發請求,斷言響應結構與 Schema 一致——這與 API 契約測試思路相同。
舊版遷移步驟
階段一:盤點(半天)
- 記錄當前 SDK 版本、Node/Python 執行時版本、傳輸方式(stdio / HTTP)
- 匯出當前
tools/list的 JSON 快照,留作 diff 基線 - 確認 Host 側 MCP 設定(
mcp.json/ Cursor settings)中的 command 與 env
階段二:升級依賴(1 天)
# Node 示例:升級官方 SDK 後重啟 Server
npm install @modelcontextprotocol/sdk@latest
# 鎖定 minor,避免生產漂移
npm pkg set dependencies.@modelcontextprotocol/sdk="^1.x"
Python 專案同理升級 mcp 包。升級後先跑單元測試,再連真實 Host。
階段三:適配傳輸(按需)
- 僅本機 stdio:通常無需改動,確認 Host 仍能找到可執行入口
- 遠端共享:從舊 SSE 遷到 Streamable HTTP,增加 Bearer Token 或 OAuth;勿將無鑑權端點暴露公網
階段四:Schema 與錯誤格式(1–2 天)
- 為每個工具補全
description,減少模型誤呼叫 - 錯誤響應使用 SDK 推薦的結構化格式,避免純文字堆疊直接進 Host
- 在 JSON 工具箱校驗每個工具的 inputSchema 與 2~3 組樣例 payload
階段五:灰度與回滾
- 測試環境全量回歸 → 個人開發者先升級 → 團隊分批
- 保留舊版 Server 分支或 Docker 映象 1~2 個版本,便於快速回滾
- 監控
tools/call失敗率與 Host 日誌中的 protocol 關鍵字
Schema 與工具定義注意事項
2026 年 Host 對工具 Schema 的容忍度更低:缺少 type: object、required 與欄位 description 的 Server,更容易出現模型填參錯誤或 Host 直接拒絕註冊工具。
{
"name": "query_orders",
"description": "按使用者 ID 查詢最近訂單,只讀",
"inputSchema": {
"type": "object",
"properties": {
"user_id": { "type": "string", "description": "使用者 UUID" },
"limit": { "type": "integer", "description": "返回條數,預設 10", "default": 10 }
},
"required": ["user_id"]
}
}
若工具返回結構化 JSON,建議同樣定義 output Schema(或在 Host 側校驗),避免下游流水線解析失敗。開發階段用 JSON 工具箱本機驗證,資料不上傳伺服器。
Host 與 Server 版本矩陣
| 場景 | Server 是否要改程式碼 | 建議 |
|---|---|---|
| 官方 npx Server,未 pin 版本 | 一般不需要你改 | 設定裡鎖定包版本;關注上游 release note |
| 官方 SDK 薄包裝內部 API | 通常只升級 SDK | 補 Schema + CI smoke test |
| fork 社群 Server,半年未更新 | 可能需要 | 對比上游 PR 或改用官方替代 |
| 自研傳輸 + 自研握手 | 需要 | 遷移到 SDK 內建傳輸,刪除私有協議程式碼 |
| 僅升級 Host,Server 不動 | 可能間接失敗 | 成對升級,先測試環境驗證 |
常見問題 FAQ
2026 年 MCP 協議大改,所有 Server 都要重寫嗎?
不需要。若你用的是官方 SDK 且僅實現基礎 tools/list 與 tools/call,多數情況下升級 SDK 版本並跑一遍相容性檢查即可。只有使用了已廢棄欄位、自定義傳輸或舊版 capabilities 協商邏輯的 Server 才需要改程式碼。
只升級 Host(Cursor)不升級 Server 會怎樣?
常見表現是連線失敗、工具列表為空、或呼叫返回 protocol error。建議 Host 與 Server 同步升級到各自支援的最新穩定 SDK/執行時,並在測試環境先驗證。
stdio 和 Streamable HTTP 需要同時支援嗎?
個人本機場景繼續用 stdio 即可。團隊共享或多客戶端接入時,2026 起更推薦 Streamable HTTP(取代早期 SSE 方案)並加鑑權。二者可並存,按部署場景選擇。
工具引數的 JSON Schema 變了怎麼辦?
對照新版 SDK 的 Tool 定義介面,檢查 inputSchema 是否仍符合 JSON Schema 子集;用樣例 payload 在 JSON 工具箱本機校驗,再對比 Host 側實際 tool_calls 是否仍能解析。
如何快速判斷我的 Server 是否相容?
跑通五步檢查:initialize 握手 → tools/list 有返回 → 單次 tools/call 成功 → 錯誤響應格式正確 → 升級後迴歸測試。文中附有完整清單。
社群 npx 一鍵 Server 需要我維護嗎?
你不需要改它們的原始碼,但應鎖定版本號、檢視維護者是否跟進 2026 SDK,並在 CI 裡定期做 smoke test。生產環境避免 @latest 漂移。
總結
MCP 2026 更新並不意味著每個 Server 都要重寫。先判斷你是否依賴官方 SDK 與標準傳輸——若是,主線工作是升級依賴、補全 JSON Schema、跑相容性清單與灰度釋出。只有深度定製協議或長期未維護的 fork 才需要投入實質性改碼。
延伸閱讀:《2026 MCP Server 排名與評測》選型安裝;《MCP 與 JSON Schema 技術演進》理解整體棧。工具 Schema 與樣例資料,可在 JSON 工具箱本機校驗後再上線。