live_events
Retrieve recent listener events from Ableton Live, with an optional limit to control how many events are returned.
Instructions
Drain retained Live listener events.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Implementation Reference
- src/server.py:283-285 (registration)The 'live_events' tool is registered with the MCP server. It accepts a 'limit' integer parameter and forwards requests to the bridge method 'events'.
server.add_tool(Tool("live_events", "Drain retained Live listener events.", schema({ "limit": {"type": "integer", "minimum": 1}, }), forward("events"))) - src/server.py:33-34 (handler)The 'forward' helper generates a lambda that calls bridge.request(method, args), which is the generic handler used by live_events (forward('events')).
def forward(method: str): return lambda args: bridge.request(method, args) - src/bridge.py:40-64 (helper)The bridge's 'request' method sends a JSON-RPC request over a socket to the Ableton Live bridge, handling retries and error responses.
def request(self, method: str, params: dict[str, Any] | None = None) -> Any: params = params or {} payload = { "jsonrpc": "2.0", "id": next(self._ids), "method": method, "params": params, } with self._lock: try: response = self._send(payload) except OSError: self.close() try: response = self._send(payload) except OSError as exc: self.close() raise AbletonBridgeError(f"Could not connect to Ableton bridge at {self.config.host}:{self.config.port}: {exc}") from exc message = json.loads(response.decode("utf-8")) if "error" in message: err = message["error"] detail = err.get("data") if os.environ.get("ABLETON_MCP_TRACEBACK") else "" suffix = f": {detail}" if detail else "" raise AbletonBridgeError(f"{err.get('code', -32000)} {err.get('message', 'Bridge error')}{suffix}") return message.get("result") - src/server.py:283-285 (schema)The schema for live_events defines a single 'limit' integer parameter (minimum: 1). No additional properties are allowed.
server.add_tool(Tool("live_events", "Drain retained Live listener events.", schema({ "limit": {"type": "integer", "minimum": 1}, }), forward("events")))