交互式经纪商MCP服务器

一个提供与Interactive Brokers(IBKR)通过TWS API或IB Gateway交互工具的模型上下文协议(MCP)服务器。

  • by jinyiabc
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 jinyiabc/ibkr-mcp

使用说明

盈透证券Windows版MCP服务器

一种模型上下文协议(MCP)服务器,提供通过TWS API或IB网关与交互式代理(IBKR)交互的工具。

特性

  • 账户管理:获取账户摘要、头寸和投资组合信息
  • 市场数据:股票的实时和历史市场数据
  • 订单管理:下达市价单和限价单、取消订单、查看未结订单
  • 交易执行:查看最近的交易执行情况
  • 期权交易:获取股票期权链

先决条件

  1. 盈透证券账户:您需要一个有效的IBKR帐户

  2. TWS或IB网关:安装:

    • 交易员工作站(TWS)-完整的交易平台
    • IB网关-轻量级API网关

    下载地址:https://www.interactivebrokers.com/en/trading/tws.php

  3. Python 3.8+:运行MCP服务器所需

  4. 启用API访问:在TWS/网关设置中:

    • File → 全局配置→ API → 设置
    • 启用“启用ActiveX和Socket客户端”
    • 请注意Socket端口(7497用于纸质交易,7496用于实时交易)
    • 将127.0.0.1添加到受信任的IP

安装

步骤1:安装Python依赖项

打开命令提示符或PowerShell并运行:

pip install -r requirements.txt

或者单独安装软件包:

pip install mcp ib_insync pydantic

步骤2:配置TWS/IB网关

  1. 启动TWS或IB网关
  2. 使用您的凭据登录
  3. 首选 File → 全局配置→ API → 设置
  4. 选中“启用ActiveX和Socket客户端”
  5. 如果要下订单,请取消选中“只读API”
  6. 注意套接字端口:
    • 7497 纸张交易
    • 7496 用于实时交易
  7. 添加 127.0.0.1 到受信任的IP
  8. 点击 好的 并重新启动TWS/网关

用法

启动MCP服务器

python server.py

服务器将运行并等待MCP客户端通过stdio连接。

与Claude Desktop集成

将此配置添加到您的Claude Desktop配置文件中:

视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "ibkr": {
      "command": "python",
      "args": ["C:\\path\\to\\ibkr-mcp-server\\server.py"]
    }
  }
}

替换 C:\\path\\to\\ibkr-mcp-server\\ 使用您保存此项目的实际路径。

可用工具

1. connect_ibkr

连接到盈透证券TWS或网关。

{
  "host": "127.0.0.1",
  "port": 7497,
  "client_id": 1
}
  • port:7497(纸面交易)或7496(实时交易)
  • 在使用其他工具之前必须调用

2. disconnect_ibkr

断开IBKR的连接。

3. get_count_summary

获取包括现金、权益和损益在内的账户摘要。

退货:

{
  "TotalCashValue": "50000.00 USD",
  "NetLiquidation": "52000.00 USD",
  "BuyingPower": "200000.00 USD",
  "RealizedPnL": "500.00 USD",
  "UnrealizedPnL": "2000.00 USD"
}

4. get_positions

获取所有当前位置。

返回包含符号、数量、平均成本、市场价值和损益的头寸数组。

5. 获取市场数据

获取某个交易品种的实时市场数据。

{
  "symbol": "AAPL",
  "exchange": "SMART",
  "currency": "USD"
}

返回买入价、卖出价、最后价、交易量、高价、低价。

6. 获取历史数据

获取历史市场数据。

{
  "symbol": "AAPL",
  "duration": "1 D",
  "bar_size": "1 hour",
  "what_to_show": "TRADES"
}

持续时间选项:“1D”、“1W”、“1M”、“1Y” 酒吧大小选项:“1分钟”、“5分钟”、”1小时”、“1天”

7. 下单

下达交易订单。

市场秩序:

{
  "symbol": "AAPL",
  "action": "BUY",
  "quantity": 100,
  "order_type": "MKT"
}

限价订单:

{
  "symbol": "AAPL",
  "action": "SELL",
  "quantity": 100,
  "order_type": "LMT",
  "limit_price": 150.50
}

8. 取消订单

取消现有订单。

{
  "order_id": 123
}

9. get_open_orders

获取所有未结订单。

10. getexecutions

获取最近的交易执行情况。

{
  "days": 1
}

11. get_option_chain

获取符号的选项链。

{
  "symbol": "AAPL",
  "exchange": "SMART"
}

与克劳德的对话示例

配置后,您可以询问Claude:

  • “连接到我的IBKR纸质交易账户”
  • “我的活期账户余额是多少?”
  • “显示我的所有位置”
  • “获取AAPL的当前价格”
  • “显示TSLA上周的历史数据”
  • “下市场订单购买10股微软股票”
  • “我的公开订单是什么?”
  • “获取SPY的期权链”

安全说明

⚠️ 重要安全注意事项:

  1. 纸品交易优先:在使用真实账户之前,始终使用纸质交易(端口7497)进行测试
  2. 订单确认:服务器允许下订单-谨慎使用
  3. API访问:只有在活动使用API时才启用该访问
  4. 防火墙:确保防火墙允许连接到TWS/网关
  5. 凭证:切勿共享您的IBKR证书或API密钥

故障排除

连接失败

  • 确保TWS或IB网关正在运行
  • 验证API设置是否已启用
  • 检查端口号(7497表示纸质,7496表示实时)
  • 确认127.0.0.1位于受信任的IP地址中

无市场数据

  • 您的IBKR帐户需要订阅市场数据
  • 实时数据需要主动订阅
  • 延迟/快照数据可能无需订阅即可使用

下单失败

  • 确保在TWS设置中取消选中“只读API”
  • 确认你有足够的购买力
  • 检查市场是否对证券开放

未找到模块

pip install --upgrade mcp ib_insync pydantic

发展

运行测试

python -m pytest tests/

日志记录

日志被写入控制台。在中调整日志记录级别 server.py:

logging.basicConfig(level=logging.DEBUG)

许可证

MIT许可证-有关详细信息,请参阅许可证文件

免责声明

此软件用于教育目的。交易涉及风险。请自行决定使用。作者不对任何经济损失负责。

资源

支持

关于以下问题:

  • API IBKR公司:联系盈透证券支持
  • MCP 服务器:在GitHub上打开一个问题
  • 取消:查看ib_insync文档

更新日志

版本1.0.0

  • 初始版本
  • 支持基本账户操作
  • 市场数据检索
  • 订单管理
  • 历史数据查询
  • 选项链检索