项目简介
该项目是一个基于 Model Context Protocol (MCP) 构建的应用后端,旨在将 Interactive Brokers (IBKR) 的部分交易、行情和账户查询功能暴露给大型语言模型 (LLM)。通过 MCP 协议,LLM 客户端可以利用项目中提供的工具执行复杂的金融操作,例如扫描市场、获取合约细节、查询持仓、乃至执行交易指令(受人工审批控制)。项目使用 'ib_async' 库与 IBKR TWS/Gateway 交互,并提供了安全的交易审批流程和多种使用方式(CLI、Web 界面)。
主要功能点
- 盈透证券工具: 提供访问 IBKR API 的能力,包括:
- 获取账户持仓信息。
- 获取市场扫描器相关的代码(乐器、位置、过滤器)。
- 根据指定条件获取市场扫描结果。
- 获取特定合约的详细信息。
- 获取期权链数据。
- 获取合约 ID 对应的行情信息(包括价格和希腊字母 Greeks)。
- 获取并基于行情数据(如 Delta)过滤期权链。
- 执行简单的合约交易(股票、期权等)。
- 执行组合(价差/跨式)合约交易。
- 日历工具: 提供获取当前时间及交易日历信息的能力。
- 行情工具: 提供获取股票和期权实时(需订阅)或延迟行情报价的能力(可能需要第三方订阅)。
- 安全控制: 所有交易指令均需通过 Telegram Bot 进行人工审批,限制暴露的 API 子集,确保操作安全。
- 灵活的使用模式: 支持单次查询、CLI 交互、以及通过 Web 界面进行 Prompt 调度。
安装步骤
- 克隆仓库:'git clone https://github.com/omdv/ibkr-llm-assistant.git'
- 进入项目目录:'cd ibkr-llm-assistant'
- 准备 IBKR Gateway:推荐使用 Docker 运行 IBKR Gateway。项目提供了 'docker-compose.yaml' 文件,可以取消注释 'ib-gateway' 服务来启动。请确保 IBKR 端口仅限本地访问。
- 配置环境变量:创建 '.env' 文件或在环境中设置必要的配置,主要包括:
- 'IB_GATEWAY_HOST', 'IB_GATEWAY_PORT', 'IB_COMMAND_SERVER_PORT' (IBKR 连接信息)
- 'QUOTES_API_KEY' (第三方行情 API 密钥)
- 'ANTHROPIC_API_KEY' (LLM 提供商 API 密钥,例如 Anthropic)
- 'TELEGRAM_BOT_TOKEN', 'TELEGRAM_ALLOWED_USER_ID' (Telegram 审批 Bot 信息)
- 数据库连接信息 ('DATABASE_HOST', 'DATABASE_PORT' 等,如果使用 Web 界面)
- 构建并运行 Docker Compose:如果使用 Web 界面和数据库,可以构建并运行整个 'docker-compose.yaml' 文件。这会启动数据库、MCP 服务器、Web 服务等。
服务器配置
本项目中的 MCP 服务器是一个 Python 脚本,可以通过 'stdio' 协议与 MCP 客户端通信。如果你的 MCP 客户端需要手动配置服务器连接信息(例如 'config.json' 或类似的结构),以下是基于本项目实现的标准配置示例:
{ "server_name": "IBKR MCP Server", "transport": "stdio", "stdio_parameters": { "command": "python", "args": ["/path/to/your/repo/mcp_server.py"], "env": {} } }
- 'server_name': 给服务器起一个友好的名称。
- 'transport': 使用的传输协议,本项目主要支持 'stdio'。
- 'stdio_parameters': 'stdio' 传输协议所需的启动参数。
- 'command': 用于启动服务器进程的命令,通常是 'python'。
- 'args': 传递给命令的参数列表,第一个参数是服务器脚本的路径。请将 '/path/to/your/repo/mcp_server.py' 替换为你实际的项目路径。
- 'env': 服务器进程所需的环境变量。通常继承当前环境即可,但如果需要指定特定变量,可以在此定义。请注意,项目的配置(例如 IBKR 连接、API 密钥等)是通过环境变量读取的。
MCP 客户端在连接时会根据这些参数启动 '/path/to/your/repo/mcp_server.py' 脚本,并通过标准输入/输出与之进行 MCP 协议通信。
基本使用方法
项目提供了几种使用方式:
- 单次 Prompt 运行: 在命令行直接执行一个 Prompt 并获取结果。
python main.py --query "你的指令,例如:获取我当前的股票持仓。" - CLI 聊天模式: 在命令行与 LLM 进行交互式对话,LLM 可以调用工具执行指令。
python main.py --cli - Web 界面模式: 启动 Web 界面,用于管理 Prompt 和调度自动化任务。这需要完整的 Docker Compose 环境(包括数据库)。
然后访问 Web 界面地址(默认为 http://127.0.0.1:8000)。python main.py --web # 或者使用 docker compose up web
信息
分类
商业系统