IBKR MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IBKR MCP Servershow my current portfolio positions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-tradingSafety 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_mcpInstall dependencies:
pip install -r requirements.txtConfigure 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.pyThe 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 ordersRun 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 listeningRequirements (macOS):
Component | Purpose | Link |
Automates TWS launch & login inputs | ||
RFC 6238 TOTP code generation | ||
| 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 AuthenticatorYour 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)Claude Code — AI pair-programming CLI that consumes the bundled skill
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/happy-shine/ibkr_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server