一个生产就绪的Python MCP(模型上下文协议)服务器,用于从主要交易所获取实时和历史加密货币市场数据,使用CCXT库。现在带有现代的Flask网页界面!
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
pip install -e .
运行Flask网页应用:
python app.py
然后在浏览器中导航至:
http://127.0.0.1:5000
网页界面可用的功能:
直接运行MCP服务器:
python -m src
运行命令行演示客户端:
python demo_client.py
选择:
Flask应用提供RESTful API端点:
| 端点 | 方法 | 描述 |
|---|---|---|
/ | GET | 主仪表板(HTML) |
/api/price/<symbol> | GET | 获取当前价格 |
/api/historical/<symbol> | GET | 获取历史OHLCV数据 |
/api/ticker/<symbol> | GET | 获取24小时行情统计 |
/api/orderbook/<symbol> | GET | 获取订单簿 |
/api/trades/<symbol> | GET | 获取最近的交易 |
/api/markets | GET | 获取市场信息 |
/api/exchanges | GET | 列出支持的交易所 |
/api/exchange-status/<exchange> | GET | 检查交易所状态 |
查询参数:
exchange:交易所名称(默认:binance)timeframe:蜡烛图时间周期(针对历史数据)limit:要获取的结果数量示例API调用:
curl "http://1172.16.17.32:5000/api/price/BTC/USDT?exchange=binance"
运行所有测试:
pytest
运行带有覆盖率报告的测试:
pytest --cov=src --cov-report=html --cov-report=term
运行特定的测试文件:
pytest tests/test_server.py -v
测试套件包括:
CCXT库:由于其全面的交易所支持、统一的API跨100多个交易所以及强大的错误处理而被选中。
Flask Web框架:简单轻量级框架,非常适合构建RESTful API和服务网页界面。易于扩展和维护。
缓存策略:
现代UI设计:
crypto_mcp_server/
├── app.py # Flask网页应用
├── demo_client.py # 命令行演示客户端
├── setup.py # 包配置
├── requirements.txt # Python依赖项
├── README.md # 本文件
├── .gitignore # Git忽略模式
├── src/
│ ├── __init__.py # 包初始化
│ ├── __main__.py # MCP服务器入口点
│ ├── server.py # MCP服务器和工具定义
│ ├── exchange_client.py # CCXT封装和交易所逻辑
│ ├── cache.py # 缓存实用程序
│ └── utils.py # 辅助函数和验证
├── templates/
│ └── index.html # Flask网页界面模板
├── static/
│ ├── style.css # CSS样式
│ └── script.js # JavaScript交互
└── tests/
├── __init__.py # 测试包初始化
├── conftest.py # Pytest固定装置
├── test_server.py # 服务器工具测试
├── test_exchange_client.py # 交易所客户端测试
├── test_cache.py # 缓存测试
└── test_utils.py # 辅助函数测试
| 工具 | 描述 | 缓存TTL |
|---|---|---|
get_current_price | 实时价格和24小时统计数据 | 30秒 |
get_historical_data | OHLCV蜡烛图数据 | 5分钟 |
get_market_info | 可用的交易对 | 5分钟 |
get_ticker_24h | 综合24小时统计数据 | 30秒 |
get_order_book | 当前的买单和卖单 | 10秒 |
get_recent_trades | 最近的交易历史 | 5秒 |
list_supported_exchanges | 可用的交易所 | 无缓存 |
check_exchange_status | 交易所健康检查 | 无缓存 |
网页界面特性:
此项目作为教育和演示用途提供。
这是一个演示项目。对于生产用途,请考虑: