38 個工具也不吃掉上下文視窗:KwaFlux MCP 伺服器的設計思路
KwaFlux 如何把 38 個 MCP 工具控制在實測的上下文預算內:自動產生的 schema、可關閉的工具群組、寫進測試的預算上限,以及結構化的回傳結果。
重點速覽
- MCP 伺服器提供的每個工具,都要向模型描述一遍,而這些描述會佔用原本可以留給你的請求的上下文。
- 載入全部 38 個工具時,KwaFlux 的工具清單是 51,004 位元組,低於 60,000 位元組的預算。只載入核心群組時,會降到 7,077 位元組。
- 工具群組讓你只載入用得到的部分:設定
KWAFLUX_MCP_TOOLSETS之後,沒選的群組就不會送到模型面前。 - 這些預算由測試把關。只要有變更讓工具清單、核心群組或伺服器說明超出預算,測試就會失敗。
功能多的 MCP 伺服器有一筆不起眼的成本:每個工具的名稱、說明和輸入 schema 都會送給模型,讓它知道有這個工具。工具只有幾個時,這無關緊要;有 38 個時,還沒開始打字,就可能先吃掉上下文視窗相當可觀的一部分。
我們設計 KwaFlux 的 MCP 伺服器時,就是圍繞著這筆成本來規劃的。schema 是自動產生的,不是手寫的;工具分成可以關閉的群組;結果是結構化的,不是長篇文字;各項大小也都有由測試強制執行的預算。
本文會說明:MCP 伺服器的上下文成本從哪裡來、KwaFlux 如何測量與限制它、如何少載入一些工具,以及讓長時間影片任務也能低成本追蹤的設計選擇。
目錄
- 一個 MCP 工具會佔用多少上下文?
- KwaFlux 的實測數字
- 由測試強制執行的預算
- 只載入你用得到的群組
- 從應用程式設定自動產生的 schema
- 不必讀兩遍的結果
- 長時間任務:用進度和取消,不用輪詢
- 用 prompt 處理多步驟流程
- 常見問題
一個 MCP 工具會佔用多少上下文?
MCP 工具的上下文成本,就是它定義的大小,也就是名稱、標題、說明,以及描述輸入與輸出的 JSON Schema;在一個工作階段裡,宿主每次發出請求,都會把這些定義交給模型。
宿主透過 tools/list 請求取得這些定義,大多數宿主接著會把它們放進模型的上下文,讓模型能挑選工具。MCP 規範要求伺服器以固定的順序回傳工具,部分原因是這樣「在工具被納入模型上下文時,能提高 LLM 提示快取的命中率」,由此可見,工具定義進到上下文裡是多麼稀鬆平常的事。
KwaFlux 的實測數字

| 測量項目 | 大小 | 預算 |
|---|---|---|
載入全部 38 個工具的 tools/list | 51,004 位元組 | 60,000 位元組 |
只載入核心群組(8 個工具)的 tools/list | 7,077 位元組 | 14,000 位元組 |
設定 KWAFLUX_MCP_TOOLSETS=convert,repair(14 個工具)的 tools/list | 14,753 位元組 | — |
| 伺服器說明 | 5,719 個字元 | 7,000 個字元 |
| Prompt | 4 個 | — |
完整清單大約是 51 KB 的 JSON。換算成多少 token,要看模型的分詞器,但這是每個工作階段的固定成本,在第一個請求之前就已經付出。單獨的核心群組,大約只有它的七分之一。
由測試強制執行的預算
寫在設計文件裡的大小目標會慢慢走樣,寫進測試裡的則不會。
KwaFlux 的 MCP 伺服器有一支測量指令碼,會隨著測試一起執行。它會產生真實的 tools/list 回應並以位元組計算大小,另外單獨測量核心群組的大小,以及伺服器說明的字元數;只要其中任何一項超出預算,就判定失敗。
這改變了撰寫工具的方式。新工具必須塞得進預算,所以冗長的說明會被刪減,重複的解釋會移到共用的伺服器說明裡,原本用一整段文字解釋有效值的地方,會改用列舉(enum)。預算還保留了一些餘裕,完整清單大約還有 9 KB,留給之後的新功能。
只載入你用得到的群組
KwaFlux 的 38 個工具分成若干群組,下表列出主要的幾個。核心群組在任何設定下都會載入,其餘的則由你用 KWAFLUX_MCP_TOOLSETS 環境變數挑選。沒選的群組根本不會註冊,所以不會佔用任何上下文。
| 群組 | 涵蓋的內容 |
|---|---|
core(任何設定下都會載入) | 應用程式狀態、任務清單與詳細資料、帶進度的等待、取消、暫停、繼續、重試 |
convert | 轉換器任務:快速轉成 MP4、依格式與畫質檔位匯出、檔位清單、GIF |
compress | 依比例、目標大小或畫質檔位壓縮 |
repair | 先診斷損壞的檔案,再修復 |
download | 先查詢連結,再下載 |
enhance | 16 個 AI 增強工具 |
audio | 降噪、人聲增強、人聲分離、變聲 |
image | 圖片格式轉換 |
dvd | 先掃描光碟,再轉換其中的標題 |
舉例來說,如果你只用 AI 助理轉換和修復檔案,就在宿主 MCP 設定裡的 KwaFlux 項目中加上這個變數:
{
"mcpServers": {
"kwaflux": {
"command": "<path to node>",
"args": ["<path to kwaflux_mcp.mjs>"],
"env": { "KWAFLUX_MCP_TOOLSETS": "convert,repair" }
}
}
}command 和 args 請從 KwaFlux 的 設定 › Agent(MCP) 頁面複製,不要手動輸入;快速上手一文有說明位置。每個宿主的設定格式不同,env 請放在你的宿主規定的位置。
技巧: 在摸索 AI 助理能做什麼的階段,先全部載入,之後再精簡成你實際會用的群組。工具清單越短,模型挑到你不想要的工具的機率也越低。
從應用程式設定自動產生的 schema
工具清單裡大部分的位元組,都花在輸入 schema 上。手寫的 schema 往往越寫越長:用文字描述欄位、有效值在說明裡列一次又在 schema 裡列一次,還有各種例外情況的備註。
KwaFlux 增強工具的 schema,和應用程式畫面來自同一份設定檔。每個參數都會變成有型別的欄位,帶著它實際的範圍或實際的選項清單,所以模型看到的是 "enum": [...],而不是一句說明哪些值可用的文字。照片版本的工具也出自同一份檔案。控制平面那篇文章說明了漂移測試如何讓自動產生的規則與應用程式保持一致。
這也讓每個工具的範圍保持精簡。每個工具只接受一般人會去選的那幾個欄位,完整的任務由 KwaFlux 自己組出來。如果工具接受原始的任務描述,就需要一份涵蓋引擎所有功能的 schema,不但更大,也更難檢查。
不必讀兩遍的結果
KwaFlux 的每個工具都宣告了 outputSchema。依照 MCP 規範,工具若提供了 outputSchema,「伺服器 MUST 提供符合此 schema 的結構化結果」,而用戶端「SHOULD 依此 schema 驗證結構化結果」。
就上下文而言,這代表結果是欄位可預期的精簡 JSON:任務 ID、狀態、輸出檔名。模型不必讀完一段文字才知道事情有沒有成功,宿主也不必問模型就能檢查結果。結果還會省略模型不需要的內容,這部分在路徑與隱私那篇文章裡有說明。
長時間任務:用進度和取消,不用輪詢
影片任務可能要跑好幾分鐘。AI 助理要追蹤進度,最直覺的方式就是一再問「好了沒?」,而每問一次都會增加上下文。
KwaFlux 的核心群組改用一個等待工具:
- 進度。 當宿主附上
progressToken時,KwaFlux 會在任務執行期間傳送notifications/progress。宿主會把這些通知顯示成進度列,不佔模型的上下文。 - 取消。 如果你在宿主裡停止請求,宿主會傳送
notifications/cancelled,KwaFlux 就會立刻停止等待。之後如果你需要,AI 助理可以再自行取消任務。
一次等待呼叫就能取代一連串的狀態查詢,所以匯出十分鐘的任務,佔用的上下文和十秒鐘的任務差不多。
用 prompt 處理多步驟流程
有些任務需要依序使用好幾個工具,例如先診斷、再修復、再增強、最後匯出。如果在每個工具的說明裡都解釋一次這個順序,每個請求都要多付出一些位元組。所以 KwaFlux 把這些流程做成四個 MCP prompt:
- 修復損壞的影片
- 依平台需求匯出
- 先下載,再轉換
- AI 畫質修復
MCP 規範把 prompt 描述為「由使用者控制」,通常以斜線指令的形式呈現。在你選用之前,它們不佔任何成本;選用之後,它們會把這項任務的步驟交給模型。功能介紹那篇文章說明了每個步驟的作用。
結語
把工具清單當成預算,而不是目錄:測量它、在測試裡為它設上限,並讓使用者只載入需要的群組。接著讓每次呼叫都保持低成本:輸入有型別、從真實設定自動產生,結果是結構化的,長時間任務用進度通知而不是輪詢。KwaFlux 就是這樣把 38 個工具放進同一個伺服器,又不會擠掉你的請求。
需要的工具載入,其餘的略過
KwaFlux 的本機 MCP 伺服器,為 Codex、Claude、Cursor 和其他 MCP 應用程式提供最多 38 個工具,可按群組開關,核心群組在任何設定下都會載入。AI 處理在你自己的 GPU 上執行,媒體檔案不會為了處理而上傳。可在 Windows 10(64 位元,1809 或更新版本)、Windows 11,以及搭載 Apple Silicon 的 macOS 12 或更新版本上執行。匯入檔案和瀏覽應用程式都不需要帳號。僅在匯出、轉換、檔案修復和從連結下載檔案時需要登入並購買付費方案。
用你自己的素材試試效果
下載 KwaFlux,付費前先用自己的素材免費預覽效果——無需註冊,在你的 GPU 上處理,處理不需要上傳媒體檔案。 影片預覽可選 1、3或5 秒;防抖預覽可選 5、15或30 秒。
常見問題
MCP 伺服器的工具數量多少才合適?
沒有哪個數字適合所有伺服器。重要的是工具清單的總大小,以及每個工具是否只做一件明確的事。以位元組測量 tools/list、設定預算,並讓使用者能關閉用不到的群組。
MCP 工具的說明會佔用上下文視窗嗎?
通常會。大多數宿主會把工具定義交給模型,讓它從中挑選,所以每段說明和 schema 在每個工作階段裡都會佔用上下文。有些宿主會按需載入工具,可以降低這筆成本。
MCP 工具該回傳結構化內容還是文字?
理想情況是兩者都回傳。規範允許工具宣告輸出 schema 並回傳 structuredContent,也建議同時以文字形式附上相同的 JSON,以相容較舊的用戶端。結構化的結果比較容易驗證,讀起來也更短。
MCP 伺服器該怎麼處理長時間執行的任務?
給任務一個 ID、迅速回應,並提供一個等待工具:宿主提供進度權杖時傳送進度通知,宿主取消時就停止。這樣就能避免反覆查詢狀態。請見完整的 Agent 修復流程。
MCP 的工具和 prompt 有什麼差別?
工具是模型判斷需要時自行呼叫的。prompt 則由使用者挑選,通常以斜線指令的形式出現,會把一套現成的任務指示交給模型。
參考資料
- Model Context Protocol, "Tools" (2026-07-28; tools/list ordering and prompt caching; outputSchema; structuredContent) (2026-10-25 查閱)
- Model Context Protocol, "Progress" (2025-11-25; progressToken, notifications/progress) (2026-10-25 查閱)
- Model Context Protocol, "Cancellation" (2025-11-25; notifications/cancelled) (2026-10-25 查閱)
- Model Context Protocol, "Prompts" (2025-11-25; user-controlled prompts) (2026-10-25 查閱)


