mgbam's picture
Update orchestrator/client.py
b511058 verified
raw
history blame
763 Bytes
# MCPClient implementation
# File: orchestrator/client.py
import requests
import uuid
class MCPClient:
"""
Minimal JSON-RPC 2.0 client for MCP servers.
"""
def __init__(self, base_url: str):
self.base_url = base_url.rstrip('/')
def call(self, method: str, params: dict = None):
payload = {
"jsonrpc": "2.0",
"id": str(uuid.uuid4()),
"method": method,
"params": params or {}
}
resp = requests.post(f"{self.base_url}/rpc", json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
if "error" in data:
err = data["error"]
raise RuntimeError(err.get("message", str(err)))
return data.get("result")