基于FastMCP 2.0和MCP StreamableHTTP实现的Interactive Brokers (IBKR) MCP服务器,提供账户管理、交易操作和市场数据查询功能。
git clone https://github.com/yourusername/ibkr-mcp-server.git
cd ibkr-mcp-server
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装包
pip install -e .
# 安装开发依赖
pip install -e ".[dev]"
# 设置预提交钩子
pre-commit install
在项目根目录创建一个.env文件:
# MCP服务器设置
MCP__HOST=0.0.0.0
MCP__PORT=8080
# IBKR连接设置
IBKR__HOST=127.0.0.1
IBKR__PORT=4002
IBKR__CLIENT_ID=1
IBKR__READONLY=false
# 日志设置
LOGGING__LEVEL=INFO
# 测试IBKR连接
python -m ibkr_mcp_server.cli test --host 127.0.0.1 --port 4002
# 启动服务器
python -m ibkr_mcp_server.cli serve
# 或者使用自定义参数
python -m ibkr_mcp_server.cli serve --host 0.0.0.0 --port 8080
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP__HOST | 0.0.0.0 | MCP服务器监听地址 |
MCP__PORT | 8080 | MCP服务器端口 |
IBKR__HOST | 127.0.0.1 | IBKR TWS/Gateway地址 |
IBKR__PORT | 4002 | IBKR TWS/Gateway端口 |
IBKR__CLIENT_ID | 1 | IBKR客户端ID |
IBKR__READONLY | false | 只读模式 |
LOGGING__LEVEL | INFO | 日志级别 |
| 平台 | 演示端口 | 实盘端口 |
|---|---|---|
| TWS | 4002 | 7496 |
| Gateway | 4002 | 4001 |
服务器提供了9个MCP工具:
get_account_summary:获取账户概要信息get_positions:获取持仓信息place_order:下单cancel_order:撤单get_open_orders:获取未完成订单get_market_data:获取实时市场数据get_historical_data:获取历史数据connection_status:检查连接状态reconnect:重新连接到IBKR{
"tool": "place_order",
"arguments": {
"contract": {
"symbol": "AAPL",
"sec_type": "STK",
"exchange": "SMART",
"currency": "USD"
},
"order": {
"action": "BUY",
"total_quantity": 100,
"order_type": "LMT",
"lmt_price": 150.0
}
}
}
{
"tool": "get_positions",
"arguments": {}
}
{
"tool": "get_historical_data",
"arguments": {
"contract": {
"symbol": "AAPL",
"sec_type": "STK",
"exchange": "SMART",
"currency": "USD"
},
"duration": "1 D",
"bar_size": "1 min"
}
}
┌─────────────────────┐
│ MCP客户端 │
│ (Claude桌面版, │
│ 自定义客户端) │
└─────────┬───────────┘
│ HTTP/WebSocket
┌─────────┴───────────┐
│ FastMCP服务器 │
│ (MCP协议层) │
├─────────────────────┤
│ IBKR MCP服务器 │
│ (业务逻辑) │
├─────────────────────┤
│ IBKR客户端 │
│ (API封装) │
└─────────┬───────────┘
│ TWS API
┌─────────┴───────────┐
│ TWS/Gateway │
│ (IBKR平台) │
└─────────────────────┘
src/ibkr_mcp_server/
├── __init__.py # 包初始化
├── server.py # MCP服务器实现
├── client.py # IBKR客户端封装
├── models.py # 数据模型
├── config.py # 配置管理
├── exceptions.py # 异常定义
└── cli.py # 命令行接口
black进行代码格式化isort进行导入排序flake8进行代码检查mypy进行类型检查# 运行测试
pytest
# 生成覆盖率报告
pytest --cov=src --cov-report=html
# 构建镜像
docker build -t ibkr-mcp-server .
# 运行容器
docker run -p 8080:8080 --env-file .env ibkr-mcp-server
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
添加到你的Claude桌面MCP配置中:
{
"mcpServers": {
"ibkr": {
"command": "python",
"args": ["-m", "ibkr_mcp_server.cli", "serve"],
"env": {
"IBKR__HOST": "127.0.0.1",
"IBKR__PORT": "4002",
"IBKR__CLIENT_ID": "1"
}
}
}
}
启用调试日志以进行故障排除:
LOGGING__LEVEL=DEBUG python -m ibkr_mcp_server.cli serve
MIT许可证 - 详情请参阅LICENSE文件
欢迎贡献!请随时提交Pull Request。
如果您遇到任何问题,请提交一个Issue。