使用说明
加密货币市场数据MCP服务器
一个强大的基于Python的模型上下文协议(MCP)服务器,用于从CoinMarketCap API检索实时和历史加密货币市场数据。
特性
核心MCP功能
- 实时数据获取:获取当前价格、市值和交易量
- 历史查询:访问历史价格数据和OHLCV信息
- 市场分析:检索顶级加密货币、趋势硬币和市场统计数据
- 全球市场指标:获取加密货币市场的整体数据
高级功能
- 智能高速缓存:基于TTL的缓存可最大限度地减少API调用
- 速率限制:遵守API配额的内置速率限制
- 错误处理:全面的错误处理和重试机制
- 数据验证:用于数据验证的Pydantic模型
- 异步支持:完全异步实现,实现高性能
安装
- 克隆存储库:
cd d:\Programming\Python\internshala\project
- 安装依赖项:
pip install -r requirements.txt
- 配置环境变量:
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
可用工具
- get_cryptocurrency_price:获取特定加密货币的实时价格
- get_cryptocurrency_info:获取有关加密货币的详细信息
- get_top_加密货币:按市值列出顶级加密货币
- 获取历史数据:检索历史价格数据
- get_ohlcv_data:获取OHLCV(打开、高、低、关闭、音量)数据
- 获取全局度量:获取全球加密货币市场指标
- 搜索加密货币:按名称或符号搜索加密货币
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许可证
贡献
欢迎投稿!请随时提交拉取请求。