IB Async MCP Server
Enables read-only access to Interactive Brokers data including contracts, market data, news, fundamentals, and portfolio/account information for LLM workflows and autonomous agents.
README
IB Async MCP Server
Lightweight Model Context Protocol (MCP) server exposing read-only Interactive Brokers data (contracts, historical data, fundamentals, news, portfolio, account) via the asynchronous ib_async library and FastMCP. Ideal for feeding financial data into LLM workflows and autonomous agents while keeping trading disabled.
Overview
This directory contains an MCP (Model Context Protocol) server that wraps the ib_async library to allow LLMs to interact with Interactive Brokers data.
Features
The MCP server provides the following tools for LLM interaction:
1. Contract Lookup and Conversion
- lookup_contract: Look up contract details by ticker symbol and optional exchange/currency
- ticker_to_conid: Convert ticker symbol to contract ID (conid)
2. Market Data
- get_historical_data: Retrieve historical market data with configurable duration, bar size, and data type
3. News
- get_news: Retrieve current news articles for a contract
- get_historical_news: Retrieve historical news articles within a date range
4. Fundamental Data
- get_fundamental_data: Retrieve fundamental data including financial summaries, ownership, financial statements, and more
5. Portfolio and Account Information
- get_portfolio: Retrieve portfolio positions and details
- get_account_summary: Retrieve account summary information
- get_positions: Retrieve current positions with contract metadata, including option expiry/strike/right/multiplier fields
Prerequisites
-
Interactive Brokers Account: You need an active IB account
-
IB Gateway or TWS: Download and install either:
- IB Gateway (Stable) - Recommended for API-only use
- IB Gateway (Latest) - Latest features
- Trader Workstation (TWS) - Full trading platform
-
API Configuration:
- Enable API access in TWS/Gateway:
Configure → API → Settingsand check "Enable ActiveX and Socket Clients" - Set appropriate port (default: 7497 for TWS, 4001 for Gateway)
- Add
127.0.0.1to trusted IPs if connecting locally
- Enable API access in TWS/Gateway:
Installation
From source (development)
git clone https://github.com/Hellek1/ib-mcp.git
cd ib-mcp
pip install poetry
poetry install
Usage
Running the MCP Server
STDIO Mode (Default)
The default mode runs as a spawnable MCP server communicating via standard input/output. This is ideal for integration with MCP clients like Claude Desktop.
# Using default settings (TWS on localhost:7497)
poetry run ib-mcp-server
# Custom IB Gateway connection
poetry run ib-mcp-server --host 127.0.0.1 --port 4001 --client-id 1
# Help with all options
poetry run ib-mcp-server --help
HTTP Mode
HTTP mode runs a persistent server that listens on a host and port, enabling multi-client access and network connectivity.
# Local HTTP server
poetry run ib-mcp-server --transport http --http-host 127.0.0.1 --http-port 8000
# Listen on all interfaces (for Docker/remote access)
poetry run ib-mcp-server --transport http --http-host 0.0.0.0 --http-port 8000
# Using environment variables
IB_MCP_TRANSPORT=http IB_MCP_HTTP_HOST=127.0.0.1 IB_MCP_HTTP_PORT=8000 poetry run ib-mcp-server
Security Note: HTTP mode binds to localhost (127.0.0.1) by default. For remote access, place behind a reverse proxy with proper authentication and use a protected network.
Command Line Options
IB Connection
--host: IB Gateway/TWS host (default: 127.0.0.1)--port: IB Gateway/TWS port (default: 7497 for TWS, use 4001 for Gateway)--client-id: Unique client ID for the connection (default: 1)
Transport Configuration
--transport: Transport protocol -stdio(default) orhttp--http-host: HTTP server host (default: 127.0.0.1)--http-port: HTTP server port (default: 8000)
Environment Variables
You can also use environment variables instead of flags:
IB Connection
IB_HOSTIB_PORTIB_CLIENT_ID
Transport
IB_MCP_TRANSPORTIB_MCP_HTTP_HOSTIB_MCP_HTTP_PORT
Flags override environment variables if both are provided.
When to Use STDIO vs HTTP
| Use Case | STDIO | HTTP |
|---|---|---|
| Claude Desktop integration | ✅ Recommended | ❌ Not supported |
| Local single-client usage | ✅ Simple setup | ⚠️ Overkill |
| Multi-client access | ❌ Not possible | ✅ Supported |
| Remote/network access | ❌ Not possible | ✅ Supported |
| Docker deployment | ✅ Simple | ✅ More flexible |
| Production usage | ✅ Secure by default | ⚠️ Needs auth/proxy |
Docker
Build
docker build -t ib-mcp .
Run (connect to TWS running on host)
STDIO Mode (Default)
On macOS/Windows Docker Desktop you can reach host via host.docker.internal (already the default):
docker run --rm -it \
-e IB_HOST=host.docker.internal \
-e IB_PORT=7497 \
-e IB_CLIENT_ID=1 \
ghcr.io/hellek1/ib-mcp
On Linux you may need to add --add-host host.docker.internal:host-gateway and ensure the TWS/Gateway port is accessible:
docker run --rm -it \
--add-host host.docker.internal:host-gateway \
-e IB_HOST=host.docker.internal \
-e IB_PORT=7497 \
ghcr.io/hellek1/ib-mcp
Override arguments directly if preferred:
docker run --rm -it ghcr.io/hellek1/ib-mcp --host host.docker.internal --port 4001 --client-id 2
HTTP Mode
Run as an HTTP server for multi-client or remote access:
# Local access
docker run --rm -it -p 8000:8000 \
-e IB_HOST=host.docker.internal \
-e IB_PORT=7497 \
-e IB_MCP_TRANSPORT=http \
-e IB_MCP_HTTP_HOST=0.0.0.0 \
-e IB_MCP_HTTP_PORT=8000 \
ghcr.io/hellek1/ib-mcp
# Or using command line arguments
docker run --rm -it -p 8000:8000 \
ghcr.io/hellek1/ib-mcp \
--host host.docker.internal --port 7497 \
--transport http --http-host 0.0.0.0 --http-port 8000
The HTTP server will be available at http://localhost:8000/mcp/.
MCP Client Integration
STDIO Mode
The server communicates via stdio using the MCP protocol. It can be integrated with MCP-compatible tools and LLM applications.
Example MCP client configuration (e.g. Claude Desktop) using Docker:
{
"mcpServers": {
"ib-async": {
"command": "docker",
"args": [
"run",
"--rm",
"--add-host","host.docker.internal:host-gateway",
"-e","IB_HOST=host.docker.internal",
"-e","IB_PORT=7497",
"-e","IB_CLIENT_ID=1",
"ghcr.io/hellek1/ib-mcp:latest"
]
}
}
}
Notes:
- Remove the
--add-hostline on macOS/Windows Docker Desktop (it's only needed on Linux).
HTTP Mode
For HTTP mode, connect to the server at http://localhost:8000/mcp/ using any MCP-compatible HTTP client.
Available Tools
Contract Lookup
lookup_contract(symbol, sec_type="STK", exchange="SMART", currency="USD")
ticker_to_conid(symbol, sec_type="STK", exchange="SMART", currency="USD")
Market Data
get_historical_data(symbol, duration="1 M", bar_size="1 day", data_type="TRADES", exchange="SMART", currency="USD")
News
get_news(symbol, provider_codes="", exchange="SMART", currency="USD")
get_historical_news(symbol, start_date, end_date, provider_codes="", max_count=10, exchange="SMART", currency="USD")
Fundamentals
get_fundamental_data(symbol, report_type="ReportsFinSummary", exchange="SMART", currency="USD")
Available report types:
ReportsFinSummary: Financial summaryReportsOwnership: Ownership informationReportsFinStatements: Financial statementsRESC: Research reportsCalendarReport: Calendar events
Portfolio & Account
get_portfolio(account="")
get_account_summary(account="")
get_positions(account="")
get_positions returns a markdown table with account, symbol, security type,
position, average cost, currency, exchange, local symbol, trading class, and
contract ID. Option positions also include expiry, strike, right, and multiplier.
Example Usage
Once connected to an LLM through MCP, you can ask questions like:
- "Look up the contract details for AAPL"
- "Get the last month of daily historical data for TSLA"
- "What are the recent news articles for Microsoft?"
- "Show me the financial summary for Google"
- "What positions do I currently have in my portfolio?"
Data Formats
XML to Markdown Conversion
The server automatically converts XML-formatted fundamental data to markdown for better readability in LLM interactions.
Error Handling
The server includes comprehensive error handling and will provide meaningful error messages when:
- IB connection fails
- Invalid symbols are requested
- Market data is not available
- Authentication issues occur
Troubleshooting
Connection Issues
-
"Cannot connect to Interactive Brokers"
- Ensure TWS/Gateway is running
- Check that API is enabled in settings
- Verify port numbers match (7497 for TWS, 4001 for Gateway)
- Check firewall settings
-
"No contract found"
- Verify symbol spelling
- Try different exchanges (NYSE, NASDAQ vs SMART)
- Check if security type is correct
-
"No market data"
- Ensure you have appropriate market data subscriptions
- Check if markets are open for real-time data
- Try delayed data mode if real-time is not available
Performance Tips
- Use specific exchanges when possible instead of "SMART" routing
- Limit historical data requests to reasonable time ranges
- Cache contract IDs for frequently accessed symbols
Security Considerations
- The MCP server operates in read-only mode - no order placement capabilities
- Credentials are handled by the IB Gateway/TWS application
- The server only accesses data you have permission to view in your IB account
Contributing
- Fork & branch:
feat/xyz - Install dev deps:
poetry install - Activate pre-commit:
pre-commit install - Run tests:
poetry run pytest -q - Open a PR with a concise description.
Release (maintainers)
poetry version patch # or minor / major
poetry build
poetry publish --username __token__ --password <pypi-token>
git tag v$(poetry version -s)
git push --tags
Support & References
- IB API functionality: ib_async docs
- MCP protocol: MCP spec
- Interactive Brokers: IB API docs
Licensed under the BSD 3-Clause License. Contributions welcome.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。