mirror of
https://github.com/shy3130/tick-stock-panel.git
synced 2026-11-02 10:26:13 +00:00
mcp-server/ 独立薄桥包 (MCP SDK 2.x, stdio 传输): - 12 个精选工具: 标的搜索/日K/指数/市场总览/环境阶段/策略清单与定义/ 告警/扩展表查读写/策略回测 — 按 TSP_SCOPES 声明暴露, 权限裁决仍在 面板网关 (桥零业务逻辑, 面板升级自动受益) - 模拟盘交易类端点刻意不包装 (不建议把下单交给 AI) - smoke_test.py 完整协议冒烟: 握手/tools列表/真实调用; 实测只读 Token 暴露 10 工具、全量 Token 暴露 12 工具, 三次调用 (搜索/总览/环境) 全通 - README: Claude Desktop 等客户端配置示例; features.md 增 MCP 接入小节
69 lines
2.7 KiB
Markdown
69 lines
2.7 KiB
Markdown
# tick-stock-panel MCP 服务器
|
|
|
|
把面板的开放接口包装成 **MCP (Model Context Protocol)** 工具, 让 Claude / ZCode / Cursor 等 AI 客户端直接查询行情、市场环境、策略与告警, 触发回测。
|
|
|
|
```
|
|
AI 客户端 ⇄ MCP stdio (本服务器) ⇄ HTTP + Bearer Token ⇄ 面板开放网关
|
|
```
|
|
|
|
权限、限流、契约全部复用面板的开放接口层 — 本服务器只是一层薄桥, 面板侧的 Token scope 是最终权威。
|
|
|
|
## 准备
|
|
|
|
1. 面板 → **设置 → 开放接口** → 新建 Token, 勾选所需 scope
|
|
2. 记下 `tsp_` 开头的明文 (只显示一次)
|
|
|
|
## 配置到 MCP 客户端
|
|
|
|
以 Claude Desktop (`claude_desktop_config.json`) / 任何支持 stdio MCP 的客户端为例:
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"tick-stock-panel": {
|
|
"command": "uv",
|
|
"args": ["--directory", "E:/tick-stock-panel/mcp-server", "run", "tsp-mcp-server"],
|
|
"env": {
|
|
"TSP_BASE": "http://127.0.0.1:3018",
|
|
"TSP_TOKEN": "tsp_xxxx",
|
|
"TSP_SCOPES": "read:market,read:ext,read:analysis"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
- `TSP_BASE`: 面板地址 (默认 `http://127.0.0.1:3018`)
|
|
- `TSP_TOKEN`: API Token
|
|
- `TSP_SCOPES`: 逗号分隔, 决定暴露哪些工具 (默认只读三档)。**真正的权限裁决在面板网关** — 声明了没授权的 scope, 调用会得到 403, AI 能看到错误并停止
|
|
|
|
手动验证:
|
|
|
|
```bash
|
|
cd mcp-server
|
|
TSP_TOKEN=tsp_xxx uv run tsp-mcp-server # stdio JSON-RPC, 供客户端拉起
|
|
```
|
|
|
|
## 工具清单 (按 scope)
|
|
|
|
| scope | 工具 | 说明 |
|
|
| :--- | :--- | :--- |
|
|
| `read:market` | `search_instrument` | 代码/名称/拼音搜标的 |
|
|
| | `get_kline` | 标的日K (前复权) |
|
|
| | `get_index_kline` | 指数日K |
|
|
| | `get_market_overview` | 涨跌家数/成交额/涨停连板/情绪 |
|
|
| `read:analysis` | `get_regime_state` | 最新市场环境阶段 |
|
|
| | `list_strategies` / `get_strategy_detail` | 策略清单与定义 |
|
|
| | `get_recent_alerts` | 最近告警 |
|
|
| `read:ext` | `list_ext_tables` / `query_ext_table` | 自有数据表查询 |
|
|
| `write:ext` | `write_ext_rows` | 写入扩展表 (进入策略数据面, 慎授) |
|
|
| `run:backtest` | `run_backtest` | 策略回测 (纯 Polars 引擎) |
|
|
|
|
未包含: 模拟盘交易类端点 — 不建议把下单能力交给 AI, 需要时可自行在 `server.py` 里按同样模式补。
|
|
|
|
## 设计说明
|
|
|
|
- **薄桥原则**: 所有权限/限流/契约由面板网关裁决, 本服务器不持有任何业务逻辑, 面板升级自动受益
|
|
- 工具返回原文 JSON, 错误以可读文本返回 — LLM 可据此自行纠正参数
|
|
- 更底层的 REST 契约与示例见 [examples/open-api](../examples/open-api/README.md) 与 [docs/features.md → 开放接口](../docs/features.md)
|