加密货币市场数据服务器

一个轻量级、生产就绪的加密货币市场数据服务器,提供实时和历史加密货币市场数据,无需API密钥。

  • by ShreyashPatil530
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ShreyashPatil530/crypto-mcp-server

使用说明

🚀 加密货币MCP服务器

实时和历史加密货币市场数据 需要零个API密钥

特征: 🔴 实时价格|📈 历史数据|💾 智能缓存|✅ 完全测试|🚀 生产就绪


📌 概述

轻便、可生产 MCP(模型上下文协议)服务器 用于加密货币市场数据检索。使用以下工具获取18种以上加密货币的实时价格和历史数据 免费CCXT库 -无需注册API密钥!

非常适合: 交易机器人、投资组合跟踪器、加密仪表板、市场分析工具和人工智能集成。


✨ 主要特点

  • ✅ 实时价格 -18+加密货币(BTC、ETH、XRP、ADA、SOL、DOGE、MATIC、LINK、LTC、BCH、DOT、AVAX、ARB、OP、SHIB、PEPE、NEAR、UNI)
  • ✅ 历史数据 -OHLCV蜡烛1-365天
  • ✅ 智能缓存 -5分钟TTL减少API调用
  • ✅ 错误处理 -日志记录的巧妙失败
  • ✅ 综合测试 -13/13个测试用例通过
  • ✅ 零依赖 -无需注册API密钥
  • ✅ 现场演示 -查看所有带有上涨/下跌分析的价格
  • ✅ 生产就绪 -稳健、经过测试和记录

🎯 快速开始

先决条件

  • Python 3.8或更高版本
  • pip(Python包管理器)

安装

# Clone the repository
git clone https://github.com/ShreyashPatil530/crypto-mcp-server.git
cd crypto-mcp-server

# Install dependencies
pip install -r requirements.txt

# Create data directory
mkdir -p data

运行实时演示

python live_demo.py

输出示例:

🔴 LIVE CRYPTOCURRENCY DATA - REAL-TIME PRICES
⏰ Time: 2025-12-09 21:02:04

[1/18] Fetching BTC... ✓ $91,064.23 📈 (+1.19%)
[2/18] Fetching ETH... ✓ $3,149.87 📈 (+1.38%)
[3/18] Fetching XRP... ✓ $2.08 📈 (+0.02%)
...
📋 SUMMARY TABLE - ALL CRYPTOCURRENCIES
Symbol     Price (USDT)       24h High           24h Low            Change %
BTC        $      91,064.23 $      91,374.00 $      89,500.00       1.19%
ETH        $       3,149.87 $       3,168.43 $       3,075.38       1.38%

🚀 TOP 5 GAINERS (24h)
1. ADA      $        0.46  📈 +6.30%
2. ARB      $        0.22  📈 +2.56%

运行主服务器

python main.py

运行测试

python tests.py

预期产量:

==================================================
🧪 Running Cryptocurrency MCP Server Tests
==================================================
Ran 13 tests in 19.702s
OK
✅ All tests passed! (13 tests)
==================================================

📁 项目结构

crypto-mcp-server/
├── main.py                 # Entry point - MCP server main logic
├── api.py                  # CCXT API integration (fetch prices & history)
├── cache.py                # Caching system with TTL management
├── errors.py               # Error handling & validation
├── tests.py                # Comprehensive test suite (13 tests)
├── live_demo.py            # Live demo showing all cryptocurrencies
├── requirements.txt        # Python dependencies
├── README.md              # This file
├── .gitignore             # Git ignore rules
└── data/                  # Data storage directory
    ├── cache.json         # Cached cryptocurrency prices
    ├── live_prices.json   # Latest live prices (generated by live_demo)
    ├── errors.log         # Error logs
    └── .gitkeep           # Keep directory in git

🔧 API 参考

MCP服务器类

get_current_price(symbol)

获取加密货币的实时价格和市场数据。

from main import MCPServer

server = MCPServer()
btc = server.get_current_price('BTC')
print(f"Bitcoin: ${btc['price']:,.2f}")
print(f"24h Change: {btc['change_percent']}%")

退货:

{
  "symbol": "BTC",
  "price": 91064.23,
  "high_24h": 91374.0,
  "low_24h": 89500.0,
  "volume": 1257916388.71,
  "bid": 91064.22,
  "ask": 91064.23,
  "change_percent": 1.19,
  "timestamp": "2025-12-09T21:02:04.123456"
}

get_multiple_prices(symbols)

一次获取多个加密货币的价格。

prices = server.get_multiple_prices(['BTC', 'ETH', 'XRP'])
for symbol, data in prices.items():
    print(f"{symbol}: ${data['price']}")

get_historical_data(symbol, days=7)

获取历史OHLCV(打开、高、低、关闭、音量)数据。

history = server.get_historical_data('BTC', days=30)
for candle in history:
    print(f"{candle['date']}: Close ${candle['close']:,.2f}")

退货:

[
  {
    "date": "2025-12-03T00:00:00",
    "open": 91277.88,
    "high": 94150.0,
    "low": 90990.23,
    "close": 93429.95,
    "volume": 156432189.45
  }
]

💾 缓存系统

服务器自动缓存加密货币数据,以减少API调用。

缓存文件: data/cache.json

它是如何工作的:

  1. 第一个请求 → 从Binance API获取→ 保存到缓存
  2. 后续请求(5分钟内) → 使用缓存数据(即时响应)
  3. 5分钟后 → 缓存过期→ 已获取新数据

缓存配置:

  • TTL(生存时间): 5分钟
  • 格式: JSON
  • 自动清理: 自动删除过期条目

缓存示例:

{
  "BTC": {
    "symbol": "BTC",
    "price": 91064.23,
    "timestamp": "2025-12-09T21:02:04.123456",
    "high_24h": 91374.0
  },
  "ETH": {
    "symbol": "ETH",
    "price": 3149.87,
    "timestamp": "2025-12-09T21:02:05.456789",
    "high_24h": 3168.43
  }
}

🧪 测试覆盖率

13个综合测试用例 涵盖所有功能:

CryptoAPI测试(6个测试)

  • ✓ 获取BTC价格(实时)
  • ✓ 获取ETH价格(实时)
  • ✓ 获取多个符号
  • ✓ 历史数据检索(7天)
  • ✓ 无效符号错误处理
  • ✓ 支持的符号列表

CacheManager测试(4个测试)

  • ✓ 保存和检索缓存
  • ✓ 缓存过期(TTL)
  • ✓ 清除缓存条目
  • ✓ 缓存文件创建

错误处理程序测试(3个测试)

  • ✓ 错误处理和日志
  • ✓ 符号验证
  • ✓ 天数参数验证

运行测试:

python tests.py

演出

Ran 13 tests in 19.702s
OK
✅ All tests passed!

🔗 支持的加密货币

符号 名称 价格范围 状态
BTC 比特币 9万至9.5万美元 ✓
ETH 以太坊 3.0K-3.2K美元 ✓
XRP 瑞波币 2.00美元-2.10美元 ✓
ADA 卡尔达诺 0.45-0.47美元 ✓
SOL 索拉纳 130-140美元 ✓
狗狗 狗狗币 0.13-0.15美元 ✓
MATIC 多边形 0.37-0.39美元 ✓
链接 链接 13.5美元-14.0美元 ✓
LTC 莱特币 80-85美元 ✓
BCH 比特币现金 570-595美元 ✓
DOT 波尔卡多特 2.10-2.20美元 ✓
AVAX 雪崩 13.5-14.0美元 ✓
ARB 仲裁 0.21-0.23美元 ✓
OP 乐观 0.31美元-0.33美元 ✓
SHIB 芝犬 <0.01 ✓
PEPE PEPE <0.01 ✓
NEAR NEAR协议 1.70-1.80美元 ✓
UNI Uniswap 5.40美元-5.70美元 ✓

🛡️ 错误处理

所有错误都会被记录并优雅地显示。

日志文件: data/errors.log

错误输出示例:

❌ ERROR [ValueError]
   Context: Invalid symbol
   Message: Symbol XYZ not supported
   Time: 2025-12-09T21:02:04.123456

已处理错误:

  • 加密货币符号无效
  • 网络/API连接失败
  • 输入参数无效
  • 缓存读/写失败

⚙️ 配置

编辑 cache.py 要自定义缓存行为,请执行以下操作:

# Default: 5 minutes
cache = CacheManager(cache_file='data/cache.json', ttl_minutes=5)

# Custom: 10 minutes
cache = CacheManager(cache_file='data/cache.json', ttl_minutes=10)

# Custom: 1 minute (for frequent updates)
cache = CacheManager(cache_file='data/cache.json', ttl_minutes=1)

📊 性能基准

操作 时间 来源
实时价格(缓存) <10ms 本地JSON
实时价格(新鲜) 200-500ms Binance API
历史数据(7天) 300-600ms Binance API
多个符号(5) 500-1000ms Binance API

🔑 为什么没有API密钥?

此项目使用 CCXT的公共API端点 不需要身份验证:

  • ✅ 实时市场数据可用
  • ✅ 历史数据可用
  • ✅ 无费率限制(合理使用)
  • ✅ 100%免费
  • ✅ 无需注册帐户
  • ✅ 即时设置

注: 对于高频交易或提高利率限制,请考虑使用经过验证的API密钥(本项目不需要)。


📦 依赖项

ccxt==4.0.92          # Cryptocurrency exchange library
python-dateutil==2.8.2  # Date utilities
requests==2.31.0      # HTTP library

所有依赖项都是免费和开源的。


🚀 用例

  1. 交易机器人 -获取自动交易策略的价格
  2. 投资组合跟踪器 -监控多个加密货币持有量
  3. 加密货币仪表板 -实时市场数据可视化
  4. 市场分析 -技术分析的历史数据
  5. AI/ML模型 -向机器学习模型提供加密数据
  6. 移动应用 -加密货币价格应用程序的后端API
  7. 价格提醒 -监控价格变化并发送通知
  8. 研究 -学术加密货币市场研究

🤝 贡献

欢迎投稿!请随意:

  • 添加更多加密货币
  • 实施新的交换API
  • 改进缓存机制
  • 加强错误处理
  • 添加更多测试用例
  • 更新文档

贡献步骤:

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/AmazingFeature)
  3. 提交更改(git commit -m 'Add AmazingFeature')
  4. 推送到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📋 假设和限制

假设:

  1. API调用需要活动的internet连接
  2. Binance API是可访问的(在您所在的地区未被阻止)
  3. 所有价格均以USDT(美元Tether)计价
  4. 默认缓存过期时间:5分钟
  5. 合理使用API(非高频交易)

限制:

  1. 实时数据更新间隔:约1-2秒(API速率限制)
  2. 历史数据仅限于过去365天
  3. 不支持现货保证金交易或衍生品
  4. 单交易所(币安)-可轻松扩展到多个交易所

🐛 故障排除

问题:“没有名为'ccxt'的模块”

解决方案:

pip install -r requirements.txt

问题:“连接超时”

解决方案:

  • 检查您的互联网连接
  • 确保Binance API在您所在的地区可以访问
  • 如果被阻止,请尝试使用VPN

问题:“符号不受支持”

解决方案: 使用18个支持的符号之一(BTC、ETH、XRP等)

问题:“权限被拒绝”(Windows)

解决方案:

python -m pip install --upgrade pip
pip install -r requirements.txt

问题:“模块故障”

解决方案:

# Reinstall all dependencies
pip install --upgrade -r requirements.txt

📞 支持和问题

对于问题、疑问或建议:

  1. 检查测试用例 在 tests.py 使用示例
  2. 查看README示例 上方
  3. 检查错误日志 在 data/errors.log
  4. 打开一个问题 在GitHub上

📄 许可证

该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。

您可以自由使用、修改和分发此软件。


🙏 致谢

  • 仓储管理系统 -加密货币交易所库
  • 币安 -免费公共API
  • Python社区 -对于惊人的工具和库

📈 项目统计

  • 代码行: ~800
  • 测试覆盖范围: 13/13项测试通过(100%)
  • 支持的加密货币: 18+
  • API集成: CCXT(币安)
  • 缓存系统: 是(5分钟TTL)
  • 错误处理: 全面的
  • 文档: 完成
  • 许可证: 麻省理工学院(开源)

🎯 路线图

未来的增强功能(潜在功能):

  • []多交易所支持(Coinbase、Kraken等)
  • []WebSocket实时价格流
  • []数据库集成(PostgreSQL、MongoDB)
  • []REST API包装器
  • []Docker容器化
  • []价格预警系统
  • []投资组合管理功能
  • []高级图表功能

👨‍💻 作者

Shreysh Patil


📅 项目时间表

  • 创建: 2025年12月
  • 最后更新时间: 2025年12月9日
  • 状态: ✅ 完成并准备生产
  • 版本: 1.0.0

由以下材料制成❤️ 面向加密社区|麻省理工学院许可证|开源


🌟 给一颗星!

如果这个项目对你有帮助,请考虑给它一个⭐ 在GitHub上!

https://github.com/ShreyashPatil530/crypto-mcp-server

感谢您使用加密货币MCP服务器! 🚀