Skip to main content
Glama
rodrigta

IBKR MCP

by rodrigta
README.md
# 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

B3.3/5.0

Scored across 11 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

With 11 tools, the server covers core brokerage operations without being overwhelming. The count is well-scoped for its purpose.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues