使用说明
加密MCP服务器
概述
这是一个基于Python的市场数据提供者(MCP)服务器,用于使用CCXT库从主要交易所检索实时和历史加密货币市场数据。它为数据获取和历史查询提供了REST端点,为实时更新、错误处理和高效缓存提供了WebSocket。
方法
- 框架:用于构建API的FastAPI(异步、现代、带有自动生成的文档)。
- 数据源:CCXT(异步版本),用于统一访问币安、Coinbase等交易所。支持没有密钥的公共API。
- 特性:
- 休息:
/realtime/{exchange}/{symbol}获取当前股票行情数据。 - 休息:
/historical/{exchange}/{symbol}对于OHLCV历史数据(查询参数:时间范围、时间、限制)。 - Websocket:
/ws/realtime/{exchange}/{symbol}用于轮询实时更新(每5秒一次)。 - 缓存:使用缓存工具对实时数据进行内存TTL缓存(10秒)。
- 错误处理:无效输入的HTTP异常;尝试接受API错误。
- 模型:Pydantic用于结构化响应。
- 休息:
- 测试:带有单元测试(模拟CCXT)和集成测试(使用FastAPI TestClient)的Pytest。涵盖端点、数据获取和错误情况。
- 最佳实践:模块化代码、异步方法、类型提示、日志记录(基本)。
- 使用的工具:在LLM的协助下开发(例如,Grok/Claude负责代码创意和调试)。没有同行协作。
设置
- 克隆仓库:
git clone https://github.com/ASUS-TUFLSR/crypto_mcp_server. - 安装依赖项:
pip install -r requirements.txt. - 运行服务器:
uvicorn src.main:app --reload. - 访问API文档:http://127.0.0.1:8000/docs.
- 测试WebSocket:使用
wscat -c ws://127.0.0.1:8000/ws/realtime/binance/BTC/USDT.
用法示例
- 实时:GET
/realtime/binance/BTC/USDT→ 返回股票行情数据。 - 历史:GET
/historical/binance/BTC/USDT?timeframe=1d&since=1704067200000&limit=10→ 返回OHLCV列表。 - WebSocket:连接到
/ws/realtime/binance/BTC/USDT→ 每5秒接收一次JSON代码。
假设
- 交易所/交易品种必须在CCXT中有效(例如,“binance”、“BTC/USDT”)。
- “since”是Unix时间戳,单位为毫秒。
- 无速率限制或身份验证(仅限公共数据)。
- 实时轮询(由于复杂性,不是完全流式传输)。
- 测试模拟CCXT以避免真正的API调用。
运行测试
pytest从根。目标覆盖率约为80%(端点、数据提供程序、错误)。
限制/未来改进
- 添加Redis用于分布式缓存。
- 支持CoinMarketCap API(需要密钥)。
- 通过CCXT的watch方法进行完整的WebSocket流式传输。
- 速率限制和API密钥支持。