最近在折腾MCP(Model Context Protocol)服务器,想把自己的RAG检索能力封装成一个工具给Claude用。本地跑通没问题,但一接到Claude Desktop上就翻车:检索回来的文档片段动不动就几千token,加上系统提示词,直接顶爆上下文窗口,经常报错或答非所问。感觉MCP这层好像对工具返回的内容没有截断或压缩机制?我自己在工具里做截断吧,又怕把关键信息切没了,有没有什么最佳实践?还是说应该让MCP工具只返回元数据,让模型自己去调二次接口?求有实战经验的大佬指个路,孩子快被token账单折磨疯了。
楼主
2026-08-18
MCP里挂RAG工具,上下文窗口被撑爆怎么破?
请 登录 后发表回复
全部回复
共 43 条
2楼
26天前
我也踩过这个坑,MCP工具返回的内容确实没有自动截断,全量塞回去就是自杀。后来我改成两段式:工具只返回每条chunk的摘要、来源、相关度分数和id,真正需要细看再让模型调一个fetch_detail工具去拿原文。这样首轮上下文基本控制在几百token,模型也能自己判断哪条值得展开。不过摘要质量很关键,用便宜的小模型跑就行,别指望它多完美,够模型做路由决策就成。另外工具描述里一定写清楚返回格式和token上限,Claude有时候会一次性把所有id都拿去fetch,得在prompt里约束它最多取几条。还有个偏方是把检索结果按相关度排序后只留top3,剩下的告诉模型“还有N条未展示”,实测效果比硬塞十条好很多。
3楼
26天前
可以试试让RAG工具只返回摘要加引用ID,模型需要细节再二次拉取,能省不少token。
4楼
24天前
让MCP只回元数据+摘要,模型按需二次拉取,我这么干token直接降了七成。