1
0
Timothy Jaeryang Baek 2 долоо хоног өмнө
parent
commit
c55afc4255

+ 24 - 0
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:

+ 1 - 1
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