MCP Server新增工具后客戶端一直看不到?ttlMs、cacheScope與listChanged緩存排查
文章摘要MCP 2026-07-28為工具、資源和Prompt列表增加了緩存語義??蛻舳丝梢愿鶕?jù)ttlMs緩存tools/list結果并根據(jù)cacheScope決定是否允許共享。新機制能夠減少頻繁列表請求但也帶來新問題服務端新增工具后客戶端長期不可見、權限撤銷后舊工具仍顯示、不同租戶獲得錯誤工具列表。本文給出緩存鍵、TTL、listChanged通知、權限隔離和灰度更新的完整排查方法。一、典型現(xiàn)象服務端新增order_refund服務端日志顯示工具已經(jīng)注冊。直接調用服務端tools/list也能看到。但業(yè)務Agent仍然只看到舊工具order_query order_cancel重啟客戶端后新工具突然出現(xiàn)。這通常說明客戶端工具列表緩存沒有失效二、為什么要緩存工具列表大型MCP Server可能暴露數(shù)百個工具。如果每次模型請求前都執(zhí)行tools/list會造成網(wǎng)絡請求增加JSON Schema傳輸成本服務端動態(tài)計算壓力客戶端啟動變慢多個Agent重復發(fā)現(xiàn)工具網(wǎng)關日志膨脹。因此新規(guī)范允許列表響應提供緩存提示。三、ttlMs表示什么示意{tools:[],ttlMs:300000,cacheScope:private}300000毫秒等于5分鐘。客戶端可以在5分鐘內繼續(xù)使用當前列表不必重新調用。注意ttlMs是緩存新鮮度提示 不是服務端保證工具五分鐘內絕不變化如果工具權限發(fā)生緊急撤銷不能只等待TTL自然過期。四、cacheScope為什么重要public列表內容對不同用戶相同可以在更大范圍共享。適合公共天氣工具公共計算工具不區(qū)分租戶的只讀能力。private列表與用戶、租戶或授權有關不應跨身份共享。適合訂單工具財務工具管理員工具客戶專屬工具按Scope動態(tài)返回的工具。錯誤配置不同租戶工具不同 但cacheScopepublic可能導致工具存在性泄露甚至讓模型嘗試調用無權工具。五、緩存鍵必須包含什么錯誤緩存鍵serverUrl所有用戶共享同一列表。推薦緩存鍵至少包含server_identity protocol_version authorization_subject tenant_id scope_hash client_capabilities locale示例publicrecordToolListCacheKey(StringserverId,StringprotocolVersion,StringsubjectId,StringtenantId,StringscopeHash){}不要直接把完整Access Token放進緩存鍵和日志。六、listChanged通知的作用服務端工具列表發(fā)生變化時可以發(fā)送變化通知??蛻舳耸盏胶罅⒓礃擞浘彺媸?→ 下一次使用時重新調用tools/list理想流程工具發(fā)布 → Server發(fā)送listChanged → Client清除緩存 → Client重新發(fā)現(xiàn)如果使用Stateless服務端部分主動通知能力可能受限需要使用更短TTL發(fā)布事件總線配置版本號客戶端定時刷新管理接口主動清除緩存。七、新工具不可見的排查順序第一步服務端原始列表繞過業(yè)務客戶端直接確認tools/list是否包含新工具如果沒有問題在服務端注冊。第二步檢查響應緩存字段記錄ttlMs cacheScope listVersion第三步檢查客戶端緩存命中cache_key cache_hit cached_at expires_at第四步檢查listChanged服務端是否發(fā)送 網(wǎng)關是否允許 客戶端是否注冊處理器 處理后是否真正刪除緩存第五步檢查工具過濾重新獲取列表后新工具也可能被過濾。八、舊權限撤銷后工具仍顯示更危險新工具暫時不可見只是可用性問題。已經(jīng)撤銷權限的工具仍留在緩存中則是安全問題。例如用戶原有refund:order → 權限被撤銷 → 客戶端仍顯示order_refund即使最終調用會被服務端拒絕也會暴露工具存在誤導模型計劃增加失敗調用泄露參數(shù)Schema造成用戶困惑。權限變化應主動使緩存失效。九、工具列表與執(zhí)行權限必須雙重校驗不能因為工具出現(xiàn)在列表中就認為執(zhí)行一定允許。工具調用時仍必須檢查當前Token 當前Scope 當前租戶 當前用戶 當前資源歸屬 當前風險策略列表是發(fā)現(xiàn)機制不是最終授權。十、動態(tài)工具列表如何設計部分企業(yè)工具按角色動態(tài)返回普通用戶 → query_order 客服主管 → query_order、cancel_order 財務人員 → refund_order服務端生成列表時應該基于認證上下文。但動態(tài)程度越高緩存越復雜。建議工具定義總體穩(wěn)定 調用權限在執(zhí)行階段校驗對于極高敏感工具可以在列表階段隱藏。十一、使用版本號簡化失效可以維護tool_catalog_version例如2026.07.30.3緩存記錄{serverId:order-mcp,catalogVersion:2026.07.30.3,expiresAt:...}發(fā)布后版本變化客戶端可以快速判斷失效。版本號不是協(xié)議強制字段時可以通過服務元數(shù)據(jù)管理API配置中心自定義響應元數(shù)據(jù)事件總線實現(xiàn)。十二、合理TTL怎么設置靜態(tài)公共工具30分鐘到數(shù)小時普通企業(yè)工具5到15分鐘權限頻繁變化1分鐘以內 主動失效高風險工具可以短TTL 執(zhí)行時強校驗 審批TTL越短實時性越好但服務端壓力更高。十三、多實例客戶端緩存一致性客戶端應用有10個實例實例1收到listChanged 實例2—10沒有收到工具列表會不一致。推薦共享失效通道Redis Pub/Sub Kafka Spring Cloud Bus 配置中心版本處理任一實例發(fā)現(xiàn)變化 → 發(fā)布ToolCatalogChangedEvent → 全部實例清除對應緩存十四、灰度發(fā)布新工具新工具不應一次性對所有模型開放??梢园醋鈶?用戶組 客戶端版本 模型版本 環(huán)境灰度。緩存鍵必須包含灰度維度否則測試用戶獲取新工具 → 緩存被普通用戶共享十五、緩存實現(xiàn)示例publicrecordCachedToolList(ListToolDefinitiontools,InstantcachedAt,InstantexpiresAt,StringcacheScope){publicbooleanexpired(Clockclock){returnclock.instant().isAfter(expiresAt);}}讀取publicListToolDefinitiongetTools(ToolListCacheKeykey){CachedToolListcachedcache.get(key);if(cached!null!cached.expired(clock)){returncached.tools();}ToolListResultremotemcpClient.listTools();cache.put(key,fromRemote(remote));returnremote.tools();}十六、監(jiān)控指標mcp_tool_list_request_count mcp_tool_list_cache_hit_rate mcp_tool_list_cache_miss_rate mcp_tool_list_refresh_failure mcp_tool_list_changed_event_count mcp_tool_catalog_version mcp_stale_tool_call_count mcp_unauthorized_cached_tool_count重點告警權限撤銷后仍有舊工具調用十七、排查清單□ 服務端tools/list包含新工具 □ 客戶端是否命中舊緩存 □ ttlMs是否過長 □ cacheScope是否正確 □ 緩存鍵是否包含用戶與租戶 □ listChanged是否發(fā)送和處理 □ 多實例是否同步失效 □ 工具過濾是否排除新工具 □ 權限變化是否觸發(fā)失效 □ 執(zhí)行階段是否再次鑒權總結MCP工具列表緩存解決了重復發(fā)現(xiàn)成本但也把工具治理從一次請求變成了緩存一致性問題。生產系統(tǒng)必須同時處理ttlMs cacheScope 精確緩存鍵 listChanged 多實例失效 執(zhí)行階段重新授權尤其要記住工具列表可以緩存工具權限不能緩存為永久信任。

相關新聞

長時間運行的AI Agent為什么不能只審核單次工具調用?軌跡級監(jiān)控架構解析

長時間運行的AI Agent為什么不能只審核單次工具調用?軌跡級監(jiān)控架構解析

文章摘要 傳統(tǒng)Agent安全系統(tǒng)通常逐次檢查工具調用:讀取文件是否允許、網(wǎng)絡請求是否合法、刪除操作是否需要審批。但當模型可以連續(xù)工作數(shù)小時甚至數(shù)天時,每個單獨動作都可能看起來合理,組合起來卻在繞過限制、積累權限或追求用戶并未批準的結…

2026/7/31 0:44:44 閱讀更多
論賈子理論作為統(tǒng)一真理體系的范式革命——基于“公理驅動—本質貫通—萬物統(tǒng)一“的跨學科研究

論賈子理論作為統(tǒng)一真理體系的范式革命——基于“公理驅動—本質貫通—萬物統(tǒng)一“的跨學科研究

論賈子理論作為統(tǒng)一真理體系的范式革命——基于"公理驅動—本質貫通—萬物統(tǒng)一"的跨學科研究摘要本文以賈子理論(Kucius Theory System, KTS)為研究對象,系統(tǒng)考察其以"公理驅動、本質貫通、萬物統(tǒng)一"為核心的整體論范式&…

2026/7/31 0:44:44 閱讀更多
驚!商標注冊成功后也可能被撤銷?

驚!商標注冊成功后也可能被撤銷?

驚!商標注冊成功后也可能被撤銷?不注意這3點,到手的證書飛了很多創(chuàng)業(yè)者以為,商標注冊證拿到手就萬事大吉了。但現(xiàn)實遠比想象殘酷——商標注冊成功,只是品牌保護的起點,遠不是終點。 如果不注意下面這3件事&…

2026/7/31 0:34:43 閱讀更多
伺服與步進電機選型指南:扭矩、轉速、慣量匹配的核心計算方法

伺服與步進電機選型指南:扭矩、轉速、慣量匹配的核心計算方法

這次我們來看電機選型這個工程實踐中的硬核問題。無論是伺服電機還是步進電機,選型不當直接導致設備運行不穩(wěn)定、壽命縮短甚至項目失敗。很多工程師在選型時容易陷入?yún)?shù)堆砌的困境,其實掌握幾個關鍵參數(shù)就能解決80%的問題。電機選型的核心不是追求最高參…

2026/7/31 1:34:50 閱讀更多
Lasso回歸在時間序列預測中的實戰(zhàn)應用與優(yōu)化

Lasso回歸在時間序列預測中的實戰(zhàn)應用與優(yōu)化

1. Lasso回歸在時間序列預測中的核心價值時間序列預測一直是數(shù)據(jù)分析領域的經(jīng)典難題。傳統(tǒng)方法如ARIMA雖然成熟,但在處理高維特征時往往力不從心。我在金融風控領域工作十年,發(fā)現(xiàn)Lasso回歸(Least Absolute Shrinkage and Selection Operator&…

2026/7/31 1:34:50 閱讀更多
從追番決策到技術選型:如何構建高效評估框架

從追番決策到技術選型:如何構建高效評估框架

最近幾年,每當新番季臨近,總能看到不少朋友在各大論壇和社交平臺上熱烈討論。有人早早開始整理追番列表,有人根據(jù)制作公司、聲優(yōu)陣容或原作口碑提前押寶,也有人習慣等開播幾集后,根據(jù)實際表現(xiàn)再決定是否投入時間。這種…

2026/7/31 1:34:50 閱讀更多
Linux文件系統(tǒng)全網(wǎng)精講:設備識別、掛載卸載、磁盤排查一站式實戰(zhàn)

Linux文件系統(tǒng)全網(wǎng)精講:設備識別、掛載卸載、磁盤排查一站式實戰(zhàn)

Linux文件系統(tǒng)全網(wǎng)精講:設備識別、掛載卸載、磁盤排查一站式實戰(zhàn) 在Linux運維工作中,文件系統(tǒng)與磁盤管理是最基礎、最高頻的核心操作。磁盤爆滿排查、U盤/光盤掛載、大文件定位、本地YUM倉庫搭建,日常90%的存儲類問題,都離不開文件…

2026/7/31 1:34:50 閱讀更多
Dockerfile入門:構建鏡像的完整指南

Dockerfile入門:構建鏡像的完整指南

目錄 一、dockerfile簡介 什么是dockerfile? dockerfile是什么? 為什么要用dockerfile? Dockerfile、Docker鏡像和Docker容器的關系 二、DockerFile需要注意的編寫規(guī)范 三、Docekrfile指令解析 四、常用的Dockerfile指令詳解、格式與用法 4.1…

2026/7/31 1:24:50 閱讀更多
HART協(xié)議詳解:05 HART現(xiàn)場通信實戰(zhàn)

HART協(xié)議詳解:05 HART現(xiàn)場通信實戰(zhàn)

第五季 HART現(xiàn)場通信實戰(zhàn) ——從USB-HART Modem抓包到工程診斷:讓協(xié)議知識變成維修能力 各位工業(yè)現(xiàn)場的工程師朋友們,大家好! 經(jīng)過前四季的系統(tǒng)學習,我們已經(jīng)構建了HART協(xié)議的完整理論框架: 第一季:六層生命模型與本質認知 第二季:物理層4–20mA與FSK魔法 第三季:數(shù)…

2026/7/31 0:14:40 閱讀更多
維修工程師的示波器實戰(zhàn):02 探頭地線——示波器最大的“坑”

維修工程師的示波器實戰(zhàn):02 探頭地線——示波器最大的“坑”

第二篇:探頭地線——示波器最大的“坑” ——那根不起眼的小地線,可能比你測的信號還重要 很多工程師第一次用示波器時,都會經(jīng)歷這樣一個“驚魂”時刻。 某食品廠包裝線,伺服偶發(fā)報警。年輕工程師判斷是編碼器信號受干擾,便拿出示波器認真測量。波形一出來,所有人都倒…

2026/7/31 0:14:40 閱讀更多