diff --git a/mcp_client.py b/mcp_client.py new file mode 100644 index 0000000..00d5d18 --- /dev/null +++ b/mcp_client.py @@ -0,0 +1,38 @@ +import contextlib +from mcp import ClientSession +from mcp.client.streamable_http import streamable_http_client +from config import MCP_URL + + +class MCPClient: + def __init__(self): + self.session = None + self.exit_stack = contextlib.AsyncExitStack() + + async def connect(self): + """ + Verbindung zum OpenHAB MCP Server + """ + + transport = await self.exit_stack.enter_async_context( + streamable_http_client(MCP_URL) + ) + + read, write, _ = transport + + self.session = await self.exit_stack.enter_async_context( + ClientSession(read, write) + ) + + await self.session.initialize() + + return self.session + + async def list_tools(self): + return await self.session.list_tools() + + async def call_tool(self, name, args): + return await self.session.call_tool(name, args) + + async def close(self): + await self.exit_stack.aclose() \ No newline at end of file