From cda7691ebdf19d810cb2b0b14b9a1ed67427bb82 Mon Sep 17 00:00:00 2001 From: Till Immer Date: Sat, 4 Jul 2026 20:48:51 +0000 Subject: [PATCH] =?UTF-8?q?mcp=5Fclient.py=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mcp_client.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 mcp_client.py 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