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

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