Skip to content

Commit c65b29e

Browse files
authored
fix: handle MCP resource content type blob and URI variants (open-webui#25260)
1 parent 0be069c commit c65b29e

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

backend/open_webui/utils/middleware.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,6 +1162,29 @@ async def process_tool_result(
11621162
except json.JSONDecodeError:
11631163
pass
11641164
tool_response.append(text)
1165+
elif resource.get('blob'):
1166+
mime_type = resource.get('mimeType', 'application/octet-stream')
1167+
blob = resource.get('blob', '')
1168+
if mime_type.startswith('image/'):
1169+
file_url = await get_file_url_from_base64(
1170+
request,
1171+
f'data:{mime_type};base64,{blob}',
1172+
{
1173+
'chat_id': metadata.get('chat_id', None),
1174+
'message_id': metadata.get('message_id', None),
1175+
'session_id': metadata.get('session_id', None),
1176+
'result': item,
1177+
},
1178+
user,
1179+
)
1180+
tool_result_files.append({'type': 'image', 'url': file_url})
1181+
else:
1182+
uri = resource.get('uri', 'resource')
1183+
tool_response.append(
1184+
f'[Resource: {uri}] (binary data, mimeType: {mime_type})'
1185+
)
1186+
elif resource.get('uri'):
1187+
tool_response.append(resource.get('uri'))
11651188
tool_result = tool_response[0] if len(tool_response) == 1 else tool_response
11661189
else: # OpenAPI
11671190
for item in tool_result:

0 commit comments

Comments
 (0)