背景

最近在忙毕业设计,用 Trae 作为开发环境。我接了一个叫 UML-mcp-renderer 的 MCP,用来在对话里生成和修改用例图、类图、架构图、部署图。

一开始用着挺正常的,但后面反复修改的过程中,我发现了一个很明显的问题。

MCP 在长对话里的问题

在一个全新的对话上下文里,没被各种结果污染的时候,用 MCP 是没有任何问题的,也能准确地为我生成 UML 图。

但在我反复修改、和各种环节进行之后,我发现如果我继续保持这个会话,那些 MCP 全量加载的提示词就会被干得稀碎。模型上下文窗口占满的时候,它注意力稀碎,后面根本无法继续为我正确调用 MCP。

我主动让它使用 MCP,它也会当看不到,或者说做不了,然后就自己去写脚本、写 PlantUML 代码来生成图,而不是调用 MCP。

后来我换了一个新对话,就恢复正常了。

改造成 CLI+Skills 之后的对比

同样的这个 MCP,我把它另外改造成了 CLI+Skills 渐进式披露的形式。

然后用同样的情况去用——在长对话之间、反复修改、各种环节混在一起。

结果发现,几乎在什么上下文时期,或者在多长的对话之间,它都能很好的继续为我生图。没有出现之前 MCP 那种“当看不到”或者自己写脚本糊弄的情况。

我的结论

这次经历让我比较清楚地看到了 MCP 和 CLI+Skills 在实际使用中的区别。

不是说 MCP 本身有问题,而是很多 MCP 的实现方式是全量加载,把工具描述、提示词一股脑塞进上下文。在短对话里没问题,但上下文一长、信息一多,这些东西就被淹掉了。模型注意力有限,当上下文中其他内容占了大部分窗口,它就不再能有效关注到 MCP 的调用方式。

而 CLI+Skills 的渐进式披露方式,工具描述在不需要的时候很轻量,需要的时候才展开细节。这样无论上下文多长、多乱,工具调用这一块始终是清晰的,模型能一直正确使用它。

总结

  1. 新对话能恢复正常的 MCP 问题,说明不是 MCP 本身坏了,而是上下文管理的问题。

  2. 同样的功能,用 MCP 全量加载和用 CLI+Skills 渐进式披露,在长对话里的表现差距很大。

  3. 如果 MCP 在长会话里开始不工作,或者自己去写脚本来代替调用,很可能是提示词在上下文里被淹了。

这就是我这次在画毕业设计图的过程中发现的一个实际区别,记录下来供参考。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐