使用说明
加密货币MCP服务器
基于Python的模型上下文协议(MCP)服务器,用于使用CCXT从主要交易所检索实时和历史加密货币市场数据。
特性
- 实时市场数据:获取任何交易对的当前价格、出价、要价和交易量
- 历史数据:使用可定制的时间框架检索OHLCV(烛台)数据
- 订单簿数据:访问买卖订单簿信息
- 交易历史:获取任何交易对的最近交易
- 多交换支持:与币安、Coinbase、Kraken、Bitfinex、火币、OKX和Bybit合作
- 智能高速缓存:内置缓存层以减少API调用并提高性能
- 速率限制:自动汇率限制,以遵守API汇率限制
- 错误处理:强大的错误处理和日志记录
- 综合测试:全面测试覆盖
支持的交易所
- 币安
- Coinbase
- 海妖
- Bitfinex
- 火币
- 欧易
- Bybit
安装
- 克隆存储库:
git clone <repository-url>
cd inter
- 安装依赖项:
pip install -r requirements.txt
或者以开发模式安装:
pip install -e ".[dev]"
- (可选)通过创建
.env文件:
BINANCE_API_KEY=your_api_key
BINANCE_SECRET=your_secret
COINBASE_API_KEY=your_api_key
COINBASE_SECRET=your_secret
注意:大多数公共端点不需要API密钥,但某些交易所可能对未经验证的请求有速率限制。
用法
快速开始
选项1:Web仪表板(建议用于测试)
python web_dashboard.py
然后打开http://localhost:5000在浏览器中查看和测试服务器。
选项2:MCP服务器(用于MCP客户端集成)
python run_server.py
服务器将通过stdio等待MCP客户端连接。
选项3:测试组件
python test_server_standalone.py
在没有完整服务器的情况下直接测试加密提供程序。
运行MCP服务器
重要:MCP服务器设计为通过stdio运行,需要MCP客户端连接。它将在stdin上等待MCP协议消息,并在stdout上响应。
启动服务器:
python -m src.server
或者使用入口点:
python run_server.py
服务器按照MCP协议通过stdio(标准输入/输出)进行通信。独立运行时,它将等待MCP客户端连接。
备注:如果服务器在独立运行几分钟后停止,这是正常行为。服务器正在等待MCP协议消息。要直接测试组件,请使用:
python test_server_standalone.py
Web仪表板
对于测试和监控服务器的可视化界面,请使用web仪表板:
python web_dashboard.py
然后打开http://localhost:5000在您的浏览器中。仪表板提供:
- 服务器状态监控
- 交互式工具测试
- 实时数据可视化
- 服务器信息显示
可用工具
服务器提供以下工具:
1. get_ticker
获取交易对的实时行情数据。
参数:
symbol(必填):交易对符号(例如,“BTC/USDT”、“ETH/USD”)exchange(可选):交换名称(默认为“binance”)
例子:
{
"symbol": "BTC/USDT",
"exchange": "binance"
}
2. get_ohlcv
获取历史OHLCV(烛台)数据。
参数:
symbol(必填):交易对符号timeframe(可选):时间范围(1m、5m、15m、1h、4h、1d、1w、1m)-默认值:“1h”limit(可选):蜡烛数(默认值:100,最大值:1000)since(可选):开始时间戳(毫秒)exchange(可选):交换名称
例子:
{
"symbol": "BTC/USDT",
"timeframe": "1h",
"limit": 100
}
3. get_orderbook
获取交易对的订单簿(买入和卖出)。
参数:
symbol(必填):交易对符号limit(可选):订单数量(默认值:20,最大值:100)exchange(可选):交换名称
例子:
{
"symbol": "BTC/USDT",
"limit": 20
}
4. get_trades
获取交易对的最近交易。
参数:
symbol(必填):交易对符号limit(可选):交易次数(默认值:50,最大值:500)since(可选):开始时间戳(毫秒)exchange(可选):交换名称
例子:
{
"symbol": "BTC/USDT",
"limit": 50
}
5. get_markets
获取交易所的所有可用交易对。
参数:
exchange(可选):交换名称
例子:
{
"exchange": "binance"
}
6. get_supported_exchanges
获取支持的交易所列表。
参数: 无
配置
配置可以通过环境变量或 .env 文件:
CACHE_TTL_SECONDS:缓存生存时间(秒)(默认值:60)MAX_CACHE_SIZE:最大缓存条目数(默认值:1000)RATE_LIMIT_REQUESTS_PER_SECOND:速率限制(默认值:10)DEFAULT_EXCHANGE:默认交换名称(默认:“binance”)BINANCE_API_KEY:币安API密钥(可选)BINANCE_SECRET:币安API机密(可选)COINBASE_API_KEY:Coinbase API密钥(可选)COINBASE_SECRET:Coinbase API机密(可选)
测试
运行测试套件:
pytest
跑步覆盖:
pytest --cov=src --cov-report=html
运行特定测试文件:
pytest tests/test_cache.py
项目结构
inter/
├── src/
│ ├── __init__.py # Package initialization
│ ├── server.py # MCP server implementation
│ ├── crypto_provider.py # CCXT-based data provider
│ ├── cache.py # Caching layer
│ ├── config.py # Configuration management
│ └── errors.py # Custom error classes
├── tests/
│ ├── __init__.py
│ ├── conftest.py # Pytest configuration
│ ├── test_cache.py # Cache tests
│ ├── test_crypto_provider.py # Provider tests
│ ├── test_server.py # Server tests
│ └── test_config.py # Config tests
├── requirements.txt # Python dependencies
├── pyproject.toml # Project configuration
└── README.md # This file
建筑
组件
- MCP服务器 (
src/server.py):实现MCP协议,处理工具注册和执行 - 加密货币提供商 (
src/crypto_provider.py):包装CCXT库以从交易所获取数据 - 缓存层 (
src/cache.py):实现基于TTL的缓存以减少API调用 - 配置 (
src/config.py):管理应用程序设置和环境变量
设计模式
- 异步/等待:所有I/O操作都是异步的,以获得更好的性能
- 缓存:基于TTL的缓存减少了冗余的API调用
- 速率限制:基于语义的速率限制可防止API滥用
- 错误处理:使用自定义异常类进行全面的错误处理
最佳实践
- 服务器对所有网络操作使用async/await
- 实现缓存是为了最大限度地减少API调用并提高响应时间
- 汇率限制防止超过API兑换限额
- 所有组件都经过彻底测试
- 代码遵循Python最佳实践和PEP 8风格指南
局限性
- 某些交易所可能对未经身份验证的请求有速率限制
- 历史数据可用性取决于交换
- 并非所有交易所都支持所有时间范围
- 缓存TTL应根据用例(实时数据与历史数据)进行调整
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
这个项目是开源的,可以在MIT许可证下使用。