# jarvis_mcp/client.py (oder wo du sie hast) from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client # wichtig: streamablehttp_client (ohne _) class MCPClient: def __init__(self, url: str): self.url = url self.session = None self._client_context = None # Context Manager async def connect(self): if self.session: return # Neuer Streamable HTTP Client (gibt 3 Werte zurück) self._client_context = streamablehttp_client( self.url, terminate_on_close=False # wichtig für langlebige Verbindungen ) read, write, _ = await self._client_context.__aenter__() self.session = ClientSession(read, write) await self.session.initialize() print("✅ MCP Verbindung hergestellt") async def list_tools(self): await self.connect() return await self.session.list_tools() async def call_tool(self, name: str, arguments: dict): await self.connect() return await self.session.call_tool(name, arguments) async def close(self): if self._client_context: await self._client_context.__aexit__(None, None, None) self._client_context = None if self.session: # Session schließen falls nötig await self.session.close() self.session = None