From 1ac1e245d625bcd0c4d5d7393609030249c8f3ba Mon Sep 17 00:00:00 2001 From: Christian Gick Date: Thu, 15 Jan 2026 16:32:48 +0200 Subject: [PATCH] fix: Update gridbot-mcp from SSH tunnel to VPN architecture - Change error messages from "SSH tunnel" to "VPN" - Update docstring to reference VPN and GRIDBOT_API_URL - Default API URL now http://10.0.1.3:8000 (conductor on infra VM) Co-Authored-By: Claude Sonnet 4.5 --- src/__pycache__/__init__.cpython-314.pyc | Bin 0 -> 187 bytes src/__pycache__/server.cpython-314.pyc | Bin 0 -> 29784 bytes src/server.py | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 src/__pycache__/__init__.cpython-314.pyc create mode 100644 src/__pycache__/server.cpython-314.pyc diff --git a/src/__pycache__/__init__.cpython-314.pyc b/src/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1d2de44eea6ead9f7146586fd94a847f4df8142a GIT binary patch literal 187 zcmdPq{H7{q}AMkwPm8<5e!5X7L&pvmaBlA(wR$o~wIycMAzTAW%` zte>1wlv!MonV6@So|&Aj?~+=Unv-9Uo0?am@0piYlvrF+RGM5;T9m4vn_Qp^)KUi0 zm0pyYl9XSf3l!5YE=tyqkI&4@EQycTE2zB1VUwGmQks)$SHudm2;`Jv5aSawBO_xG HGmr%U&+{;M literal 0 HcmV?d00001 diff --git a/src/__pycache__/server.cpython-314.pyc b/src/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bfcf68e7bb4200efedb99e00fa4b4028905e2c1 GIT binary patch literal 29784 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Π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 LZ=Dy{u%`V#JT`Sv literal 0 HcmV?d00001 diff --git a/src/server.py b/src/server.py index 29f5d50..ec53fd1 100644 --- a/src/server.py +++ b/src/server.py @@ -1,7 +1,7 @@ """ Gridbot MCP Server - Wraps eToroGridbot REST API as MCP tools. -Requires SSH tunnel: ssh -L 8000:localhost:8000 services +Requires VPN connection and GRIDBOT_API_URL env var (default: http://10.0.1.3:8000) """ import os @@ -27,7 +27,7 @@ async def api_get(endpoint: str) -> dict[str, Any]: resp.raise_for_status() return resp.json() except httpx.ConnectError: - return {"error": "Connection failed - is SSH tunnel running?"} + return {"error": "Connection failed - check VPN (vpn-connect) and GRIDBOT_API_URL"} except httpx.HTTPStatusError as e: return {"error": f"HTTP {e.response.status_code}: {e.response.text}"} except Exception as e: @@ -42,7 +42,7 @@ async def api_post(endpoint: str, data: dict[str, Any] | None = None) -> dict[st resp.raise_for_status() return resp.json() except httpx.ConnectError: - return {"error": "Connection failed - is SSH tunnel running?"} + return {"error": "Connection failed - check VPN (vpn-connect) and GRIDBOT_API_URL"} except httpx.HTTPStatusError as e: return {"error": f"HTTP {e.response.status_code}: {e.response.text}"} except Exception as e: @@ -57,7 +57,7 @@ async def api_delete(endpoint: str) -> dict[str, Any]: resp.raise_for_status() return resp.json() except httpx.ConnectError: - return {"error": "Connection failed - is SSH tunnel running?"} + return {"error": "Connection failed - check VPN (vpn-connect) and GRIDBOT_API_URL"} except httpx.HTTPStatusError as e: return {"error": f"HTTP {e.response.status_code}: {e.response.text}"} except Exception as e: