MCP Server 返回非文本文件

2026-04-29 09:182阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

例如在 Cherry Studio 里,可以给 LLM 上传文件。

但如果我创建 MCP Server, 似乎 LLM 无法识别二进制文件:GPT-5.5, Opus-4.7 显然都是有读 PDF 文件的能力的,但是它不能读 MCP Server 返回的 PDF 文件。

MCP Server (Python 主流的 mcp FastMCP) 似乎会把二进制文件编码成 base64.

有没有什么方案可以解决这个问题?

目前的返回方法是:

mime_list = puremagic.magic_string(data, filename="") if len(mime_list) > 0: mime = mime_list[0].mime_type else: mime = "application/octet-stream" data_b64 = b64encode(data).decode() if mime.startswith("image/"): return ImageContent(type='image', data=data_b64, mimeType=mime) elif mime.startswith("audio/"): return AudioContent(type="audio", data=data_b64, mimeType=mime) else: return EmbeddedResource( type="resource", resource=BlobResourceContents(uri=uri, mimeType=mime, blob=data_b64), )

image2042×1185 212 KB

网友解答:
--【壹】--:

例如在 Cherry Studio 里,可以给 LLM 上传文件。

阅读全文
问题描述:

例如在 Cherry Studio 里,可以给 LLM 上传文件。

但如果我创建 MCP Server, 似乎 LLM 无法识别二进制文件:GPT-5.5, Opus-4.7 显然都是有读 PDF 文件的能力的,但是它不能读 MCP Server 返回的 PDF 文件。

MCP Server (Python 主流的 mcp FastMCP) 似乎会把二进制文件编码成 base64.

有没有什么方案可以解决这个问题?

目前的返回方法是:

mime_list = puremagic.magic_string(data, filename="") if len(mime_list) > 0: mime = mime_list[0].mime_type else: mime = "application/octet-stream" data_b64 = b64encode(data).decode() if mime.startswith("image/"): return ImageContent(type='image', data=data_b64, mimeType=mime) elif mime.startswith("audio/"): return AudioContent(type="audio", data=data_b64, mimeType=mime) else: return EmbeddedResource( type="resource", resource=BlobResourceContents(uri=uri, mimeType=mime, blob=data_b64), )

image2042×1185 212 KB

网友解答:
--【壹】--:

例如在 Cherry Studio 里,可以给 LLM 上传文件。

阅读全文