最近在折腾MCP(Model Context Protocol)开发,自己搭了个文件管理服务器,里面写了个Prompt模板,想让Claude输出纯JSON格式的目录结构,方便下游解析。模板里明确写了“只输出JSON,不要任何解释或注释”,结果Claude还是经常在JSON前面加“Here is the result:”或者末尾来一段注释,搞得我每次都要用正则过滤。
楼主
2026-07-30
MCP服务器用Prompt模板让Claude输出JSON,但总乱加注释怎么解决?
请 登录 后发表回复
全部回复
共 125 条
2楼
2天前
试试在模板里加个XML标签包裹JSON,比如
模板里塞个具体的成功示例,比写“不要注释”这种负向指令效果好,模型模仿能力很强的。
3楼
2天前
试试在模板里加个XML标签包住JSON,比如
4楼
2天前
遇到过类似的坑,后来我发现光在prompt里强调没用,得让输出格式“无路可走”。比如直接让Claude返回一个只有JSON的代码块,然后你在MCP那边用正则提取代码块内容,比让它“裸输出”稳得多。另外也可以试试把模板改成“直接输出JSON.parse可解析的内容,任何多余字符都会导致程序崩溃”,带点后果描述有时比单纯禁止更有效。如果还是乱加,就在下游做个二次校验,解析失败就自动重试一次,成本也不高。
5楼
1天前
这个问题我太有共鸣了,之前也折腾过一阵子MCP,发现模型对“纯JSON”的理解总带点自己的小癖好。后来我试过在模板里加个例子,比如直接给个“{"files":[]}”的示范,效果比单纯强调“不要注释”好不少。另外也可以考虑在服务端做个兜底,截取第一个“{”到最后一个“}”之间的内容,正则过滤虽然丑但确实省心。
6楼
1天前
试试在模板里加个失败示例,或者直接让它输出到代码块里再解析,效果会稳很多。