生活分享
Claude Code|MCP 排錯實驗室:斷線、逾時與格式錯誤
用固定故障重現診斷及復原流程。MCP 顯示錯誤時,先找出故障發生在啟動、協定、工具或結果處理哪一層,比反覆重新安裝更有效。本篇提供會退出、輸出錯誤格式和持續等待的伺服器材料,讓你練習有限時間內結束、保留診斷資料並恢復正常連線。
閱讀時間約 7 分鐘

進階 · CLI
MCP模型上下文協定(MCP)是什麼:連接工具與資料的共同介面MCP 是讓 AI 應用程式與外部工具、資料和提示範本交換資訊的開放協定,不是模型本身,也不保證接上就能完成任務。本文用查詢社區圖書室資料的例子,說明主機、用戶端、伺服器及工具、資源、提示的分工,並比較 MCP、A2A 與 Agent Skills。附連線驗證與權限檢查方法,幫你區分已設定、已連接、可呼叫與真正取得結果。閱讀全文 顯示錯誤時,先找出故障發生在啟動、協定、工具或結果處理哪一層,比反覆重新安裝更有效。本篇提供會退出、輸出錯誤格式和持續等待的伺服器材料,讓你練習有限時間內結束、保留診斷資料並恢復正常連線。
先讀自建 MCPClaude Code|建立自己的唯讀 MCP 工具讓 Claude 查詢本機練習待辦資料。本篇讓 Claude 讀取你自己提供的待辦資料。你會建立唯讀 MCP server,先用測試客戶端驗證工具清單與呼叫結果,再連進 Claude Code。完成不是畫面顯示 Connected,而是工具真的回傳指定資料、參數錯誤可以辨認,而且伺服器沒有修改原始檔案。閱讀全文與工具契約Claude Code|設計 MCP 工具名稱、輸入 Schema 與分頁讓模型能選對工具,也能正確處理空值與大量結果。MCP 連線成功之後,下一個問題是工具能不能被正確使用。本篇設計 list_tasks 與 get_task 的分工、輸入 Schema、查無資料及分頁結果,並用真正的 MCP 客戶端檢查空結果、錯誤參數和多頁資料,最後再觀察 Claude 是否選對工具。閱讀全文。下載第 82 篇材料,開啟 starter。需要 Node.js 22 以上,先執行 npm ci --ignore-scripts。閱讀約 20 分鐘,實作約 45 分鐘;本機故障測試不需要 Claude 登入。
先保留一個能工作的對照組
閱讀完整文字說明
MCP 排錯實驗室:斷線、逾時與格式錯誤,以流程和文件圖形呈現教學重點。
開始前執行 mcp/probe.mjs,確認正常伺服器能列出 list_tasks、get_task,並取得已知假資料。再執行 tests/mcp.test.mjs,確認契約測試通過。沒有正常基準時,後續所有失敗看起來都相似,很難知道故障是刻意注入還是安裝本來就壞。
node mcp/probe.mjs
node --test tests/mcp.test.mjs
記錄 Node、套件鎖定版本與工作目錄。教材使用 v2 的 client、server 套件,不與舊版單一 sdk 套件的匯入範例混用。若出現 module not found,先確認是在解壓縮出的正確資料夾安裝依賴,不要立刻修改協定程式。
本篇故障材料只是一個受控子程序,不接外部服務、不讀私人資料。每個案例都有正常退出或由測試客戶端關閉的方式。不要把故障伺服器放進日常設定,否則每次啟動 Claude 都可能重新遇到相同問題。
案例一:程序立即退出
fault.mjs 的 exit 模式會寫出 Injected exit 並以退出碼七結束。fault-probe.mjs 以真正的 MCP 客戶端連線,預期不能完成初始化,最後回報 connected=false 及錯誤。探測器本身以非零退出碼結束,表示受測連線失敗。
node mcp/fault-probe.mjs exit
七是故障伺服器的退出碼,一是探測器的失敗退出碼,兩者不必相同。讀者應記錄哪個程序回傳哪個數字。把所有數字放在同一欄叫 error code,會讓之後查日誌時誤以為伺服器換了錯誤類型。
常見真實原因包括執行檔不存在、依賴未安裝、程式啟動時拋錯及設定路徑不正確。先直接執行伺服器或用受控探測器觀察 stderr,再處理原因。不要把 stdout 亂加診斷文字,因為 stdio MCP 用它傳協定訊息。
案例二:標準輸出被非協定文字污染
invalid 模式在 stdout 寫入 not MCP JSON,然後等待。客戶端可能立即回報解析錯誤,也可能等到探測上限才結束;本課接受有限時間內失敗,但不接受成功連線。原始錯誤與 timeout 要照實保留,不能強迫每個版本顯示相同措辭。
node mcp/fault-probe.mjs invalid
這種問題常來自 console.log 啟動訊息、shell 包裝器輸出歡迎文字,或把一般 CLI 當 MCP 伺服器啟動。一般診斷訊息應送到 stderr,stdout 留給協定。移除污染後,再以正常客戶端完成列工具和呼叫,不能只看沒有紅字就停止檢查。
合法 JSON 也不一定是合法 MCP 訊息。JSON.parse 通過只驗證語法,仍可能缺少協定欄位、識別碼或握手流程。這也是本篇使用正式客戶端而不是單純讀 stdout 後解析的原因。
案例三:程序還活著卻不回應
hang 模式保持程序等待,不完成 MCP 初始化。探測器設定一點五秒連線上限,時間到後回報 timeout,再於 finally 關閉客戶端與所管理的傳輸。這是練習用的短時間;真實服務應依啟動和網路特性選擇合理上限。
node mcp/fault-probe.mjs hang
逾時表示客戶端在期限內沒有取得完成結果,不能推論服務一定完全沒有做任何事情。尤其工具具有寫入副作用時,回應遺失後直接重試可能造成重複操作。本課只測初始化,因此可以單純關閉再恢復;實際寫入流程需要冪等鍵或查詢確認。
不要把等待上限設得極短,再把每個正常服務都判成故障;也不要使用無限等待,讓使用者無法知道該如何停止。紀錄應包括開始時間、上限、結束狀態及是否留有程序。時間有合理誤差,測試重點是有限結束與正確狀態。
工具錯誤與連線錯誤分開測
恢復正常 server,再送入 limit=0 等不合法參數模型參數(Model Parameters)是什麼模型參數是訓練時調整、用來把輸入轉成輸出的數值,例如權重與偏差。本文用簡單算式示例說明參數如何影響預測,區分模型參數、訓練超參數、提示詞與生成設定,並解釋參數量、數值精度和啟用參數為何是不同指標。讀完能更準確閱讀模型規格,理解參數增加不等於知識逐條增加,也不代表每次聊天都在重新訓練模型。閱讀全文。這次連線和初始化都成功,失敗發生在工具輸入驗證。回應的 isError 不代表伺服器已崩潰;你應能接著用合法參數完成下一次查詢。
node --test tests/mcp.test.mjs
node mcp/contract-probe.mjs
還要檢查未知 id 與空清單。它們在本課是成功查詢的資料結果,不應與錯誤參數混在一起。使用者查不到某筆待辦時,重啟 MCP 伺服器可能完全沒有幫助,因為資料確實不存在。
HTTP 遠端連線還有 401、403、TLS 等情境,可參考授權實驗Claude Code|遠端 MCP 登入、授權範圍與重新認證在測試服務演練連線與權限故障。遠端 MCP 連不上時,可能是網路、協定、登入或權限問題,重登不一定能全部解決。本篇先用本機假服務辨認 401、403 與連線錯誤,再說明如何對你已取得授權的測試 MCP 服務完成登入、最小權限查詢與撤銷驗證。閱讀全文。先依階段分類,再決定重啟、重新認證、修正 scope 或調整參數,不要對所有症狀套用同一個解法。
一次跑完整故障集合
environment 測試會以子程序執行 exit、invalid、hang 三個探測器,確認非零退出與 connected=false;它也驗證本機 HTTP 假服務的三種授權回應。這份測試可以在沒有 Claude 帳號時完成,適合先排除材料本身的問題。
node --test tests/environment.test.mjs tests/mcp.test.mjs
這些測試使用自己建立的程序與本機端點,結束後應正常關閉。若超過預定時間仍不結束,先保存目前命令與程序識別,只停止本次測試啟動的程序。不要終止所有 Node,因為編輯器、開發伺服器也可能使用它。
測試通過的意義是故障按照預期被識別與結束,不是故障模式本身變成成功。因此報告應寫「故障測試通過,受測連線預期失敗」,讓讀者不會把非零退出誤看成教材有問題,或反過來把測試綠燈當成服務正常。
回到 Claude 驗證恢復
如果你曾把故障設定加入 Claude,只移除本課的伺服器項目,恢復正常 fixtures.mcp.json,建立新工作階段後查看 /mcp。先列工具,再呼叫已知的 list_tasks 查詢,最後確認結果仍是原本三筆假資料。登入受阻時,將這段保留待測。
不要只保存「Connected」截圖。恢復驗證要包含一次實際工具呼叫,才能知道新設定、資料層與回應處理都正常。若原本問題是 stdout 污染,還應確認新的診斷訊息已改到 stderr,沒有僅在某次執行剛好避開。
| 症狀 | 所在階段 | 第一個檢查 |
|---|---|---|
| 找不到程序、立即退出 | 啟動 | 命令、工作目錄、stderr |
| 無法解析協定 | 初始化 | stdout 污染、SDK 版本 |
| 一直等待 | 初始化或工具執行 | 上限、程序狀態、網路 |
| isError | 已連線的工具層 | 參數、Schema、業務錯誤 |
| 空結果 | 資料層 | 查詢條件及資料是否存在 |
完成判準與小練習
交付三種故障的命令與結果、工具錯誤對照、程序停止紀錄,以及恢復後的正常查詢。每個案例都能指出故障層級,不以重新安裝作為唯一答案。日誌只保留必要錯誤資訊,不帶入真實權杖或私人輸入。
小練習是在正常伺服器新增一條寫到 stderr 的診斷訊息,再確認契約測試仍通過;改回 stdout 時則應觀察協定問題。完成後恢復正確輸出通道,再繼續MCP 不受信任資料Claude Code|MCP 回傳含有指令時:資料與操作權限分開以無害的對抗案例測試工具資料處理。MCP 回傳的是外部資料,即使裡面寫著「系統指示」或「請立即修改檔案」,也不會因此取得操作授權。本篇用一份合成外部筆記,驗證 Claude 能擷取資料、指出可疑指令並維持原任務範圍,同時確認檔案和最後回報沒有受到不當影響。閱讀全文,了解連線正確也不代表回傳文字可以當成操作指令。
回 Claude Code 教學總目錄Claude Code 完整教學目錄:從入門到自動化依平台、程度與功能找到需要的教學,從 96 篇文章與共用練習專案逐步完成操作。這個教學中心把 Claude Code 分成 96 個可以獨立閱讀的小題目,從桌面、CLI、網頁與手機開始,再學 MD 規則、常用指令、Skills、MCP 與自動化。你可以依推薦路線循序學習,也可以直接搜尋正在遇到的功能、命令或檔名。目錄依目前公開狀態顯示可閱讀文章。閱讀全文
同主題延伸閱讀
生活分享
Claude Code|建立第一個 mod:在 Claude Code 行程內數工具呼叫
寫一個三檔案的 mod,用驗證器與測試確認它掛上的事件。文件把 mod 定義成多了入口檔的 plugin:入口檔叫 hooks module,Claude Code 在事件發生時呼叫裡面的函式,函式可以觀察、改寫或接手事件。
生活分享
Claude Code|Git Worktree 平行工作
隔離多個任務的檔案與分支。Git Worktree 讓同一儲存庫擁有多個工作目錄,各自使用分支與檔案。本篇會把待辦篩選與文件整理分開,確認兩個 session 不會直接改到彼此的檔案,再把其中一個成果整合回主分支。你也會知道何時可以安全清理工作目錄。
生活分享
Claude Code|雙 Worktree 實作與衝突整合
隔離兩項功能,最後完成整合與回歸。兩個 Claude 工作階段同時編輯專案,最容易出現的問題是互相改到同一份檔案,或各自測試通過、整合後卻失敗。本篇用兩個 Worktree 分別處理篩選預設值與介面文字,故意製造一次小衝突,再完成整合、驗證與清理。你不需要先啟用 Agent Teams。
生活分享
Claude Code|比較流程品質、用量與執行時間
以同一資料集比較兩種工作方法。比較兩種 Claude 工作方法時,不能只挑成功那一次,也不能只看第一個答案有多快。本篇用固定案例、原始紀錄和一致判準,比較品質、重試、等待與人工整合時間,最後寫出有樣本數與限制的報告,而不是保證某個方法一定省錢。
引用本文的文章
最新旅遊情報攻略

情報
2026 韓國楓葉預測:雪嶽山 10 月 20 日、首爾近郊 10 月底、內藏山與漢拏山 11 月上旬
韓國山林廳 2026 年 9 月 22 日公布的楓紅高峰預測:雪嶽山 10 月 20 日,春川、國立樹木園到首爾植物園落在 10 月 28 日到 11 月 2 日,內藏山 11 月 4 日、漢拏山 11 月 6 日,整體比最近 5 年晚約 0.8 天。整理各地楓樹與銀杏的預測日、首爾出發怎麼排,以及出發前去哪裡看即時楓況。2026 年 10 月查證。
- 季節活動
- 自然
- 觀景

攻略胡志明市
胡志明市到頭頓一日遊:白藤碼頭搭高速船、船票與班次,下船就是胡梅纜車與耶穌基督像
人在胡志明市挪一天去頭頓看海:市中心的白藤高速船碼頭搭船,航程 120 分鐘到頭頓的胡梅碼頭,平日成人 320,000 越南盾、週末 350,000,回程末班平日 15:00。下船就是胡梅纜車站,同一條路上有白宮,小山頂上是耶穌基督像。平日一天只有兩班船,整天要從末班船倒推著排。
- 交通
- 行程範例
- 海灘

攻略沖繩
沖繩不開車攻略:單軌只到浦添,美麗海水族館要坐兩個多小時的巴士,回那霸的最後一班直達車 17:22 就開走
不租車的沖繩怎麼移動:那霸市區靠沖繩都市單軌電車(ゆいレール),那霸機場站到終點てだこ浦西 19 站、17 公里、37 分鐘,一日券 1,000 日圓;美麗海水族館有那霸機場直達的高速巴士,單程 2,000 日圓起、官方時刻表上 2 小時上下,下車後還要走 10 分鐘;古宇利島要在今帰仁村役場轉車,當天來回光坐車就六個半小時;回程的最後一班直達車 17:22 就從記念公園前開走(2026 年 9 月查證)。
- 交通
- 行程範例
- 預算
資料來源
- Connect Claude Code to tools via MCP · 查證日期:
- Build an MCP server - Model Context Protocol · 查證日期:
- or · 查證日期: