From c65b29ec0fbb37c47147ff86119e37859a6e47cd Mon Sep 17 00:00:00 2001 From: maco Date: Mon, 29 Jun 2026 12:12:11 +0200 Subject: [PATCH] fix: handle MCP resource content type blob and URI variants (#25260) --- backend/open_webui/utils/middleware.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 26764e1f7f..7996222fe1 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1162,6 +1162,29 @@ async def process_tool_result( except json.JSONDecodeError: pass tool_response.append(text) + elif resource.get('blob'): + mime_type = resource.get('mimeType', 'application/octet-stream') + blob = resource.get('blob', '') + if mime_type.startswith('image/'): + file_url = await get_file_url_from_base64( + request, + f'data:{mime_type};base64,{blob}', + { + 'chat_id': metadata.get('chat_id', None), + 'message_id': metadata.get('message_id', None), + 'session_id': metadata.get('session_id', None), + 'result': item, + }, + user, + ) + tool_result_files.append({'type': 'image', 'url': file_url}) + else: + uri = resource.get('uri', 'resource') + tool_response.append( + f'[Resource: {uri}] (binary data, mimeType: {mime_type})' + ) + elif resource.get('uri'): + tool_response.append(resource.get('uri')) tool_result = tool_response[0] if len(tool_response) == 1 else tool_response else: # OpenAPI for item in tool_result: