IBKR交易协议服务器

通过自然语言连接Claude和Interactive Brokers TWS,实现投资组合查询、市场数据获取和订单管理。

  • by danielkristofik
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 danielkristofik/mcp_claude_ibkr

使用说明

克劳德tws连接

连接的MCP(模型上下文协议)服务器 克劳德 到 盈透证券TWS 通过 ib_insync.使用自然语言检查您的投资组合、提取市场数据和下订单——所有这些都可以从Claude Desktop、Claude Code或任何兼容MCP的客户端完成。

快速开始

macOS:

git clone https://github.com/danielkristofik/mcp_claude_ibkr.git
cd mcp_claude_ibkr
./install.sh

Linux(Ubuntu/Debian):

git clone https://github.com/danielkristofik/mcp_claude_ibkr.git
cd mcp_claude_ibkr
./install-linux.sh

安装程序将:

  1. 查找或安装Python 3.10+
  2. 创建虚拟环境并安装依赖项
  3. 让您选择纸质或实时交易端口
  4. 自动配置克劳德桌面
  5. 配置Claude Code(CLI)(如果已安装)

特性

工具 描述 只读
ib_account_summary 账户概述——清算价值、现金、保证金、购买力 是
ib_positions 具有市场价值和损益的投资组合头寸 是
ib_pnl 每日损益——已实现和未实现 是
ib_fundamental_data 基本面——市盈率、每股收益、市值、股息、52周区间 是
ib_margin_impact 假设订单的保证金影响估计(如果) 是
ib_market_data 实时快照(买入/卖出/最后一次/交易量)+希腊期权 是
ib_historical_data 历史OHLCV酒吧 是
ib_scanner 市场扫描器(涨幅最大、跌幅最大、最活跃等) 是
ib_contract_details 合同详情 是
ib_option_chains 期权到期和罢工 是
ib_open_orders 活动订单 是
ib_executions 今天的处决/填补 是
ib_prepare_order 准备订单以供审核(步骤1/2) 是
ib_submit_order 提交确认订单(步骤2/2) 不
ib_cancel_order 取消当前订单 不

订单安全

订单使用a 两步确认流程:

  1. ib_prepare_order --验证合同,构建订单,并返回 确认令牌
  2. Claude向您显示订单详细信息,并等待明确批准
  3. ib_submit_order --仅在确认后提交订单(令牌将在5分钟后过期)

手动安装

先决条件

  • Python 3.10+
  • TWS或IB网关正在运行并已登录
  • TWS API已启用(编辑→ 全局配置→ API → 设置)

设置

git clone https://github.com/danielkristofik/mcp_claude_ibkr.git
cd mcp_claude_ibkr

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Claude桌面配置

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)并添加IBKR服务器:

{
  "mcpServers": {
    "ibkr": {
      "command": "/FULL/PATH/TO/claude-tws-connect/venv/bin/python",
      "args": ["/FULL/PATH/TO/claude-tws-connect/ibkr_mcp.py"]
    }
  }
}

重要提示: 在venv中使用Python二进制文件的完整绝对路径。

看 claude_desktop_config_example.json 举一个完整的例子。

Claude代码(CLI)设置

如果你使用 克劳德代码,MCP服务器可以配置一个命令:

claude mcp add --transport stdio --scope user ibkr -- /FULL/PATH/TO/claude-tws-connect/venv/bin/python /FULL/PATH/TO/claude-tws-connect/ibkr_mcp.py

或者,此存储库包括 .mcp.json 当您在Claude Code中打开项目目录时,该文件使MCP服务器自动可用,无需手动配置。

验证

重新启动克劳德桌面。这 ib_* 工具应出现在工具列表中。尝试:

"Show me my account summary"
"What positions do I have?"
"Get historical data for AAPL for the last month"

配置

编辑 config.json 或顶部的变量 ibkr_mcp.py:

TWS_HOST = "127.0.0.1"   # TWS host
TWS_PORT = 7496           # 7496 = live, 7497 = paper trading
CLIENT_ID = 10            # Unique client ID (avoid conflicts with other TWS connections)

TWS设置

在TWS中: Edit → 全局配置→ API → 设置:

  • 启用ActiveX和Socket客户端
  • 插座端口: 7496 (直播)或 7497 (纸)
  • 如果要下订单,请取消选中“只读API”
  • 添加 127.0.0.1 到受信任的IP

远程IB网关

要连接到远程IB网关,请使用SSH隧道:

ssh -L 4002:127.0.0.1:4002 user@remote-server

然后改变 TWS_PORT 到 4002 在您的配置中。

故障排除

问题 解决方案
连接被拒绝 请确保TWS正在运行并且API已启用
端口冲突 运行 lsof -i :7496 检查是否有其他东西正在使用该端口
无数据 给定合同需要市场数据订阅
超时 增加 CONNECT_TIMEOUT 或检查您的网络连接
令牌已过期 重新运行 ib_prepare_order --令牌有效期为5分钟

支持

如果你觉得这个项目有用,可以考虑支持它的开发:

免责声明

此软件用于 仅用于教育和信息目的确实如此 不是财务建议交易证券涉及重大风险,可能导致您的投资资本损失。

作者和贡献者是 不负责任 因使用本软件而导致的任何经济损失、损害或其他后果。 使用风险自负。 在做出交易决策之前,一定要做自己的研究并咨询合格的财务顾问。

本项目不隶属于盈透证券有限责任公司,也不受其认可或与之有联系。

许可证

麻省理工学院 --版权所有(c)2025丹尼尔·克里斯托菲克