fix: handle MCP resource content type blob and URI variants (#25260)
This commit is contained in:
1 file changed
+23
@@ -1162,6 +1162,29 @@ async def process_tool_result(
|
|||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
pass
|
pass
|
||||||
tool_response.append(text)
|
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
|
tool_result = tool_response[0] if len(tool_response) == 1 else tool_response
|
||||||
else: # OpenAPI
|
else: # OpenAPI
|
||||||
for item in tool_result:
|
for item in tool_result:
|
||||||
|
|||||||
Reference in new issue
Block a user