Ibkr MCP
Let AI trade with IBKR
Installation
npx ibkr-mcpAsk AI about Ibkr MCP
Powered by Claude Β· Grounded in docs
I know everything about Ibkr MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
IBKR MCP Server
A Model Context Protocol (MCP) server that provides AI models with secure access to Interactive Brokers (IBKR) trading data and functionality through the TWS API.
β οΈβ οΈβ οΈ Disclaimer β οΈβ οΈβ οΈ
This software is for educational and development purposes. Use at your own risk. The authors are not responsible for any financial losses incurred through the use of this software. Always test with paper trading before using with real money.
π Features
- Account Management: Get positions, portfolio details, and account summaries
- Market Data: Retrieve historical price data and real-time market information
- Trading Operations: Place orders, manage positions, and track executions
- MCP Integration: Seamless integration with AI models supporting MCP protocol
- One-shot CLI: Per-command connect-execute-disconnect for quick scripting
- Automated TWS Launch (macOS): One command to start TWS and auto-fill TOTP 2FA
- Claude Code Skill: Natural-language trading via the bundled
skills/ibkr-trading - Safety Features: Read-only mode, configurable trading restrictions, and comprehensive validation
- High Availability: Automatic reconnection, heartbeat monitoring, and graceful error handling
π Prerequisites
- Python 3.10+
- Interactive Brokers TWS or IB Gateway
- Active IBKR account (paper trading recommended for testing)
π οΈ Installation
-
Clone the repository:
git clone https://github.com/happy-shine/ibkr_mcp.git cd ibkr_mcp -
Install dependencies:
pip install -r requirements.txt -
Configure TWS/IB Gateway:
- Enable API connections in TWS/Gateway settings
- Set socket port (default: 7497 for paper trading, 7496 for live)
- Configure trusted IP addresses if needed
-
Configure the server:
cp config/config.yaml.example config/config.yaml # Edit config/config.yaml with your settings
π Usage
Option A: MCP Server
python run.py
The server will:
- Connect to TWS/IB Gateway
- Start the MCP server on the configured port
- Begin heartbeat monitoring
- Log all activities
Option B: One-shot CLI
Lightweight CLI that connects per command and exits β good for shell scripts or ad-hoc queries.
python cli.py positions
python cli.py summary
python cli.py quote AAPL
python cli.py history AAPL --duration "1 M" --bar "1 day"
python cli.py buy AAPL 10 --type MKT --confirm
python cli.py orders
Run python cli.py --help for the full command list.
Note on quote data: If you do not have a live market-data subscription,
quotefalls back to the most recent daily bar via historical data (no real-time fields).
Option C: Automated TWS Launch (macOS only)
start_tws.py launches TWS via IBC, detects the
Second-Factor Authentication dialog, generates a TOTP code with
pyotp, and types it in through AppleScript
(osascript) β fully automated login without touching the keyboard.
python start_tws.py # launch and auto-fill 2FA
python start_tws.py --wait # also block until API port 7496 is listening
Requirements (macOS):
| Component | Purpose | Link |
|---|---|---|
| IBC | Automates TWS launch & login inputs | https://github.com/IbcAlpha/IBC |
| pyotp | RFC 6238 TOTP code generation | https://github.com/pyauth/pyotp |
osascript / AppleScript | Ships with macOS; drives the 2FA dialog | built-in |
Setup:
- Install IBC per its macOS instructions (typically at
~/ibc/). - In
~/ibc/config.ini, set:TradingMode=live(orpaper)SecondFactorDevice=Mobile Authenticator- Your IBKR credentials
- Save your IBKR TOTP secret (the Base32 string from the authenticator QR code) to
~/.ibkr-totp-secretor export it asTOTP_SECRET. - Grant Terminal (or your Python launcher) Accessibility permission in System Settings β Privacy & Security β Accessibility β required for AppleScript to interact with the TWS window.
Platform note:
start_tws.pyrelies on AppleScript/osascriptand is macOS only. Linux/Windows users should either use IBC directly or adapt the GUI-automation layer (e.g.xdotoolon Linux,pywinautoon Windows).
Available MCP Tools
Account Tools
get_positions()- Get current account positionsget_account_summary()- Get account balance and metricsget_portfolio()- Get detailed portfolio information
Market Data Tools
get_historical_data(symbol, duration, bar_size)- Get historical price dataget_market_data(symbol)- Get real-time market dataget_quote_from_history(symbol)- Last daily bar as a quote (no subscription needed)get_contract_details(symbol)- Get contract specificationsget_option_chain- Get Option data
Trading Tools
place_order(symbol, action, quantity, order_type, ...)- Place buy/sell ordersget_orders(status)- Get order history and statuscancel_order(order_id)- Cancel pending ordersget_trades()- Get execution history
Example AI Interactions
AI: "What are my current positions?"
β Calls get_positions() tool
AI: "Buy 100 shares of AAPL at market price"
β Calls place_order(symbol="AAPL", action="BUY", quantity=100, order_type="MKT")
AI: "Show me AAPL's price history for the last week"
β Calls get_historical_data(symbol="AAPL", duration="1 W", bar_size="1 day")
π€ Claude Code Skill
A companion skill lives at skills/ibkr-trading/SKILL.md. It lets
Claude Code dispatch the CLI commands above from
natural-language prompts (e.g. "show my positions", "quote AAPL").
To install, symlink it into your Claude Code skills directory:
ln -s "$(pwd)/skills/ibkr-trading" ~/.claude/skills/ibkr-trading
π Related Links & Credits
- Interactive Brokers TWS API β official Python API (
ibapi) - IBC β Interactive Brokers Controller β TWS auto-launcher (used by
start_tws.py) - pyotp β TOTP/HOTP library (used by
start_tws.py) - Model Context Protocol Specification
- FastMCP Framework
- Claude Code β AI pair-programming CLI that consumes the bundled skill
