IBKR MCP
# IBKR MCP
MCP server for Interactive Brokers via IB Gateway on Windows. Runs in Docker and connects to IB Gateway on the host through `host.docker.internal`.
## Features
- **Live account (port 4001):** read positions, quotes, option chains, day-trade status
- **Paper account (port 4002):** same reads plus place/cancel stock and option orders
## Quick start
1. Configure IB Gateway API (see [SETUP_GUIDE.md](SETUP_GUIDE.md))
2. Install Python deps for local dev:
```bash
pip install -e ".[dev]"
```
3. Install Cursor launchers:
```powershell
.\scripts\Install-IbkrMcpLaunchers.ps1
```
4. Add `ibkr-live` and/or `ibkr-paper` to Claude Desktop MCP config (Store app path below)
5. Restart Claude Desktop, start IB Gateway, then use the MCP tools in chat
**Claude config (Microsoft Store):** `C:\Users\rodri\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json`
## Local run (no Docker)
```bash
set IBKR_HOST=127.0.0.1
set IBKR_PORT=4002
set IBKR_TRADING_ENABLED=true
python -m ibkr_mcp.server
```
## Dev container
Open the repo in a dev container (`.devcontainer/devcontainer.json`). The container uses `host.docker.internal` to reach IB Gateway on Windows.
## Tools
| Tool | Live | Paper |
|------|------|-------|
| `ibkr_health_check` | yes | yes |
| `ibkr_get_positions` | yes | yes |
| `ibkr_get_account_summary` | yes | yes |
| `ibkr_get_daytrade_status` | yes | yes |
| `ibkr_get_quote` | yes | yes |
| `ibkr_get_historical_bars` | yes | yes |
| `ibkr_get_option_chain` | yes | yes |
| `ibkr_place_stock_order` | no | yes |
| `ibkr_place_option_order` | no | yes |
| `ibkr_cancel_order` | no | yes |
| `ibkr_get_open_orders` | yes | yes |
## Stack
- Python 3.12
- [mcp](https://github.com/modelcontextprotocol/python-sdk) (FastMCP, stdio)
- [ib_async](https://github.com/ib-api-reloaded/ib_async)
## Tests
```bash
pytest
```
TDQS
Scored across 11 tools
Each tool has a distinct and clear purpose, covering different aspects of brokerage operations such as orders, account info, market data, and positions. No two tools have overlapping functionality.
All tool names follow a consistent 'ibkr_verb_noun' pattern with lowercase and underscores, using standard verbs like get, place, cancel, and list. The naming is uniform and predictable.
With 11 tools, the server covers core brokerage operations without being overwhelming. The count is well-scoped for its purpose.
The tool set covers essential operations: account summary, positions, orders, quotes, historical data, and health check. It lacks order modification and support for multi-leg options or other asset types, but core workflows are well-represented.