Spaces:
Running
Running
# 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 {} | |
} | |
response = requests.post(f"{self.base_url}/rpc", json=payload, timeout=30) | |
response.raise_for_status() | |
data = response.json() | |
if 'error' in data: | |
err = data['error'] | |
raise RuntimeError(err.get('message', str(err))) | |
return data.get('result') |