Options flow is only interesting on the contracts you care about, and those change during a session. Being able to add a strike range or an expiration through a tool call — rather than editing a config and restarting — is what makes this usable in a conversation. Note the dependency clearly before you start: nothing works until the Go data broker is running, which is why `data_broker_health_check` exists as its own tool.
An options order-flow server. A Go data broker collects and analyses the market feed; this Python server exposes that analysis over MCP and formats it for a model to read.
- `analyze_options_flow` returns the full picture for a ticker: monitored contracts grouped by expiration and strike, current activity and directional bias, detected patterns with confidence scores, 30-minute interval trend history, and the most active strikes
- `configure_options_monitoring_tool` sets which contracts to watch — expiration as YYYYMMDD, a list of strikes, and whether to include both calls and puts — without restarting anything
- `get_monitoring_status_tool` reports everything currently being monitored for a ticker
- `data_broker_health_check` reports connectivity and response-time metrics for the broker behind it
- Output is XML-formatted, so the model reads structure rather than a wall of numbers
Python 3.8 or higher, and the mcp-trading-data-broker Go service running first — it serves gRPC on port 9090 and does the collection and pattern detection. Point the server at it with GRPC_HOST, GRPC_PORT and GRPC_TIMEOUT, then start it with `python run_server.py`.
Build from source — clone the repository and build it, then point your client at the binary
