improved: handling TextResourceContents result

This commit is contained in:
Will 2025-12-28 18:33:48 +08:00
parent d9373dc957
commit 6570f52b5a

View File

@ -13,6 +13,7 @@ from core.mcp.types import (
EmbeddedResource, EmbeddedResource,
ImageContent, ImageContent,
TextContent, TextContent,
TextResourceContents,
) )
from core.tools.__base.tool import Tool from core.tools.__base.tool import Tool
from core.tools.__base.tool_runtime import ToolRuntime from core.tools.__base.tool_runtime import ToolRuntime
@ -64,10 +65,15 @@ class MCPTool(Tool):
yield self.create_blob_message( yield self.create_blob_message(
blob=base64.b64decode(content.data), meta={"mime_type": content.mimeType} blob=base64.b64decode(content.data), meta={"mime_type": content.mimeType}
) )
elif isinstance(content, EmbeddedResource) and isinstance(content.resource, BlobResourceContents): elif isinstance(content, EmbeddedResource):
yield self.create_blob_message( resource = content.resource
blob=base64.b64decode(content.resource.blob), meta={"mime_type": content.resource.mimeType} if isinstance(resource, TextResourceContents):
) yield self.create_text_message(resource.text)
elif isinstance(resource, BlobResourceContents):
mime_type = resource.mimeType or "application/octet-stream"
yield self.create_blob_message(blob=base64.b64decode(resource.blob), meta={"mime_type": mime_type})
else:
raise ToolInvokeError(f"Unsupported embedded resource type: {type(resource)}")
else: else:
logger.warning("Unsupported content type=%s", type(content)) logger.warning("Unsupported content type=%s", type(content))