加密货币市场数据平台

一个基于Python的企业级加密货币市场数据平台,提供实时和历史数据,支持Docker容器化和CI/CD管道。

  • by Spoorthy1423
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Spoorthy1423/mcp_crypto_server

使用说明

加密市场平台

企业级加密货币市场数据平台 具有生产就绪的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.

可用工具

  1. ticker(symbol: str)

    • 获取加密货币对的最新股票价格
    • 例子: ticker("BTC/USDT")
    • 退货: {"symbol": "BTC/USDT", "price": 50000, "timestamp": 1234567890}
    • 使用缓存(2秒TTL)来减少API调用
  2. ohlc_history(symbol: str, timeframe: str = "1m", limit: int = 100)

    • 获取历史OHLC(开盘、高、低、收盘)烛台数据
    • 例子: ohlc_history("BTC/USDT", "1h", 50)
    • 返回值:带有时间戳、打开、高、低、关闭、交易量的烛台对象数组
  3. 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会自动处理此问题。容器化应用程序在所有平台上都是一样的。

先决条件

构建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工作流:

  1. .github/workflows/ci-cd.yml:主CI/CD管道

    • 在主分支/主分支的推送/PR上运行
    • 测试代码编译
    • 运行pytest测试
    • 构建Docker镜像
    • 可选部署步骤
  2. .github/workflows/docker-publish.yml:Docker镜像发布

    • 构建Docker镜像并将其推送到Docker Hub
    • 用版本、分支和SHA标记图像
    • 需要 DOCKER_USERNAME 和 DOCKER_PASSWORD 秘密

设置GitHub机密

对于Docker Hub发布,请在GitHub存储库中添加以下秘密:

  1. 前往设置→ 秘密和变量→ 行动
  2. 添加:
    • 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 或者将其作为参数传递。

发展

添加新工具

  1. 在中创建新函数 app/tools/
  2. 用…装饰 @tool() 或 @stream()
  3. 导入 app/main.py
  4. 在中添加测试 tests/

代码的风格

  • 遵循PEP 8 Python风格指南
  • 尽可能使用类型提示
  • 将文档字符串添加到所有函数中
  • 为新功能编写测试

故障排除

平台特定问题

macOS:

  • 如果 python 不起作用,使用 python3
  • 如果 pip 不起作用,使用 pip3
  • 通过Homebrew安装Python 3.10+: brew install python@3.11

窗户:

  • 使用 py 命令if python 不起作用: 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+)
  • 查看构建日志中的特定错误

许可证

[在此处添加您的许可证]

贡献

[在此处添加贡献指南]

致谢