From c55afc42559c32a6f0c8beb0f1bb18e9360ab8af Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 23 Sep 2025 03:19:36 -0400 Subject: [PATCH] refac --- backend/open_webui/utils/mcp/client.py | 24 ++++++++++++++++++++++++ backend/open_webui/utils/middleware.py | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/mcp/client.py b/backend/open_webui/utils/mcp/client.py index 875076d1a7..fabdc5541c 100644 --- a/backend/open_webui/utils/mcp/client.py +++ b/backend/open_webui/utils/mcp/client.py @@ -71,6 +71,30 @@ class MCPClient: else: return result_content + async def list_resources(self, cursor: Optional[str] = None) -> Optional[dict]: + if not self.session: + raise RuntimeError("MCP client is not connected.") + + result = await self.session.list_resources(cursor=cursor) + if not result: + raise Exception("No result returned from MCP list_resources call.") + + result_dict = result.model_dump() + resources = result_dict.get("resources", []) + + return resources + + async def read_resource(self, uri: str) -> Optional[dict]: + if not self.session: + raise RuntimeError("MCP client is not connected.") + + result = await self.session.read_resource(uri) + if not result: + raise Exception("No result returned from MCP read_resource call.") + result_dict = result.model_dump() + + return result_dict + async def disconnect(self): # Clean up and close the session if self.session: diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index bf71b77bcd..ffb940f7a0 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -2584,7 +2584,7 @@ async def process_chat_response( ): file_url = get_file_url_from_base64( request, - f"data:{item.get('mimeType')};base64,{item.get('data', '')}", + f"data:{item.get('mimeType')};base64,{item.get('data', item.get('blob', ''))}", { "chat_id": metadata.get( "chat_id", None