使用说明
加密市场平台
企业级加密货币市场数据平台 具有生产就绪的DevOps基础设施。
一个全面的基于Python的模型上下文协议(MCP)服务器,使用CCXT提供来自主要交易所的实时和历史加密货币市场数据。基于现代DevOps实践构建,包括Docker容器化、CI/CD管道、全面测试和跨平台支持。
特性
核心功能
- ✅ 实时价格数据:获取任何加密货币对的当前股票价格
- ✅ 历史OHLC数据:获取开盘、高、低、收盘烛台数据
- ✅ 实时价格流:每2秒流式传输实时价格更新
- ✅ 智能高速缓存:内存内缓存,以减少API调用并遵守速率限制
- ✅ 错误处理:在整个应用程序中进行稳健的错误处理
- ✅ 综合测试:所有工具和服务的全面测试覆盖
DevOps和生产特性
- 🐳 Docker容器化:具有多阶段优化的生产就绪Dockerfile
- 🔄 CI/CD管道:使用GitHub Actions进行自动化测试、linting和部署
- 🧪 自动化测试:全面的pytest测试套件,支持异步
- 📦 与跨平台支持:适用于macOS、Linux和Windows
- 🔒 安全最佳实践:容器中的非root用户,适当的依赖关系管理
- 📊 代码质量:过梁、格式检查和语法验证
- 🚀 部署就绪:支持部署到云平台(AWS、Azure、GCP等)
需求
- Python 3.10或更高版本 (MCP SDK需要Python 3.10+)
- 点 包管理器
- 平台支持:工作在 macOS, Linux,以及 视窗
备注:该应用程序是跨平台的。CI/CD管道在Ubuntu(GitHub Actions)上运行,但Python代码本身可以在所有平台上运行。Docker容器是基于Linux的,但Mac/Windows上的Docker Desktop可以无缝运行它们。
安装
平台特定注意事项
- macOS:本机工作。使用
python3或python这取决于您的设置。 - Linux:本机工作。可能需要
python3而不是python. - 视窗:本机工作。使用
python或py命令。
1.克隆存储库
git clone <your-repo-url>
cd mcp-crypto-server
2.安装依赖项
在macOS/Linux上:
# Install MCP SDK from GitHub (requires Python 3.10+)
pip3 install git+https://github.com/modelcontextprotocol/python-sdk.git
# Install other dependencies
pip3 install -r requirements.txt
在Windows上:
# Install MCP SDK from GitHub (requires Python 3.10+)
pip install git+https://github.com/modelcontextprotocol/python-sdk.git
# Install other dependencies
pip install -r requirements.txt
或一次性安装(所有平台):
# Install MCP SDK from GitHub (requires Python 3.10+)
pip install git+https://github.com/modelcontextprotocol/python-sdk.git
# Install other dependencies
pip install -r requirements.txt
或者一次性安装:
pip install git+https://github.com/modelcontextprotocol/python-sdk.git ccxt>=4.0.0 pytest>=7.0.0 pytest-asyncio>=0.21.0
3.验证安装
python -m py_compile app/main.py
echo "✓ Installation successful"
用法
运行服务器
python -m app.main
或者:
python app/main.py
服务器将启动并准备通过以下方式接受MCP客户端连接 server.json.
可用工具
-
ticker(symbol: str)- 获取加密货币对的最新股票价格
- 例子:
ticker("BTC/USDT") - 退货:
{"symbol": "BTC/USDT", "price": 50000, "timestamp": 1234567890} - 使用缓存(2秒TTL)来减少API调用
-
ohlc_history(symbol: str, timeframe: str = "1m", limit: int = 100)- 获取历史OHLC(开盘、高、低、收盘)烛台数据
- 例子:
ohlc_history("BTC/USDT", "1h", 50) - 返回值:带有时间戳、打开、高、低、关闭、交易量的烛台对象数组
-
stream_price(symbol: str, context)- 每2秒流式传输实时价格更新
- 例子:
stream_price("BTC/USDT", context) - 发送事件:
price_update最新价格数据
配置
编辑 app/core/config.py 自定义:
DEFAULT_EXCHANGE:要使用的Exchange(默认值:“binance”)DEFAULT_TIMEFRAME:OHLC的默认时间范围(默认值:“1m”)DEFAULT_LIMIT:默认蜡烛数(默认值:100)
测试
运行测试套件:
pytest tests/ -v
运行特定的测试文件:
pytest tests/test_prices.py -v
pytest tests/test_history.py -v
码头工人
备注Docker容器运行Linux,但Mac和Windows上的Docker Desktop会自动处理此问题。容器化应用程序在所有平台上都是一样的。
先决条件
- macOS:安装 Mac版Docker桌面
- 视窗:安装 Windows版Docker桌面
- Linux:安装Docker引擎
构建Docker镜像
docker build -t mcp-crypto-server .
使用Docker运行
docker run --rm mcp-crypto-server
使用Docker Compose
docker-compose up
macOS/Windows注释:在执行Docker命令之前,Docker Desktop必须正在运行。
CI/CD管道
该项目包括GitHub Actions工作流:
-
.github/workflows/ci-cd.yml:主CI/CD管道- 在主分支/主分支的推送/PR上运行
- 测试代码编译
- 运行pytest测试
- 构建Docker镜像
- 可选部署步骤
-
.github/workflows/docker-publish.yml:Docker镜像发布- 构建Docker镜像并将其推送到Docker Hub
- 用版本、分支和SHA标记图像
- 需要
DOCKER_USERNAME和DOCKER_PASSWORD秘密
设置GitHub机密
对于Docker Hub发布,请在GitHub存储库中添加以下秘密:
- 前往设置→ 秘密和变量→ 行动
- 添加:
DOCKER_USERNAME:您的Docker Hub用户名DOCKER_PASSWORD:您的Docker Hub密码/令牌
项目结构
cryptomarket-platform/
├── app/
│ ├── core/
│ │ └── config.py # Configuration settings
│ ├── services/
│ │ ├── ccxt_client.py # CCXT exchange client
│ │ └── cache.py # In-memory caching
│ ├── tools/
│ │ ├── prices.py # Price tools (ticker, stream_price)
│ │ └── history.py # Historical data tools (ohlc_history)
│ └── main.py # MCP server entry point
├── tests/
│ ├── test_prices.py # Tests for price tools
│ └── test_history.py # Tests for history tools
├── .github/
│ └── workflows/
│ ├── ci-cd.yml # Main CI/CD pipeline
│ └── docker-publish.yml # Docker publishing workflow
├── Dockerfile # Docker container definition
├── docker-compose.yml # Docker Compose configuration
├── .dockerignore # Docker ignore patterns
├── requirements.txt # Python dependencies
├── server.json # MCP server configuration
└── README.md # This file
建筑
- MCP服务器:使用模型上下文协议Python SDK
- CCXT集成:用于多个加密货币交易所的统一API
- 缓存层:减少API呼叫并遵守速率限制
- 异步/等待:完全异步以获得更好的性能
- 错误处理:通过用户友好的消息进行全面的错误处理
支持的交易所
服务器使用CCXT,支持100多个交换机,包括:
- 币安(默认)
- Coinbase
- 海妖
- Bitfinex
- 还有更多。..
更改交换 app/core/config.py 或者将其作为参数传递。
发展
添加新工具
- 在中创建新函数
app/tools/ - 用…装饰
@tool()或@stream() - 导入
app/main.py - 在中添加测试
tests/
代码的风格
- 遵循PEP 8 Python风格指南
- 尽可能使用类型提示
- 将文档字符串添加到所有函数中
- 为新功能编写测试
故障排除
平台特定问题
macOS:
- 如果
python不起作用,使用python3 - 如果
pip不起作用,使用pip3 - 通过Homebrew安装Python 3.10+:
brew install python@3.11
窗户:
- 使用
py命令ifpython不起作用:py -m pip install ... - 确保将Python 3.10+添加到PATH中
Linux:
- 使用
python3和pip3命令 - 通过包管理器安装Python 3.10+
MCP包安装问题
如果安装MCP时出错:
- 确保已安装Python 3.10+:
python --version或python3 --version - 直接从GitHub安装:
pip install git+https://github.com/modelcontextprotocol/python-sdk.git - 在macOS/Linux上,您可能需要:
pip3 install git+https://github.com/modelcontextprotocol/python-sdk.git
Exchange API错误
- 检查互联网连接
- 验证符号格式(例如“BTC/USDT”)
- 某些交易所可能需要API密钥(目前尚未实现)
Docker构建问题
- 确保Docker正在运行:
docker ps - 检查Dockerfile是否使用Python 3.11(MCP需要3.10+)
- 查看构建日志中的特定错误
许可证
[在此处添加您的许可证]
贡献
[在此处添加贡献指南]