加密货币市场数据服务

一个基于Python的加密货币市场数据提供商(MCP)服务器,通过CCXT库从主要交易所获取实时和历史市场数据,提供REST端点和WebSocket接口。

  • by ASUS-TUFLSR
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ASUS-TUFLSR/crypto_mcp_server

使用说明

加密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负责代码创意和调试)。没有同行协作。

设置

  1. 克隆仓库: git clone https://github.com/ASUS-TUFLSR/crypto_mcp_server.
  2. 安装依赖项: pip install -r requirements.txt.
  3. 运行服务器: uvicorn src.main:app --reload.
  4. 访问API文档:http://127.0.0.1:8000/docs.
  5. 测试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密钥支持。