CTS Trading API MCP服务器
模型上下文协议(MCP)服务器,提供对CTBC Securities CTS Trading API的全面访问。使像Claude这样的LLM能够与股票、期货和期权交易平台进行交互。
特性
- 股票交易:下达、修改和取消库存订单
- 期货/期权交易:全面支持衍生品交易
- 账户管理:查询帐户、职位、订单和匹配项
- 类型安全:适用于所有操作的全面Pydantic模型
- 事件驱动:查询操作的异步响应处理
- MCP资源:访问配置和连接状态
需求
- 操作系统:Windows(COM对象依赖关系)
- python:3.10或更高
- 中旅贸易API:必须在系统上安装并注册
- 依赖项:
- mcp >= 1.1.0 - pywin32 >= 306 - pydantic >= 2.0
安装
- 克隆或下载存储库
- 安装CTS Trading API (来自CTBC证券)
- 确保 DJTRADEOBJLibCTS.TradeApp COM对象已注册
- 安装 Python 依赖项
# Using uv (recommended)
uv pip install -e .
# Or using pip
pip install -e .- 配置服务器
编辑 appsetting.json 使用您的交易服务器端点:
{
"TradeDas": "your.trading.server.com/tradedas"
}用法
MCP检验员测试
使用MCP开发工具测试服务器:
uv run mcp dev d:\ctbcsec-api-mcp-server\ctbcsec_mcp\server.py这将启动MCP检查器,您可以在其中:
- 查看所有可用工具
- 测试工具模式
- 交互式执行工具
- 监控响应
与Claude Desktop集成
将服务器安装到Claude Desktop:
uv run mcp install d:\ctbcsec-api-mcp-server\ctbcsec_mcp\server.py或手动添加到Claude Desktop配置(%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"ctbcsec-trading": {
"command": "uv",
"args": [
"--directory",
"d:\\ctbcsec-api-mcp-server",
"run",
"ctbcsec-mcp"
]
}
}
}可用工具
身份验证和连接
initialize:使用服务器配置初始化CTS Trading APIlogin:使用交易系统对用户进行身份验证connect:连接到交易服务器disconnect:断开与交易服务器的连接logout:退出交易系统get_accounts:检索所有可用的交易账户get_connection_status:获取当前连接状态set_lot_size:为特定股票设置批量数据
股票交易
stock_new_order:下新的库存订单stock_modify_order:修改现有库存订单stock_cancel_order:取消现有库存订单stock_query_order:查询库存订单stock_query_match:查询股票交易匹配stock_query_position:查询库存头寸
期货/期权交易
futopt_new_order:下达新的期货/期权订单futopt_modify_order:修改现有的期货/期权订单futopt_cancel_order:取消现有的期货/期权订单futopt_query_order:查询期货/期权订单futopt_query_match:查询期货/期权匹配futopt_query_oi:查询期货/期权未平仓合约futopt_query_equity:查询期货/期权账户权益
资源
config://appsetting:当前服务器配置status://connection:当前连接和身份验证状态
示例使用流程
# 1. Initialize the trading API
initialize(trade_das_url="apsit.ectest.ctbcsec.com/tradedas")
# 2. Login
login(user_id="your_user_id", password="your_password")
# 3. Connect to trading server
connect()
# 4. Get available accounts
accounts = get_accounts()
# 5. Place a stock order
stock_new_order(
account_id="1234567",
stock_id="2330",
quantity="1000",
price="500",
buy_sell=BuySell.BUY,
price_type=PriceType.LIMIT
)
# 6. Query positions
stock_query_position(account_id="1234567")
# 7. Cleanup
disconnect()
logout(user_id="your_user_id")枚举
交易类型(股票)
REGULAR = 0:常规交易AFTER_HOURS_ODD_LOT = 1:下班后奇数AFTER_HOURS = 2:下班后EMERGING = 5:新兴股票INTRADAY_ODD_LOT = 7:当日奇数批次
订单类型(库存)
CASH = 0:现金订单MARGIN = 1:保证金交易SHORT = 2:卖空DAY_TRADING_SELL_FIRST = 16:日内交易先卖出
买卖
BUY = 1:购买订单SELL = 2:卖出订单
价格类型
LIMIT = 0:限价LIMIT_UP = 1:上限LIMIT_DOWN = 2:限制FLAT = 3:公寓MARKET = 4:市场价格
订单条件
ROD = 0:剩余时间IOC = 1:立即或取消FOK = 2:填充或杀死
产品类型(期货/期权)
FUTURES = 0:期货OPTIONS = 1:选项COMPLEX_OPTIONS = 2:复杂选项COMPLEX_FUTURES = 3:复杂的未来
建筑
组件
server.py:具有工具定义和生命周期管理的FastMCP服务器models.py:类型安全结构化数据的Pydantic模型wrapper.py:具有事件处理和线程安全的COM对象包装器__init__.py:包初始化
数据流
- MCP工具接收带有键入参数的请求
- 服务器使用Pydantic模型验证输入
- 包装器执行具有线程安全性的COM对象方法
- 事件处理程序将异步响应排队
- 结构化响应返回给LLM
线程安全
包装器使用锁来确保对COM对象的线程安全访问,这对并发操作至关重要。
事件处理
查询操作使用事件驱动架构:
- 响应通过以下方式到达
OnDataResponse回调 - 事件排队等待异步处理
- 工具等待具有可配置超时的响应
故障排除
找不到COM对象
错误:“创建COM对象失败”
解决方案:确保安装了CTS Trading API并注册了COM对象。运行CTS Trading客户端一次以验证安装。
连接失败
错误:“未连接到交易服务器”
解决方案:
- 验证
appsetting.json具有正确的服务器URL - 呼叫
initialize()之前login() - 呼叫
login()之前connect() - 检查网络连接
查询超时
备注:如果服务器响应缓慢,查询操作可能会超时。默认超时为5秒。对于某些操作来说,这是正常的。
权限错误
确保您拥有CTBC Securities的适当交易权限和账户授权。
发展
运行自动测试
该项目包括一套全面的自动化测试,使用 pytest 和 mock.
# Install dev dependencies
uv pip install -e ".[dev]"
# Run all tests
pytest测试包括:
- 模型:所有数据结构的验证和序列化。
- 包装器:COM对象交互的逻辑(使用模拟)。
- 服务器:工具注册和高级逻辑。
使用脚本进行手动测试
日志记录
服务器使用Python的日志模块。通过环境变量设置日志级别:
# Windows PowerShell
$env:LOG_LEVEL="DEBUG"
uv run ctbcsec-mcp
# Windows CMD
set LOG_LEVEL=DEBUG
uv run ctbcsec-mcp安全考虑
- 凭证:从不将凭据提交到版本控制
- 生产使用:使用适当的身份验证和授权
- 网络安全:确保与交易服务器的安全连接
- 访问控制:适当限制对MCP服务器的访问
许可证
此MCP服务器仅供参考和开发之用。有关使用条款,请参阅您的CTBC Securities API许可协议。
支持
有关技术支持和API问题,请联系CTBC Securities技术支持团队。
参考文献
______________________________________________________________________
版本: 0.1.0\ 最后更新:2026年1月21日
