CTP交易接口服务器

基于vnpy_ctp开发的MCP服务器,为AI客户端提供标准化的CTP综合交易平台接口,支持账户查询、行情订阅、下单交易等功能。

  • by SMU-Rainflow
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 SMU-Rainflow/ctp-mcp

使用说明

CTP MCP Server

基于 vnpy_ctp 开发的 MCP (Model Context Protocol) 服务器,将上期技术 CTP 综合交易平台以标准化接口暴露给 AI 客户端(如 Claude Desktop、Cursor 等)。


功能特性

  • 账户查询 — 查询期货账户资金、持仓信息
  • 行情订阅 — 订阅 CTP 实时 Tick 行情
  • 下单交易 — 支持限价单、市价单,开仓/平仓/平今/平昨
  • 订单管理 — 查询订单列表、撤销订单
  • 配置管理 — 支持 .env 文件持久化配置或运行时动态传参,密码脱敏展示
  • 连接管理 — 连接状态追踪,自动校验必填参数

快速开始

前置条件

  • Python ≥ 3.12
  • C/C++ 编译器(编译 vnpy_ctp C++ 扩展用)
    • Windows: Visual Studio Build Tools
    • Linux: GCC
    • macOS: Xcode Command Line Tools (xcode-select --install)
  • 有效的 CTP 仿真/实盘账户(向期货公司申请)

网络代理(如果需要)

export https_proxy=http://127.0.0.1:7897
export http_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897

安装与启动

# 1. 克隆仓库
git clone https://github.com/SMU-Rainflow/ctp-mcp.git
cd ctp-mcp

# 2. 安装依赖(推荐使用 uv)
uv sync

# 3. 创建并编辑配置
cp .env.example .env
# 编辑 .env,填入你的 CTP 账户信息

# 4. 启动 MCP 服务器(开发/调试模式)
uv run mcp dev server.py

# 或直接运行
uv run server.py

MCP Inspector 测试

uv run mcp dev server.py

然后打开浏览器访问 http://localhost:5173 进入 MCP Inspector 交互界面,可在线测试所有工具。

配置说明

环境变量 ( .env)

复制 .env.example 为 .env 并填写:

变量 必填 说明 示例
CTP_USERNAME ✅ CTP 账户登录名 000001
CTP_PASSWORD ✅ 登录密码 —
CTP_BROKER_CODE ✅ 经纪商代码 9999(仿真)
CTP_TRADING_SERVER ✅ 交易前置机地址 tcp://180.168.146.187:10130
CTP_MARKET_SERVER ✅ 行情前置机地址 tcp://180.168.146.187:10131
CTP_PRODUCT_NAME ❌ 产品名称 ctp_mcp
CTP_AUTH_CODE ❌ 授权编码 —
CTP_PRODUCT_INFO ❌ 产品信息 —

💡 运行时也可通过 connect() 工具的对应参数覆盖 .env 中的配置。

MCP 工具一览

服务器注册了以下 MCP 工具,AI 客户端可直接调用:

工具 描述
connect() 连接到 CTP 柜台,未传参数从 .env 读取
show_config() 查看当前配置(密码脱敏)和连接状态
close() 断开连接,释放资源
query_account() 查询账户资金
query_position() 查询持仓
subscribe(symbol, exchange) 订阅实时行情,如 c2601@DCE
get_tick(vt_symbol) 获取最新 Tick 数据
send_order(...) 发送交易指令(限价/市价,开/平)
get_orders() 获取所有订单
cancel_order(orderid, symbol, exchange) 撤销指定订单(orderid 必填)

下单参数说明

send_order 工具支持以下参数:

参数 必填 说明 可选值
symbol ✅ 合约代码 c2601, m2509 等
exchange ✅ 交易所 DCE, CFFEX, SHFE, CZCE, INE
direction ✅ 买卖方向 LONG(多), SHORT(空)
order_type ✅ 订单类型 LIMIT(限价), MARKET(市价)
volume ✅ 数量(手) 1, 2 等
price ✅ 价格 3500.0 等
offset ❌ 开平标志 OPEN(开仓), CLOSE(平仓), CLOSETODAY(平今), CLOSEYESTERDAY(平昨)
reference ❌ 自定义引用 任意字符串

项目结构

ctp-mcp/
├── server.py          # MCP 服务器主文件
├── .env.example       # 环境变量模板
├── .env               # 实际配置(已 gitignore)
├── pyproject.toml     # 项目依赖配置
├── .gitignore
└── README.md

整个服务是单文件实现(server.py),约 400 行,所有 MCP 工具、vnpy 引擎封装、序列化逻辑集中在一处,便于理解和修改。

与 AI 客户端集成

Claude Desktop

在 claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "ctp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ctp-mcp", "server.py"],
      "env": {
        "https_proxy": "http://127.0.0.1:7897",
        "http_proxy": "http://127.0.0.1:7897"
      }
    }
  }
}

Cursor / 其他 MCP 客户端

类似配置,指向 server.py 的入口即可。

开发指南

# 语法检查
python3 -c "import py_compile; py_compile.compile('server.py', doraise=True)"

# 代码格式化
uv run ruff check server.py --fix

⚠️ 免责声明

  • 本软件仅供学习和研究使用,不构成任何投资建议
  • 使用实盘交易前请充分测试,确认理解 CTP 交易规则
  • 作者不对因使用本软件造成的任何资金损失负责

License

MIT