mm ibkr mcp
⚠️ 有风险的流动资金——使用风险自负 该项目连接到盈透证券,可以用真钱进行真实、不可逆转的交易。它是一个 概念验证研究实施 用于代理驱动的交易工作流程。它是 不 财务建议,没有许可的交易系统,也没有准备好生产。 代理系统可以而且确实会犯错误:在测试中观察到参数命名错误、计算错误、订单数量不正确和订单方错误。Telegram审批门之所以存在,正是因为没有监督的自动执行是危险的。 您对因使用本软件而产生的任何损失承担全部责任。 如果你不了解风险,不要使用这个项目。
mm-ibkr-mcp 是典型的盈透证券MCP回购,用于代理驱动的账户监控和交易执行。
它假设用户已经在本地运行IB网关或TWS。此回购不管理代理流程。它的工作是连接、检查账户状态、预览订单、进行交易、保持执行状态,并在需要时通过Telegram进行提交。
老年人 mm-ibkr-gateway repo目前仍然是公开的,稍后将缩小到网关部署和维护工具。此回购是规范的监控和交易MCP表面。
范围
包括:
- 账户健康状况、余额、损益、头寸、未结订单
- 市场数据、合约解析、期权链和快照工具
- 单订单预览和下单
- 通过持续的交易意图实现持久的篮子执行
- SQLite支持的审计、批准、交易意图、执行状态和头寸快照
- 单个订单和篮子的电报审批流程
- 比较和交换管理控制
control.json
未包含在规范工作流程中:
- 启动或停止IB网关
- web UI或REST管理作为一流界面
- 调度器、信号接收或单独的OMS守护进程
安全模型
两层控制执行:
control.json
- orders_enabled - dry_run - block_reason
MCP_ORDER_APPROVAL_MODE
- telegram:订单提交需要Telegram批准 - yolo:无审批门
安全默认值为:
orders_enabled=falsedry_run=trueMCP_ORDER_APPROVAL_MODE=telegram
配置
在第一次启动时, uv run ibkr-mcp 为以下对象创建安全默认值:
data/ibkr-mcp/config.jsondata/ibkr-mcp/control.json
编辑 config.json 要匹配您的本地IB网关或TWS连接:
{
"ibkr_host": "127.0.0.1",
"ibkr_port": 4002,
"ibkr_client_id": 1,
"default_account_id": null
}.env 是可选的。复制 .env.example 到 .env 仅当您需要Telegram批准或明确的yolo模式时:
MCP_ORDER_APPROVAL_MODE=telegram如果使用Telegram审批模式,还应设置:
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=...仅用于监控,您可以离开 .env 清空并使用默认的批准姿势。
仅高级环境覆盖:
MM_IBKR_DATA_DIR=/path/to/data
MM_IBKR_CONFIG_PATH=/path/to/config.json
MM_IBKR_CONTROL_DIR=/path/to/control-dir
MCP_TRANSPORT=streamable-http
MCP_HOST=127.0.0.1
MCP_PORT=8001
MCP_AUTH_TOKEN=change-me
MCP_ENABLE_ADMIN_TOOLS=true
APPROVED_UNUSED_EXPIRY_SECONDS=600 # auto-expiry for approved-but-unused approvals (default 600 s)跑步
安装依赖项:
uv sync --group dev通过stdio启动MCP服务器:
uv run ibkr-mcp默认传输是本地的 stdio,这是克劳德代码/桌面风格客户端的最低摩擦MCP设置。
仅在高级自托管设置下通过HTTP运行:
export MCP_TRANSPORT=streamable-http
export MCP_HOST=127.0.0.1
export MCP_PORT=8001
export MCP_AUTH_TOKEN=change-me
uv run ibkr-mcp远程执行主机
如果IB网关在另一台机器上运行,建议运行代理设置 mm-ibkr-mcp 在该执行主机上,通过SSH stdio从客户端机器启动它。
为什么这是首选:
control.json、批准和审核状态保留在执行主机上- MCP进程通过该主机自己的网关连接到网关
127.0.0.1:4001/127.0.0.1:4002 - OpenCode或Claude不需要单独的本地套接字隧道来执行工作流
仅对需要客户端计算机上的本地网关套接字的其他应用程序使用本地SSH端口转发,例如直接通过以下方式连接的跟踪器或同步作业 ib_insync.
标准工具
核心监控和执行:
ibkr_healthibkr_get_trading_statusibkr_get_schedule_statusibkr_get_account_summaryibkr_get_positionsibkr_get_pnlibkr_list_open_ordersibkr_get_order_statusibkr_preview_orderibkr_place_orderibkr_cancel_order
篮筐执行:
ibkr_preview_order_basketibkr_create_trade_intentibkr_request_trade_intent_approvalibkr_submit_trade_intentibkr_get_trade_intentibkr_list_trade_intentsibkr_reconcile_trade_intentibkr_cancel_trade_intent
批准和安全:
ibkr_request_trade_approval(阻塞直到批准/拒绝/超时)ibkr_request_trade_intent_approval(阻塞直到批准/拒绝/超时)ibkr_request_environment_change(阻塞直到批准/拒绝/超时)ibkr_execute_environment_changeibkr_request_live_trading_unlockibkr_check_approval_statusibkr_emergency_stop
预期工作流程
单笔订单:
ibkr_get_trading_statusibkr_resolve_contractibkr_preview_orderibkr_assess_order_impactibkr_validate_against_profile- 如果
MCP_ORDER_APPROVAL_MODE=telegram,请求批准 ibkr_place_order
篮子:
ibkr_preview_order_basketibkr_create_trade_intent- 如果
MCP_ORDER_APPROVAL_MODE=telegram,请求批准 ibkr_submit_trade_intentibkr_reconcile_trade_intent
坚持
MCP服务器使用一个SQLite数据库:
audit_logorder_historyapprovalstrade_intentintent_orderexecution_stateposition_snapshot
这为代理提供了一个持久的真实来源,用于审批、订单提交、对账和审计。
