MCP 服务¶
EasyTHS 支持 MCP (Model Context Protocol) 协议,允许 AI 助手(如 Claude Desktop)直接调用同花顺交易功能。
什么是 MCP?¶
MCP 是一个开放协议,用于连接 AI 助手与外部系统。通过 MCP,你可以让 Claude、ChatGPT 等 AI 助手直接执行股票交易操作。
传输协议¶
EasyTHS MCP 服务支持三种传输协议:
| 协议 | 说明 | 推荐场景 |
|---|---|---|
| streamable-http | 基于 HTTP 的流式传输,支持断线重连 | 推荐用于 Web 部署 |
| http | 传统 HTTP 传输,简单可靠 | 兼容旧版客户端 |
| sse | Server-Sent Events,单向推送 | 已弃用,不推荐使用 |
选择建议¶
- Web 部署/远程访问:使用
streamable-http(默认) - 本地开发测试:可使用
http - Claude Desktop 集成:使用
http或streamable-http
配置 MCP 服务¶
1. 修改配置文件¶
在 config.toml 中配置 MCP 传输类型:
[api]
# MCP 服务器传输类型
mcp_server_type = "streamable-http" # 可选: http, streamable-http, sse
# API 密钥(MCP 客户端需要认证时启用)
key = "your-api-key-here"
# 其他配置...
host = "0.0.0.0"
port = 7648
2. 环境变量配置¶
也可以通过环境变量配置:
服务端点¶
MCP 服务默认运行在以下路径:
完整的端点 URL 格式:
使用 MCP 客户端连接¶
Python 客户端¶
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
import asyncio
async def main():
# 基础连接
transport = StreamableHttpTransport(
url="http://localhost:7648/api/mcp-server/"
)
async with Client(transport) as client:
# 调用工具
result = await client.call_tool("funds_query", {})
print(result)
asyncio.run(main())
带 API Key 认证的连接¶
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
async def main():
transport = StreamableHttpTransport(
url="http://localhost:7648/api/mcp-server/",
headers={
"Authorization": "Bearer your-api-key-here" # Bearer 和 key 之间只有一个空格
}
)
async with Client(transport) as client:
# 列出可用工具
tools = await client.list_tools()
for tool in tools:
print(f"- {tool.name}: {tool.description}")
asyncio.run(main())
注意:
Authorizationheader 格式为Bearer <api-key>,Bearer和 API key 之间有且仅有一个空格,不要多加或遗漏空格。
Claude Desktop 配置¶
在 Claude Desktop 的配置文件中添加:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"easyths": {
"transport": {
"type": "http",
"url": "http://localhost:7648/api/mcp-server/",
"headers": {
"Authorization": "Bearer your-api-key-here" // Bearer 和 key 之间只有一个空格
}
}
}
}
}
注意: -
Authorizationheader 格式为Bearer <api-key>,Bearer和 API key 之间有且仅有一个空格 - 如果未启用 API Key 认证,可以省略headers部分
可用工具¶
MCP 服务提供以下交易工具:
交易操作¶
| 工具名 | 说明 |
|---|---|
buy | 买入股票 |
sell | 卖出股票 |
查询操作¶
| 工具名 | 说明 |
|---|---|
holding_query | 查询股票持仓 |
funds_query | 查询账户资金 |
order_query | 查询委托订单 |
historical_commission_query | 查询历史委托 |
委托管理¶
| 工具名 | 说明 |
|---|---|
order_cancel | 撤销委托订单 |
条件单¶
| 工具名 | 说明 |
|---|---|
condition_buy | 条件买入 |
condition_order_query | 查询条件单 |
condition_order_cancel | 删除条件单 |
止损止盈¶
| 工具名 | 说明 |
|---|---|
stop_loss_profit | 设置止损止盈 |
国债逆回购¶
| 工具名 | 说明 |
|---|---|
reverse_repo_buy | 国债逆回购(出借资金) |
reverse_repo_query | 查询国债逆回购利率 |
认证说明¶
启用 API Key 认证¶
如果配置文件中设置了 api.key,MCP 客户端需要在请求中提供认证信息:
# curl 示例
curl -X POST http://localhost:7648/api/mcp-server/ \
-H "Authorization: Bearer your-api-key-here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
重要:
Authorizationheader 格式必须严格为Bearer <api-key>,Bearer和 API key 之间有且仅有一个空格。常见错误示例: - ❌
Beareryour-api-key-here(缺少空格) - ❌Bearer your-api-key-here(多个空格) - ✅Bearer your-api-key-here(正确)
IP 白名单¶
如果启用了 IP 白名单(api.ip_whitelist),确保客户端 IP 在允许列表中:
示例场景¶
场景 1:使用 AI 助手查询资金¶
场景 2:条件单交易¶
你: 当贵州茅台价格低于 1500 元时,买入 100 股
AI: [调用 condition_buy 工具]
已创建条件单:
- 股票: 贵州茅台 (600519)
- 触发价格: ¥1500
- 数量: 100 股
- 有效期: 30 天
故障排查¶
问题:连接失败¶
- 确认服务已启动:
curl http://localhost:7648/ - 检查端口配置:
[api] port = 7648 - 检查防火墙设置
问题:认证失败¶
- 确认 API Key 配置正确
- 检查请求头格式:
Authorization: Bearer <key> - 查看服务日志获取详细错误信息
问题:工具调用失败¶
- 确认同花顺客户端正在运行
- 检查交易程序路径配置:
[trading] app_path - 查看日志:
logs/trading.log