stdio 和 SSE 這兩個名字是什麼意思?
stdio 是 standard input/output 的縮寫,白話就是「標準輸入輸出」——電腦程式最基本的通訊方式,就像兩個程式之間接了一條看不見的管子,一邊寫進去、另一邊讀出來。不用網路、不用 port,設定極簡單。
SSE 是 Server-Sent Events 的縮寫,是一種讓伺服器透過 HTTP 連線持續推送訊息給客戶端的技術。你可以把它想成「讓網路連線保持打開、Server 隨時能送東西過來」,比傳統 HTTP 的「問一次答一次」更適合串流回傳的場景。MCP 用 SSE 搭配 HTTP,讓 Claude 和 Server 能跨機器即時通訊,連憑證和安全控制都留在你自己的 Server 裡,不交給 Claude。
本機開發完之後要給團隊用,需要把 stdio 改成 SSE/HTTP 嗎?
通常需要,但不必從頭重寫邏輯。大多數 MCP Server 框架把傳輸層和業務邏輯分開,切換傳輸只是換掉那一層,工具定義和執行邏輯都不用動。
切換時要同時處理幾件事:加上認證機制(API key 或 OAuth),因為 HTTP 上的 Server 任何人都能嘗試呼叫;設好 HTTPS 加密;確認防火牆或路由規則允許你要服務的用戶連進來。本機測試時這些都不需要,上線就一個都不能省。最後要測試的問題只有一個:「這個 Server 如果被一個沒有合法 token 的人呼叫,它會拒絕嗎?」
SSE/HTTP Server 架好後,怎麼確認它是安全的?
安全檢查有幾個層次。第一層是認證:確認沒有有效 token 的請求會被拒絕,不是只傳回錯誤但不阻擋。第二層是授權範圍:認證通過不等於可以做所有事,檢查每個 token 能呼叫哪些工具、查哪個範圍的資料。
第三層是輸入驗證:不要假設 Claude 送來的參數都是乾淨的,像對待任何外部輸入一樣做格式和範圍檢查。第四層是日誌:每一次請求都記下來——誰呼叫了什麼工具、帶什麼參數、回傳什麼。這四層都到位,出問題才查得到根源。
進階:MCP 規格有沒有在演化,傳輸協定會不會改?
MCP 規格由 Anthropic 主導,仍在活躍發展中。stdio 和 SSE/HTTP 是目前的主要選項,但規格設計成可擴充的,加入新傳輸層不會打破現有實作。
對開發者的實際意義是:把傳輸層的選擇寫成容易抽換的方式,不要硬編碼進業務邏輯裡。MCP 的核心優勢是工具定義和傳輸解耦——只要工具定義符合規格,換傳輸、換版本都不需要重寫工具。追蹤 Anthropic 和 MCP 社群的公告,有破壞性變更時通常會有明確的遷移指引。
場景:小陳剛做好一個讓 Claude Desktop 讀取本機 SQLite 的 MCP Server。
開發初期他用 stdio——Server 和 Claude Desktop 跑在同一台 Mac,在 claude_desktop_config.json 裡指定執行路徑,三分鐘搞定,不需任何網路設定。他用這個方式測了一個月,工具邏輯都穩了。
要上線給團隊時:他把傳輸層換成 SSE/HTTP,加上 API key 驗證和 HTTPS 憑證,團隊成員各自在 Claude Desktop 設定伺服器 URL 和自己的 key 就能連到同一個 Server。工具定義和查詢邏輯一行都沒動。
stdio vs SSE/HTTP の核心取捨是設定簡單性 vs 可擴展性。
stdio 的優勢是零摩擦:沒有網路設定、沒有認證、沒有 HTTPS 憑證,本機開發三分鐘上手。代價是只能一人一機,無法共用給團隊或遠端存取。
SSE/HTTP 的優勢是擴展能力:Server 可以放在任何地方,有授權的人都能連。代價是多了一整層必須認真對待的安全責任——認證、授權、HTTPS 缺一不可。選哪個,就看使用場景:個人工具先 stdio,有共用需求再 SSE/HTTP,不要因為「比較專業」而給自己加不必要的複雜度。