使用说明
CTP MCP Server
基于 vnpy_ctp 开发的 MCP (Model Context Protocol) 服务器,将上期技术 CTP 综合交易平台以标准化接口暴露给 AI 客户端(如 Claude Desktop、Cursor 等)。
功能特性
- 账户查询 — 查询期货账户资金、持仓信息
- 行情订阅 — 订阅 CTP 实时 Tick 行情
- 下单交易 — 支持限价单、市价单,开仓/平仓/平今/平昨
- 订单管理 — 查询订单列表、撤销订单
- 配置管理 — 支持
.env文件持久化配置或运行时动态传参,密码脱敏展示 - 连接管理 — 连接状态追踪,自动校验必填参数
快速开始
前置条件
- Python ≥ 3.12
- C/C++ 编译器(编译
vnpy_ctpC++ 扩展用)- 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
