判斷:適合在受控測試環境中按需啟用私有 IP 例外;不適合為了讓請求通過,就在共用或對外服務的 MCP Fetch 上長期放寬限制。 MCP Fetch 2026.10.10 更新後,預設會拒絕解析到非公開位址的目標;先核對實際解析結果,再決定要修正測試目標,還是限定範圍啟用例外。官方發布記錄及Fetch 更新紀錄列出了這項變更。

這篇適合用 AI Agent 測試本機 Web 應用、並在升級後遇到抓取失敗的開發者與平台工程師。
如果測試牽涉共享網路或正式服務,您可以據此判斷應改用隔離環境,而不是擴大伺服器的網路存取範圍。

最後更新於 2026 年 10 月 13 日;我們核對了 MCP Servers v1.0.0 發布頁、Fetch README及相關變更記錄。若官方文件後續調整選項或預設行為,請以當前 README 為準。

先確認被拒絕的目標是否真的在公開網路

localhost 是指向目前執行環境本身的主機名稱;它通常會解析到回環位址,並非可供一般公開網路連線的主機。私有網路位址也不等同於公開網址:它們可能只在某個區域網路或隔離網段中可達。至於中繼資料位址,則可能連到雲端執行環境提供的敏感設定資料。

因此,錯誤訊息出現「拒絕」時,我們會先確認網址的實際解析目標,而不是先重啟 Fetch、修改應用程式或把模型產生的 URL 當成連線證據。官方更新確認會拒絕私有、回環及中繼資料等位址;Fetch 的位址檢查程式碼可用來核對目前實作的檢查邏輯。

需要判讀地址範圍時,可對照 IANA IPv4 特殊用途位址登記表、IANA IPv6 特殊用途位址登記表,以及 RFC 1918 私有網路位址說明。這些資料能協助區分「網址看起來公開」與「解析後位址可公開連線」;兩者並不必然相同。

排查時要把以下狀況分開:

  • localhost 或回環位址指向執行 Fetch 的本機環境,不一定是開發者正在使用的那台電腦。
  • 局域網或其他私有 IP 可能在瀏覽器所在的網段可達,卻不應由未受限制的 Agent 任意存取。
  • 公開網域名稱也可能解析到非公開位址,或在重新導向後轉往內網。
  • 若目標解析為公開位址但仍失敗,才繼續檢查服務是否監聽、連線是否到達,以及 Fetch 所在環境的代理與出口設定。

直接抓取 localhost 失敗時,檢查執行位置與監聽狀態

常見誤判是:在開發者電腦的瀏覽器可以開啟 localhost,就推定 MCP Fetch 也能連到同一個服務。實際上,Fetch 可能在容器、遠端工作環境或另一個伺服器程序內執行;對它而言,localhost 指的是它自己的網路命名空間。即使本機 Web 應用正常,目標仍可能指錯執行環境,或因預設地址檢查而被拒絕。

我們會在同一個執行環境分別核實兩件事:服務是否正在預期的介面與連接埠監聽,以及 Fetch 記錄中的目標名稱最後解析成什麼位址。前者用來判斷服務是否可接收連線;後者用來判斷請求是否被安全規則擋下。兩者缺一,都不足以把問題歸咎於應用程式故障。

排查或處理方式 適用情況 安全評估
修正目標主機或使用測試環境內可達的服務名稱 localhost 指向了 Fetch 自身,而非應用所在位置 較高:不需放寬私有位址限制
在隔離測試環境啟用允許私有 IP 的選項 測試確實需要抓取同一環境內的本機服務 中等:設定範圍與呼叫來源必須受控
在共用或正式執行環境長期允許私有位址 想讓不同來源的 Agent 都能抓取內網 較低:可能把額外內網資源暴露給請求

這是依官方文件所述預設行為與例外範圍作出的定性比較,不是完整安全稽核或實測評分。如果只是要確認本機程式有沒有回應,優先選擇在同一隔離環境測試,或調整服務名稱與路由;不要先把所有私有 IP 都納入長期允許範圍。

公開網址失敗時,沿重新導向逐站核對

從公開網址開始,不代表整條請求鏈都會留在公開網路。頁面可能重新導向至另一個主機;新的主機名稱再解析到私有或回環位址,就可能觸發拒絕。更新後的檢查涉及重新導向後的請求,因此只查第一個網址,容易把真正的觸發點漏掉。

我們會依請求鏈逐段檢查:記下起始網址、每次重新導向的目標主機,以及各目標在 Fetch 所在環境的解析結果。若拒絕只發生在重新導向之後,先確認該導向是否由應用程式預期產生,再判斷應修正測試網址、測試設定或服務路由。不要因為第一個網址是公開網站,就直接把後續目的地視為可信任。

以下情況尤其值得查看完整請求鏈:短網址或登入流程、由應用程式組合的跳轉網址,以及依地區或登入狀態改變目的地的頁面。若 Agent 只回報「抓取失敗」,請取得 MCP Fetch 的錯誤內容與可用的請求記錄,再逐一對照;模型摘要不是 DNS 或網路路由的診斷結果。

同一網域有時成功、有時遭拒,檢查 DNS 與代理邊界

同一個網域名稱可能因執行環境、DNS 回應或代理設定不同,連到不同位址。因此,即使某次請求成功,也不能推論之後每次解析都會得到相同結果。特別是 Fetch 與一般瀏覽器使用不同代理或解析路徑時,兩邊看到的目的地可能不一致。

我們會在 Fetch 實際執行的環境確認解析結果,並記錄請求是否經過代理。若網域解析到私有位址,應先確認這是預期的測試路由,還是 DNS 重新綁定、錯誤設定或不受信任輸入造成的變化。代理代為解析主機名稱時,Fetch 可觀察到的位址資訊也可能不同;不能把本機 DNS 檢查結果直接當成代理端的解析證據。

官方文件對 DNS 重新綁定與代理解析等限制有明確邊界;預設拒絕能降低部分風險,但不等於完整 SSRF 防護,也不能保證所有代理路徑都能以相同方式驗證。MCP 官方安全建議同樣強調,MCP Server 的安全需結合執行權限與環境隔離處理。

只有測試確有需要時才開啟私有 IP 例外

官方 Fetch README 說明可使用 --allow-private-network 啟動選項允許存取私有網路位址;實際採用前,請先核對目前安裝版本的 README 選項說明,並確認部署方式會把設定套用到哪個 Fetch 程序。不要假設它只對單一 URL 生效,也不要把它當成一次性請求的臨時授權。

這項例外適合用於可信、隔離且用途明確的本機測試;若 MCP Server 由多個 Agent、使用者或工作共用,就應先釐清誰能呼叫它,以及它所處網路能連到哪些資源。若目標可改成公開測試服務、專用測試網段,或同一環境可達的受控服務名稱,通常不必為了方便而擴大允許範圍。

設定與驗收時,逐項完成以下勾選:

  • [ ] 確認錯誤對應到私有、回環或中繼資料位址,而不是僅憑模型回覆判定。
  • [ ] 在 Fetch 所在環境核對目標名稱、解析結果與服務監聽狀態。
  • [ ] 如經過重新導向,記錄每一段目標主機與解析結果。
  • [ ] 確認只有可信測試工作能使用允許私有網路的選項,且沒有把共用或正式服務一併放寬。
  • [ ] 測試完成後移除例外並重啟相關程序,再確認原有拒絕限制已恢復。

這套流程也適用於使用 MCP reference servers 1.0 的升級驗收:不要只確認伺服器程序啟動成功,還要測試預期允許的目標與預期拒絕的目標。需要規劃 Agent 可存取哪些網路資源時,可先參考 zekmac 的雲端 Mac 環境入口;若測試仍依賴隔離環境,則應把執行位置、網路邊界及測試資料一併納入部署設計。

常見問題

MCP Fetch 的拒絕是否代表本機伺服器故障?

不一定。若目標解析到回環或私有位址,拒絕可能是新版的預期保護,而非服務故障。只有在同一執行環境確認目標位址、監聽狀態與請求路徑後,才適合判斷服務是否異常;瀏覽器可以連線,不能單獨證明 Fetch 使用相同網路路徑。

如何在 MCP Fetch 中存取本機開發伺服器?

先判斷 Fetch 與開發伺服器是否位於同一執行環境,再核對服務監聽介面與名稱解析。只有確實需要私有網路存取時,才依當前官方 README 設定 --allow-private-network,並把它限制於可信測試程序;測試結束後移除設定,驗證預設限制恢復。

公開網址跳到內網時,應檢查哪裡?

檢查完整重新導向鏈,而不是只看最初輸入的公開網址。逐段查看重新導向目的地、主機名稱及 Fetch 所在環境看到的解析結果;若某一跳進入私有或回環位址,先確認該跳轉是否為預期設計,再修正測試目標或隔離方式。

允許私有 IP 是否能完整防止 SSRF?

不能。這個選項會放寬原本預設拒絕的私有位址限制;代理代為解析、DNS 重新綁定及其他網路路徑仍須按官方文件的限制評估。若 Agent 可能處理不可信網址,還應採用網路隔離、出口控管及限定呼叫權限,不能只依賴 Fetch 的預設檢查。

若目前的本機測試依賴共用工作站或既有雲端執行環境,常見代價是不同專案互相影響、網路邊界難以驗證,且測試完成後不易確認例外是否已收回。需要短期隔離的 macOS 測試環境時,可比較現有方式與 zekmac 的租用方案;長期固定高負載或必須連接實體設備,則應先評估自購 Mac 或本地部署是否更合適。進一步規劃測試環境前,可先查看 zekmac 的方案與租用資訊,再依工作負載與隔離需求決定。

常見問題

MCP Fetch 更新後,為什麼 localhost 請求會被拒絕?

新版會檢查目標解析後的網路位址;若位址屬於回環、私有網路或中繼資料等非公開範圍,預設就會拒絕。先在同一執行環境確認服務監聽狀態與名稱解析結果,再判斷這是預期的安全攔截,還是應用程式本身沒有正常回應。

要讓 MCP Fetch 存取本機開發伺服器,應該怎麼設定?

只有在可信任、隔離的測試工作中確實需要本機存取時,才依官方 README 使用允許私有網路位址的啟動選項。設定前先確認該 MCP Server 的執行範圍與可呼叫者;測試結束後移除例外並重新啟動,確認預設拒絕行為已恢復。

公開網址重新導向到內網位址,MCP Fetch 會攔截嗎?

可能會。檢查不應只看最初輸入的公開網址;重新導向後的新主機也可能解析到回環或私有位址。查看完整請求鏈,逐次記錄重新導向位置與該環境看到的解析結果,才能找到實際觸發拒絕的目標。

開啟私有 IP 存取後,還有哪些網路安全風險?

例外會讓 Fetch 能嘗試連線到原本預設阻擋的私有位址,因此若輸入網址可受外部內容影響,或服務可存取未預期的內網資源,風險會增加。此選項不是完整 SSRF 防護,也不能取代網路隔離、出口規則與對重新導向及代理行為的檢查。

延伸閱讀

zekmac M4 遠端節點

為受控測試準備一台專屬 Mac

透過 zekmac 租用實體獨佔的 Mac mini,讓測試環境與本機開發工作分開運行。