MCP Server 返回非文本文件

例如在 Cherry Studio 里,可以给 LLM 上传文件。 但如果我创建 MCP Server, 似乎 LLM 无法识别二进制文件:GPT-5.5, Opus-4.7 显然都是有读 PDF 文件的能力的,但是它不能读 MCP Server 返回的 PDF 文件。 MCP Server (Py...
MCP Server 返回非文本文件
MCP Server 返回非文本文件

例如在 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),
    )

image

1 个帖子 - 1 位参与者

阅读完整话题

来源: linux.do查看原文