返回首頁

GitHub Repo

Open WebUI 社群提出 MCP 去重修補,處理 FastMCP 清單結果重複送入模型

10 月 18 日的 Open WebUI 社群回報指出,FastMCP 工具傳回清單時,相同資料可能以文字與結構化內容重複進入模型上下文。當日已有修補提案,但尚未合併,實際 token 與成本影響仍須依工作負載量測。

NASA · Public domain · Image source
zh-Hant

Open WebUI 社群於 10 月 18 日提出一項 MCP 相容性問題:使用獨立 FastMCP 套件建立的工具若傳回清單,相同結果可能被送入模型兩次。回報者表示,已在 v0.12.3 與當時的 dev 映像重現,並提供最小工具與後端處理結果;當日另有貢獻者提出修補 PR。問題回報

關鍵在於同一份資料的兩種表示方式。MCP 規範允許工具透過 structuredContent 傳回 JSON 物件,並建議為了向後相容,同時在文字區塊提供序列化 JSON。因此,用戶端必須辨識兩者是否承載相同內容,才能避免重複,也保留文字沒有呈現的結構化資料。MCP 工具規範

回報中的 FastMCP 工具只傳回兩個顏色字串,文字區塊包含完整陣列,結構化欄位則以 result 包住同一陣列。Open WebUI 原有去重邏輯辨識的是每個清單元素各佔一個文字區塊的形式,因而漏掉整份陣列放在單一區塊的情況,再將結構化副本附加進去。回報也區分了獨立 FastMCP 套件與官方 Python SDK,避免將相似名稱視為相同行為。重現細節

PR #32726 的處理方向,是讓已出現在文字中的清單只送入一次,同時繼續傳遞文字未包含的結構化資料。提案描述工具結果可能消耗兩至三倍 token,但這是特定結果的膨脹,不能直接推算整段對話或帳單同比增加;截至查核,PR 仍開啟,沒有合併或部署紀錄。修補提案

對反覆取得搜尋結果、資料列或檔案清單的代理而言,可合理推論,重複內容會增加上下文占用,長回合任務尤其值得檢查。工程團隊可比較工具原始回應與實際送往模型的訊息,後續觀察修補是否納入正式版本,以及是否同時保留摘要與結構化資料各自獨有的資訊;目前尚無獨立效能量測。

來源

  1. MCP list results from FastMCP reach the model twice — Issue #32719
  2. Fix MCP list results from FastMCP servers reaching the model twice — PR #32726
  3. Model Context Protocol:Tools 與 Structured Content 規範