本项目封装了 Toobit 现货 API 的核心行情接口,提供统一的 MCP(Multi-Channel Platform)服务接口。
主要功能
- 封装 Toobit 现货行情 API 主要接口
- 统一 RESTful API 服务,所有接口返回格式标准化
- 易于扩展和二次开发
目录结构
toobit-mcp-service/
├── src/
│ ├── api/ # Toobit API 封装
│ ├── controllers/ # MCP 业务接口
│ ├── utils/ # 工具函数,如签名、请求封装
│ └── index.ts # 入口
├── test/ # 单元测试
├── package.json
├── README.md
└── .env # API KEY 等敏感信息
快速开始
- 安装依赖:
npm install - 配置 .env 文件,填写 Toobit API KEY/SECRET:
TOOBIT_API_KEY=你的APIKEY TOOBIT_API_SECRET=你的APISECRET - 启动服务:
npm run dev
MCP 支持的接口
1. 交易所信息
GET /mcp/spot/exchangeInfo- 获取交易所支持的币对、精度等基础信息
- 示例:
GET http://localhost:3000/mcp/spot/exchangeInfo
2. 深度(Order Book)
GET /mcp/spot/quote/depth- 获取指定交易对的订单簿深度
- 示例:
GET http://localhost:3000/mcp/spot/quote/depth?symbol=BTCUSDT&limit=20
3. 最新成交
GET /mcp/spot/quote/trades- 获取指定交易对的最新成交记录
- 示例:
GET http://localhost:3000/mcp/spot/quote/trades?symbol=BTCUSDT&limit=10
4. K线数据
GET /mcp/spot/quote/klines- 获取指定交易对的K线/蜡烛图数据
- 示例:
GET http://localhost:3000/mcp/spot/quote/klines?symbol=BTCUSDT&interval=1h&limit=10
5. 24小时行情
GET /mcp/spot/quote/ticker/24hr- 获取24小时价格变动统计
- 示例:
GET http://localhost:3000/mcp/spot/quote/ticker/24hr?symbol=BTCUSDT
6. 最新价格
GET /mcp/spot/quote/ticker/price- 获取指定交易对的最新价格
- 示例:
GET http://localhost:3000/mcp/spot/quote/ticker/price?symbol=BTCUSDT
7. 最优挂单
GET /mcp/spot/quote/ticker/bookTicker- 获取指定交易对的最优买一/卖一挂单
- 示例:
GET http://localhost:3000/mcp/spot/quote/ticker/bookTicker?symbol=BTCUSDT
8. 合并深度
GET /mcp/spot/quote/depth/merged- 获取指定交易对的合并订单簿深度
- 示例:
GET http://localhost:3000/mcp/spot/quote/depth/merged?symbol=BTCUSDT&limit=20
SSE(Server-Sent Events)实时行情接口
所有行情接口均支持SSE实时推送,路径为原有RESTful接口后加 /stream,如:
/mcp/spot/quote/ticker/price/stream/mcp/spot/quote/trades/stream/mcp/spot/quote/klines/stream/mcp/spot/quote/depth/stream/mcp/spot/quote/ticker/24hr/stream/mcp/spot/quote/ticker/bookTicker/stream/mcp/spot/quote/depth/merged/stream/mcp/spot/exchangeInfo/stream(演示用)
SSE接口特点
- 每2秒推送一次最新数据,格式同RESTful接口。
- 前端可用
EventSource直接接收推送。 - 适合实时行情、K线、深度、成交等场景。
前端SSE接收示例(JavaScript)
const es = new EventSource('http://localhost:3000/mcp/spot/quote/ticker/price/stream?symbol=BTCUSDT');
es.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.code === 0) {
console.log('最新价格:', msg.data);
} else {
console.error('SSE错误:', msg.msg);
}
};
es.onerror = (err) => {
console.error('SSE连接异常', err);
};
注意事项
- SSE为单向推送,适合行情类高频更新。
- 如需停止接收,调用
es.close()。 - 可根据业务调整推送频率和数据内容。
返回格式
- 所有接口返回:
错误时:{ "code": 0, "msg": "success", "data": { ... } // 对应Toobit原始数据 }{ "code": -1, "msg": "错误信息", "data": null }
参考文档
如需扩展更多接口,请在 src/api/ 和 src/controllers/ 目录下新增对应文件。