2026年 OpenClaw MCP 接入:stdio 與 Streamable HTTP 傳輸選型示意

2026 年主流用戶端透過 MCP(Model Context Protocol) 把讀儲存庫、跑指令、叫內部 API 封裝成工具:stdio 以父子行程管線承載 JSON-RPC;Streamable HTTP 把同一段工作階段綁在可穿透 NAT 的長連線上(分塊或 SSE 依實作而定)。OpenClaw 閘道常卡在 cwd、緩衝、反代逾時與可執行檔路徑,而非協定字面。下文依「先選型、再逾時、最後 ENOENT」可複現;鍵名以你鎖定的版本為準,建議先在測試環固定一組最小工具呼叫再對照日誌。閘道對外 Webhook 與遞送逾時對齊可見 2026 年 OpenClaw 閘道 Webhook 與 GitHub 整合落地:公網回呼、簽章與時間戳驗證、401 與逾時排錯的可複現教學

一、stdio 與 Streamable HTTP:對照與邊界

stdio 適合同機、同使用者工作階段:IDE 或 CLI spawn 子行程,網路元件最少;代價是 cwd 繼承宿主,日誌與堆疊擠在同一 tty,多跳 SSH 要留意偽終端與行緩衝。Streamable HTTP 適合模型在 A、工具在 B:統一 URL、可加 TLS 與稽核;須處理中間層讀逾時(反代常見 60 秒級)與首包/心跳。口訣:同機 stdio;跨機或要稽核/擴展走 HTTPlaunchd、埠號與雙 Agent 順序見 2026 年 OpenClaw 閘道 launchd 穩定性排錯手冊:doctor/status/logs 對照清單、埠號占用與雙 LaunchAgent 衝突,在遠端常駐 Mac 上可複現實操

口訣:先把可執行檔絕對路徑WorkingDirectory 寫清楚,再談傳輸層;否則 HTTP 通了也會在第一次 tools/call 栽進 ENOENT。

二、工具逾時:三層對齊,別只改客戶端

介面仍顯示執行中,閘道或模型卻 context deadline exceededcanceled,子行程其實還在跑。逾時拆三層1)宿主對子行程讀寫 deadline;2)閘道對 MCP 工作階段逾時;3)反代 proxy_read_timeoutsend_timeout 與上游 keep-alive。只放寬一層會「偶成、尖峰必斷」。每次 tools/call 帶同一 trace_id 對齊三層日誌,再以長任務壓測尾延遲;上線前務必在尖峰併發下重播同一呼叫,確認沒有隱性隊列堵塞。

三、ENOENT:用「工作目錄+絕對路徑」複現並消除

ENOENT 常是相對路徑實際 cwd 不符systemdWorkingDirectory=、容器 WORKDIR、launchd 的 ProgramArguments 第一項,都不等於初始目錄;網路掛載還有大小寫/符號連結問題。複現:1)啟動列印 process.cwd()2)指令與腳本改絕對路徑;3)必要時 strace -e trace=openatdtruss 看首次失敗路徑。刻意錯誤相對路徑應穩定重現,再回滾確認閉環。

四、上線前自檢清單

下列勾選後再切生產流量。

  • stdio 子行程是否關閉全緩衝(例如 Python -u 或同等做法)?
  • HTTP 傳輸是否在反代層關閉對長回應的緩衝,並放通 SSE/分塊?
  • 工具逾時是否在客戶端、閘道、反代三處寫成一致或可解釋的分層?
  • ENOENT 是否已用絕對路徑+顯式工作目錄排除,並在 staging 複現過一次?

在 Mac mini 上跑 MCP:原生 Unix、低功耗常駐

工具鏈與閘道在 macOS 膠水最少:終端機、SSH、Homebrew、launchd 原生;Apple Silicon 統一記憶體讓模型助理與本機工具同機較少 OOM。靜音與約 4W 待機適合長期在線;Gatekeeper、SIP、FileVault 收斂無人值守攻擊面。

若要把接入與排錯跑在雲上獨享、可 SSH 的 Mac miniMac mini M4 仍是 2026 年高性價比起點;請開啟 Macstripe 首頁 比對機型與區域,把執行環境固定在你可控的目錄與映像。