Skip to main content
Glama
henrysouchien

Interactive Brokers MCP Server

README.md
# ibkr-mcp

MCP server for Interactive Brokers Gateway — 7 tools for market data and account access via Claude.

## Tools

| Tool | Description |
|------|-------------|
| `get_ibkr_market_data` | Historical OHLCV bars for any contract |
| `get_ibkr_positions` | Current portfolio positions and P&L |
| `get_ibkr_account` | Account summary (balances, margin, NAV) |
| `get_ibkr_contract` | Contract lookup and details |
| `get_ibkr_option_prices` | Option chain pricing |
| `get_ibkr_snapshot` | Real-time quote snapshot |
| `get_ibkr_status` | IBKR Gateway connection diagnostics |

## Install

```bash
pip install interactive-brokers-mcp
```

## Prerequisites

- [IB Gateway](https://www.interactivebrokers.com/en/trading/ibgateway-stable.php) or TWS running
- API access enabled in Gateway/TWS settings
- Host/port/client ID matching your environment variables

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `IBKR_GATEWAY_HOST` | `127.0.0.1` | Gateway hostname |
| `IBKR_GATEWAY_PORT` | `7496` | Gateway port |
| `IBKR_CLIENT_ID` | `1` | API client ID |
| `IBKR_TIMEOUT` | `10` | Connection timeout (seconds) |
| `IBKR_READONLY` | `false` | Read-only mode |
| `IBKR_AUTHORIZED_ACCOUNTS` | | Comma-separated account whitelist |
| `IBKR_CACHE_DIR` | | Optional cache directory override |

The package auto-loads `.env` from the package directory and parent.

## Usage

### Claude Code

```bash
claude mcp add ibkr-mcp -- ibkr-mcp
```

Or in `~/.claude.json`:

```json
{
  "mcpServers": {
    "ibkr-mcp": {
      "type": "stdio",
      "command": "ibkr-mcp"
    }
  }
}
```

### Standalone

```bash
ibkr-mcp          # via installed entry point
python -m ibkr.server   # via module
```

## License

PolyForm Noncommercial 1.0.0

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes targeting different IBKR data types (account, contract, market data, options, positions, snapshot), but 'get_ibkr_market_data' and 'get_ibkr_snapshot' could cause confusion as both fetch price data with unclear boundaries between historical series and latest snapshots.

Naming Consistency5/5

All tools follow a perfect 'get_ibkr_' prefix pattern with descriptive snake_case suffixes, creating a highly predictable and readable naming convention throughout the set.

Tool Count5/5

Six tools is well-scoped for an Interactive Brokers data server, providing focused coverage of key financial data categories without being overwhelming or insufficient for the domain.

Completeness3/5

The toolset covers read operations well but lacks obvious trading or order management capabilities (create/update/delete orders) that would be expected for a full IBKR trading interface, creating notable gaps despite good data retrieval coverage.

Maintenance

ActivityInactive
ResponsivenessNo issues