ctbcsec-api-mcp-server
Enables LLMs to interact with CTBC Securities CTS Trading API for stock, futures, and options trading operations, including order placement, account management, and position queries.
README
CTS Trading API MCP Server
A Model Context Protocol (MCP) server providing comprehensive access to CTBC Securities CTS Trading API. Enables LLMs like Claude to interact with the trading platform for stock, futures, and options trading operations.
Features
- Stock Trading: Place, modify, and cancel stock orders
- Futures/Options Trading: Full support for derivatives trading
- Account Management: Query accounts, positions, orders, and matches
- Type-Safe: Comprehensive Pydantic models for all operations
- Event-Driven: Async response handling for query operations
- MCP Resources: Access to configuration and connection status
Requirements
- Operating System: Windows (COM object dependency)
- Python: 3.10 or higher
- CTS Trading API: Must be installed and registered on the system
- Dependencies:
mcp >= 1.1.0pywin32 >= 306pydantic >= 2.0
Installation
-
Clone or download the repository
-
Install CTS Trading API (from CTBC Securities)
- Ensure the
DJTRADEOBJLibCTS.TradeAppCOM object is registered
- Ensure the
-
Install Python dependencies
# Using uv (recommended) uv pip install -e . # Or using pip pip install -e . -
Configure the server
Edit
appsetting.jsonwith your trading server endpoint:{ "TradeDas": "your.trading.server.com/tradedas" }
Usage
Testing with MCP Inspector
Test the server using the MCP development tools:
uv run mcp dev d:\ctbcsec-api-mcp-server\ctbcsec_mcp\server.py
This launches the MCP Inspector where you can:
- View all available tools
- Test tool schemas
- Execute tools interactively
- Monitor responses
Integration with Claude Desktop
Install the server to Claude Desktop:
uv run mcp install d:\ctbcsec-api-mcp-server\ctbcsec_mcp\server.py
Or manually add to Claude Desktop configuration (%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"ctbcsec-trading": {
"command": "uv",
"args": [
"--directory",
"d:\\ctbcsec-api-mcp-server",
"run",
"ctbcsec-mcp"
]
}
}
}
Available Tools
Authentication & Connection
initialize: Initialize the CTS Trading API with server configurationlogin: Authenticate user with trading systemconnect: Connect to the trading serverdisconnect: Disconnect from trading serverlogout: Logout from trading systemget_accounts: Retrieve all available trading accountsget_connection_status: Get current connection statusset_lot_size: Set lot size data for specific stocks
Stock Trading
stock_new_order: Place a new stock orderstock_modify_order: Modify an existing stock orderstock_cancel_order: Cancel an existing stock orderstock_query_order: Query stock ordersstock_query_match: Query stock trade matchesstock_query_position: Query stock positions
Futures/Options Trading
futopt_new_order: Place a new futures/options orderfutopt_modify_order: Modify an existing futures/options orderfutopt_cancel_order: Cancel an existing futures/options orderfutopt_query_order: Query futures/options ordersfutopt_query_match: Query futures/options matchesfutopt_query_oi: Query futures/options open interestfutopt_query_equity: Query futures/options account equity
Resources
config://appsetting: Current server configurationstatus://connection: Current connection and authentication status
Example Usage Flow
# 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")
Enumerations
TradeType (Stock)
REGULAR = 0: Regular tradingAFTER_HOURS_ODD_LOT = 1: After-hours odd lotAFTER_HOURS = 2: After-hoursEMERGING = 5: Emerging stockINTRADAY_ODD_LOT = 7: Intraday odd lot
OrderType (Stock)
CASH = 0: Cash orderMARGIN = 1: Margin tradingSHORT = 2: Short sellingDAY_TRADING_SELL_FIRST = 16: Day trading sell first
BuySell
BUY = 1: Buy orderSELL = 2: Sell order
PriceType
LIMIT = 0: Limit priceLIMIT_UP = 1: Limit upLIMIT_DOWN = 2: Limit downFLAT = 3: FlatMARKET = 4: Market price
OrderCondition
ROD = 0: Rest of DayIOC = 1: Immediate or CancelFOK = 2: Fill or Kill
ProductType (Futures/Options)
FUTURES = 0: FuturesOPTIONS = 1: OptionsCOMPLEX_OPTIONS = 2: Complex optionsCOMPLEX_FUTURES = 3: Complex futures
Architecture
Components
server.py: FastMCP server with tool definitions and lifespan managementmodels.py: Pydantic models for type-safe structured datawrapper.py: COM object wrapper with event handling and thread safety__init__.py: Package initialization
Data Flow
- MCP tool receives request with typed parameters
- Server validates input using Pydantic models
- Wrapper executes COM object method with thread safety
- Event handler queues async responses
- Structured response returned to LLM
Thread Safety
The wrapper uses locks to ensure thread-safe access to the COM object, which is critical for concurrent operations.
Event Handling
Query operations use an event-driven architecture:
- Responses arrive via
OnDataResponsecallback - Events are queued for async processing
- Tools wait for responses with configurable timeout
Troubleshooting
COM Object Not Found
Error: "Failed to create COM object"
Solution: Ensure CTS Trading API is installed and the COM object is registered. Run the CTS Trading client once to verify installation.
Connection Failures
Error: "Not connected to trading server"
Solution:
- Verify
appsetting.jsonhas correct server URL - Call
initialize()beforelogin() - Call
login()beforeconnect() - Check network connectivity
Query Timeout
Note: Query operations may timeout if the server is slow to respond. The default timeout is 5 seconds. This is normal for some operations.
Permission Errors
Ensure you have proper trading permissions and account authorization from CTBC Securities.
Development
Running Automated Tests
The project includes a comprehensive suite of automated tests using pytest and mock.
# Install dev dependencies
uv pip install -e ".[dev]"
# Run all tests
pytest
The tests cover:
- Models: Validation and serialization of all data structures.
- Wrapper: Logic for COM object interaction (using mocks).
- Server: Tool registration and high-level logic.
Manual Testing with Scripts
Logging
The server uses Python's logging module. Set log level via environment variable:
# Windows PowerShell
$env:LOG_LEVEL="DEBUG"
uv run ctbcsec-mcp
# Windows CMD
set LOG_LEVEL=DEBUG
uv run ctbcsec-mcp
Security Considerations
- Credentials: Never commit credentials to version control
- Production Use: Use appropriate authentication and authorization
- Network Security: Ensure secure connection to trading server
- Access Control: Restrict access to the MCP server appropriately
License
This MCP server is provided for reference and development purposes. Please refer to your CTBC Securities API license agreement for terms of use.
Support
For technical support and API questions, contact CTBC Securities technical support team.
References
Version: 0.1.0
Last Updated: January 21, 2026
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。