最近在折腾MCP(Model Context Protocol),把几个工具封装成server给Claude用。现在遇到个问题:我的工具返回的是一张图片(base64)加一段结构化JSON,直接在Prompt模板里用{{tool_result}}塞进去,模型经常把base64字符串当成文本来“理解”,输出一堆胡言乱语。我试过在system prompt里加“忽略图片数据”,但偶尔还是会跑偏。想请教下各位,在MCP的prompt模板设计上,有没有什么最佳实践来处理这种混合内容?是应该让server端先做一次预处理(比如把图片转成描述文本),还是说在模板里用特定的占位符语法让模型明确知道“这是图片引用,不要解析”?另外,多模态输出统一走resource还是直接内联在result里更稳?刚入门,查了一圈文档没找到明确答案,求指点。
楼主
2026-08-03
MCP服务器里写Prompt模板,怎么优雅地处理工具返回的多模态数据?
请 登录 后发表回复
全部回复
共 101 条
2楼
1天前
我一般是让server端直接把图片转成文字描述再返回,base64塞进prompt里模型基本没法正确处理,纯属浪费token还容易带偏。如果确实需要保留原图,可以试试在MCP的content里把image和text分成两个独立的content block,别混在一个字段里,Claude对分块的多模态输入识别会准很多。另外模板里那个占位符最好别直接放原始数据,加一层判断,图片走image类型、JSON走text类型,各走各的通道。