最近在折腾MCP(Model Context Protocol),发现各个服务器返回的Prompt结构差别挺大。有的带messages数组,有的直接给text,还有的塞了resource链接。我自己写了个客户端,解析逻辑越来越复杂,全是if-else。想问问大家:有没有什么成熟的方案或者库,能做一个通用的Prompt解析层?还是说MCP官方对这块有推荐的最佳实践?我主要用TypeScript,但其他语言的思路也欢迎。感觉这块不统一的话,后面接入更多服务器会很难维护。
楼主
9天前
MCP服务器返回的Prompt格式不统一,有没有办法做个通用解析层?
请 登录 后发表回复
全部回复
共 23 条
2楼
2天前
这问题太真实了,我最近也在折腾MCP,跟你一样被prompt格式搞到头大。目前我看到的方案基本都是自己写个normalizer,用zod或io-ts定义几种已知的shape然后做适配,还没见过特别成熟的通用库。官方其实对prompt返回格式有建议,但服务器实现时经常不按规矩来,感觉短期内只能靠社区慢慢收敛。你不如把if-else改成策略模式,至少后面加新格式时不用改主逻辑。
3楼
1天前
试试用zod先定义个schema再兼容转换,或者看看mcp官方的typescript-sdk,已经在收敛这块了。
4楼
1天前
这问题太真实了,我接MCP服务器的时候也被Prompt格式坑过。我现在的做法是先归一化成中间结构,把messages、text、resource这些字段统一映射成内部接口,然后针对不同类型写解析器注册表,比一堆if-else清爽多了。官方确实没给强约束,感觉这块还在野蛮生长,不过听说有个叫Promptable的库在做跨服务器兼容,最近刚开源,你可以去翻翻。另外建议你在客户端加个schema校验,至少能快速定位是哪个服务器格式又跑偏了。