内容
# 加密货币市场数据 MCP 服务器
[](https://mcpize.com/mcp/crypto-market-data)
一个 **只读** 的 [模型上下文协议](https://modelcontextprotocol.io) 服务器,提供给任何 AI 代理(Claude, Cursor, Cline, Windsurf…)超过 100 个交易所的实时加密货币市场数据,通过 [CCXT](https://github.com/ccxt/ccxt)。无需 API 密钥 — 所有操作都使用公共端点。
支持的交易所:**bybit, binance, okx, hyperliquid, gate, kucoin** (在 `SUPPORTED_EXCHANGES` 中添加更多 CCXT id)。
## 通过 MCPize 连接
无需本地安装,即可立即使用此 MCP 服务器:
```bash
npx -y mcpize connect @eliasfire617/crypto-market-data --client claude
```
或在以下网址连接:**https://mcpize.com/mcp/crypto-market-data**
## 工具(13)
**发现**
| 工具 | 功能 |
|------|--------------|
| `list_exchanges` | 支持哪些交易所 |
| `get_capabilities` | 交易所支持哪些数据的矩阵(无需网络) |
| `search_symbols` | 查找币种的精确符号格式 |
**市场数据**
| 工具 | 功能 |
|------|--------------|
| `get_price` | 最新价格 + 24 小时统计 |
| `get_order_book` | 顶部买卖报价 |
| `get_ohlcv` | 最近的 OHLCV 蜡烛图 |
| `get_recent_trades` | 最新公开交易 |
**衍生品**
| 工具 | 功能 |
|------|--------------|
| `get_funding_rate` | 当前永续合约资金费率 |
| `get_funding_rate_history` | 历史资金费率 |
| `compare_funding` | 多个交易所的资金费率 + **套利差价** |
| `get_open_interest` | 当前未平仓合约 |
| `get_long_short_ratio` | 全球多空账户比例(Binance) |
| `get_liquidations` | 最近公开爆仓(有限支持) |
`compare_funding` 是区分度:它在一个并发调用中提供资金费率套利机会(哪个交易场所支付最多 vs 最少)。费率在比较之前 **年化(`apr_pct`)** — 交易场所的资金频率不同(Hyperliquid 每小时 vs 其他 8 小时),因此原始费率不可比较。
> **想要分析,而不仅仅是数据?** 配套服务器 [**加密货币衍生品情报**](https://mcpize.com/mcp/crypto-derivs-intelligence) 建立在此数据之上:资金携带机会扣除手续费(盈亏平衡天数,可执行深度),OI-价格背离,爆仓区,定位极端值和市场状态分类 — 每个工具调用。
## 健壮性
为生产环境而建,非演示:
- **重试并指数级回退** 遇到暂时的网络错误(3 次尝试)。
- **每个请求 + 总超时** (10 秒 / 25 秒),防止交易所挂起导致调用超时。
- **能力保护**:从不调用交易所缺乏的方法 — 返回干净的错误,列出哪些交易所 **支持** 该方法(参见 `get_capabilities`)。
- **结构化错误** (`{"error": {type, message, retryable, supported_exchanges}}`)而不是崩溃 — 代理始终获得可解析的响应。
- **TTL 响应缓存** (约 660 倍于重复调用速度;缓解速率限制)。
- **输入验证** 和每个工具的限制。
- **保证交易所清理**;仅向 **stderr** 输出日志(适用于 stdio 传输)。
## 本地运行
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# stdio 传输(Claude Desktop, Cursor, Cline)— 本地,无身份验证:
python server.py
# 或可流式传输的 HTTP(托管 / 远程)— API 密钥身份验证 + 速率限制开启:
python server.py --http # 绑定 :8000(覆盖 PORT=8799)
```
## 身份验证和计费(HTTP 模式)
托管的 HTTP 传输 **受限** — 这使其可计费。本地_stdio 保持开放,供单个用户开发。
- 客户端发送 `Authorization: Bearer <api-key>`。
- 每个密钥映射到一个 `client_id` 和一个 **层级**;未知/缺失的密钥返回 `401`。
- 层级(`auth.py` → `TIERS`)设置每分钟速率 + 每月配额:
| 层级 | 每分钟请求 | 每月配额 |
|------|--------:|--------------:|
| 免费 | 10 | 1,000 |
| 专业 | 120 | 100,000 |
| 超级 | 600 | 2,000,000 |
- 超出限制 → 一个干净的 `ToolError` (`Rate limit exceeded…` / `Monthly quota exceeded…`),而非崩溃。
**配置密钥** (任一来源;文件优先):
```bash
# 内联
export CRYPTO_MCP_API_KEYS="sk_live_abc:acme:pro,sk_live_xyz:jane:free"
# 或文件(参见 api_keys.example.json)
export CRYPTO_MCP_API_KEYS_FILE=./api_keys.json
```
如果在 HTTP 模式下未设置密钥,则会生成一个临时 **演示密钥(层级=专业)** 并打印到 stderr,以便您可以立即测试。
### 在网关后面(例如 MCPize)
如果您在已经进行身份验证和速率限制的平台后面部署,请设置 `CRYPTO_MCP_DISABLE_AUTH=1`。然后,服务器信任网关并跳过其自己的身份验证和速率限制 — 无双重身份验证,无双重限制。只有当容器仅通过该网关可访问时,才执行此操作。
### 与 Claude Desktop 一起使用
将 `claude_desktop_config.example.json` 复制到您的 Claude Desktop 配置文件(`~/Library/Application Support/Claude/claude_desktop_config.json` 在 macOS 上,`%APPDATA%\Claude\claude_desktop_config.json` 在 Windows 上),并调整路径。
### 符号
- 现货:`BTC/USDT`
- 永续合约:`BTC/USDT:USDT`
- 常见简写会自动规范化:`btc`, `BTCUSDT`, `BTC-USDT` 均可(资金/OI 工具落在永续合约形式上)。
---
## 路线图
- 将更多交易所添加到 `SUPPORTED_EXCHANGES`。
- 更积极地缓存热门符号以降低延迟。
- 可选的 WebSocket 流式传输,用于实时订单簿/交易。