加密货币市场数据服务器

一个基于Python的MCP服务器,用于从CoinMarketCap API获取实时和历史加密货币市场数据。

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

使用说明

加密货币市场数据MCP服务器

一个强大的基于Python的模型上下文协议(MCP)服务器,用于从CoinMarketCap API检索实时和历史加密货币市场数据。

特性

核心MCP功能

  • 实时数据获取:获取当前价格、市值和交易量
  • 历史查询:访问历史价格数据和OHLCV信息
  • 市场分析:检索顶级加密货币、趋势硬币和市场统计数据
  • 全球市场指标:获取加密货币市场的整体数据

高级功能

  • 智能高速缓存:基于TTL的缓存可最大限度地减少API调用
  • 速率限制:遵守API配额的内置速率限制
  • 错误处理:全面的错误处理和重试机制
  • 数据验证:用于数据验证的Pydantic模型
  • 异步支持:完全异步实现,实现高性能

安装

  1. 克隆存储库:
cd d:\Programming\Python\internshala\project
  1. 安装依赖项:
pip install -r requirements.txt
  1. 配置环境变量:
copy .env.example .env
# Edit .env and add your CoinMarketCap API key

配置

从获取您的免费API密钥 CoinMarketCap 并将其添加到您的 .env 文件:

COINMARKETCAP_API_KEY=your_actual_api_key_here

用法

启动服务器

python -m src.server

可用工具

  1. get_cryptocurrency_price:获取特定加密货币的实时价格
  2. get_cryptocurrency_info:获取有关加密货币的详细信息
  3. get_top_加密货币:按市值列出顶级加密货币
  4. 获取历史数据:检索历史价格数据
  5. get_ohlcv_data:获取OHLCV(打开、高、低、关闭、音量)数据
  6. 获取全局度量:获取全球加密货币市场指标
  7. 搜索加密货币:按名称或符号搜索加密货币

MCP客户端使用示例

# Example client code
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    server_params = StdioServerParameters(
        command="python",
        args=["-m", "src.server"]
    )
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            
            # Get Bitcoin price
            result = await session.call_tool(
                "get_cryptocurrency_price",
                arguments={"symbols": "BTC"}
            )
            print(result)

项目结构

project/
├── src/
│   ├── __init__.py
│   ├── server.py           # Main MCP server
│   ├── api/
│   │   ├── __init__.py
│   │   ├── client.py       # CoinMarketCap API client
│   │   └── models.py       # Data models
│   ├── tools/
│   │   ├── __init__.py
│   │   ├── realtime.py     # Real-time data tools
│   │   ├── historical.py   # Historical data tools
│   │   └── analytics.py    # Analytics tools
│   └── utils/
│       ├── __init__.py
│       ├── cache.py        # Caching utilities
│       ├── errors.py       # Error handling
│       └── validators.py   # Data validators
├── tests/
│   ├── __init__.py
│   ├── test_server.py
│   ├── test_api_client.py
│   ├── test_tools.py
│   └── test_utils.py
├── requirements.txt
├── .env.example
└── README.md

测试

运行测试套件:

# Run all tests
pytest

# Run with coverage
pytest --cov=src --cov-report=html

# Run specific test file
pytest tests/test_api_client.py -v

API费率限制

免费CoinMarketCap API层包括:

  • 每月10000学分
  • 每天约333学分
  • 速率限制由服务器自动处理

错误处理

该服务器包括全面的错误处理功能,用于:

  • API身份验证错误
  • 请求频率超限
  • 网络超时
  • 无效参数
  • 数据验证错误

发展

运行测试

pytest -v

代码格式化

black src/ tests/

类型检查

mypy src/

许可证

MIT许可证

贡献

欢迎投稿!请随时提交拉取请求。