使用说明
Deribit MCP 服务器
一个与Deribit加密货币交易所集成的模型上下文协议(MCP)服务器,通过Claude Desktop提供实时价格监控和智能提醒功能。
📱 提供多种消息发送选项:
- 这个README文件Telegram集成(支持文本消息和带TTS的电话通话)
- **信号集成**Signal Messenger集成(注重隐私,仅限文本消息)
两者可以同时运行!根据您偏好的消息平台进行选择。
概述
这款MCP服务器使Claude能够监控Deribit上的加密货币价格,并在价格条件满足时立即向您发送Telegram通知。您可以在Claude Desktop中使用自然语言为BTC、ETH和其他工具设置警报。
核心能力:
- 🔔(铃铛或通知的提示音) 智能价格提醒使用“高于”、“低于”、“上穿/下穿”或“百分比变化”等条件设置警报
- 📱 Telegram通知通过Telegram在您的手机上接收即时提醒
- 📊 表格/数据图表 实时数据用于实时价格数据流的WebSocket连接
- 💼 表示“公文包”或“职场、工作”的意思。 账户管理查看余额、持仓和账户摘要
- 🔄 旋转或循环(符号本身无直接对应中文含义,常用于表示重复、循环等概念) 实时监控持续价格追踪并自动触发警报
快速入门
-
安装依赖项:
python3 -m venv venv && source venv/bin/activate pip3 install -e . -
获取Telegram凭据:
- 创建一个机器人:消息 @BotFather(机器人之父),发送
/newbot - 获取聊天ID:消息 @用户信息机器人
可选 - 用于电话提醒:
- 授权CallMeBot:请访问https://api2.callmebot.com/txt/auth.php
- 记下你的确切Telegram用户名(例如。,
@yourname从“设置”→“编辑个人资料”
- 创建一个机器人:消息 @BotFather(机器人之父),发送
-
配置Claude桌面版: 编辑
~/Library/Application Support/Claude/claude_desktop_config.json:{ "mcpServers": { "deribit": { "command": "/path/to/mcp-server/venv/bin/python", "args": ["-m", "src.server"], "cwd": "/path/to/mcp-server", "env": { "DERIBIT_TEST_MODE": "true", "TELEGRAM_BOT_TOKEN": "your_bot_token", "TELEGRAM_CHAT_ID": "your_chat_id", "CALLMEBOT_USERNAME": "@yourname" } } } }注:
CALLMEBOT_USERNAME是可选的 - 仅在需要电话提醒时才需要 -
重启Claude桌面版 并尝试:
"Set an alert for BTC-PERPETUAL when it goes above $100,000"
特点/功能
- 实时价格监控用于实时价格数据流的WebSocket连接
- 价格提醒可配置的警报,支持多种条件类型
- 多渠道通知Telegram消息、带文本转语音功能的电话通话、控制台以及可扩展的通知系统
- 账户管理查看余额、持仓和账户概览
- 交易信息获取交易工具、订单簿和市场数据
- MCP集成与Claude Desktop及其他MCP客户端完全兼容
安装
先决条件
- Python 3.10 或更高版本
- Deribit API凭证(用于账户操作)
- Telegram机器人令牌(用于通知)
设置
- 克隆或导航到仓库:
cd /path/to/mcp-server
- 创建一个虚拟环境:
python3 -m venv venv
source venv/bin/activate # On macOS/Linux
# or
venv\Scripts\activate # On Windows
- 安装依赖项:
pip3 install -e .
-
配置Deribit API (可选,用于账户功能):
- 访问 https://www.deribit.com/account/api
- 创建具有适当权限的API凭据
- 注:稍后您将把这些添加到您的Claude桌面配置中
-
配置Telegram机器人 (用于通知):
一 创建一个机器人:
- 信息 @BotFather(机器人之父) 在Telegram上
- 发送
/newbot并按照提示操作 - 保存机器人令牌(例如。,
123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
b 获取您的聊天ID:
- 信息 @用户信息机器人 在Telegram上
- 它将回复包含您的用户信息,包括您的聊天ID
- 或者向您的机器人发送消息,然后访问:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - 寻找
"chat":{"id":123456789}在回应中
c 保存凭据:
- 在下一步中,您将把这些添加到您的Claude桌面配置中
-
配置CallMeBot (可选,用于电话提醒):
一 授权CallMeBot (选择一种方法):
方法1 - 网络授权(推荐):
- 访问:https://api2.callmebot.com/txt/auth.php
- 使用您的Telegram帐户登录
- 点击“授权”以授予权限
- 你会看到一个成功页面,上面有一个测试URL
方法2 - Telegram机器人:
- 信息 根据全局信息和原文内容,翻译如下:“@CallMeBot_API” 在Telegram上(注:请使用@CallMeBot_API,而非@CallMeBot_txtbot)
- 发送
/start授权您的账户 - 等待确认信息
b 获取你的Telegram用户名:
- 您的用户名格式为
@yourname(在Telegram设置 → 编辑资料中可见) - 请确保使用你在Telegram个人资料中显示的确切用户名
- 或者,您可以使用国际格式的电话号码(例如。,
+1234567890)
c 添加到配置中:
- 添加
CALLMEBOT_USERNAME到您的Claude桌面配置(见下一节) - 使用您Telegram个人资料中的确切用户名(区分大小写)
- 你也可以自定义语音语言
CALLMEBOT_DEFAULT_LANG(默认:en-US-Standard-B)
配置
本地测试(可选)
如果你想直接运行服务器(而不是通过Claude Desktop),请创建一个 .env 文件:
cp .env.example .env
编辑 .env 根据您的设置:
# Deribit API (optional - for account features)
DERIBIT_API_KEY=your_api_key_here
DERIBIT_API_SECRET=your_api_secret_here
DERIBIT_TEST_MODE=true # Set to false for production
# Telegram Notifications
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
TELEGRAM_CHAT_ID=your_telegram_chat_id_here
# CallMeBot (Optional - for phone call alerts with TTS)
CALLMEBOT_USERNAME=@yourname # Or phone number like +1234567890
CALLMEBOT_DEFAULT_LANG=en-US-Standard-B # TTS voice/language
CALLMEBOT_REPEAT_COUNT=1 # Number of times to repeat the message
# Logging
LOG_LEVEL=INFO
注这个 .env 该文件仅用于本地开发/测试。若要集成Claude Desktop,您必须将这些值包含在(配置中) claude_desktop_config.json 文件(见下一节)。
使用方法
运行服务器
直接执行:
python -m src.server
带有紫外线(功能/特性):
uv run python -m src.server
Claude 桌面集成
在您的Claude桌面配置文件中添加:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
重要当使用Claude Desktop时,您必须包含所有环境变量(包括Telegram凭据)在 env 部分,作为 .env 文件不会自动加载。
{
"mcpServers": {
"deribit": {
"command": "/absolute/path/to/mcp-server/venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/absolute/path/to/mcp-server",
"env": {
"DERIBIT_TEST_MODE": "true",
"LOG_LEVEL": "INFO",
"PYTHONUNBUFFERED": "1",
"TELEGRAM_BOT_TOKEN": "your_telegram_bot_token_here",
"TELEGRAM_CHAT_ID": "your_telegram_chat_id_here",
"CALLMEBOT_USERNAME": "@yourname"
}
}
}
}
注:
- 使用虚拟环境中Python可执行文件的完整路径
- 在配置中直接包含Telegram凭据以使通知功能正常工作
- 设置
DERIBIT_TEST_MODE到false用于生产交易 - 可选择添加
DERIBIT_API_KEY并且DERIBIT_API_SECRET到……的env账户功能板块
可用工具
set_price_alert
为某只证券设置价格提醒。
参数:
instrument交易工具(例如,“BTC-永续合约”)condition警报类型 - “高于”、“低于”、“上穿”、“下穿”、“百分比变化”threshold价格水平或百分比notification_channel“telegram”(文本信息),“telegram_call”(带文本转语音的电话通话),或“console”message自定义警报消息(可选)repeat冷却后重新触发(默认:否)
示例:
Set a price alert for BTC-PERPETUAL above $100,000 via Telegram
Set a phone call alert for ETH-PERPETUAL below $3,000
remove_alert
移除现有的警报。
参数:
alert_id要删除的警报ID
list_alerts
列出所有已配置的警报,并可选择性地进行过滤。
参数:
instrument按乐器筛选(可选)status按状态筛选(可选)
get_current_price
获取某证券的当前价格。
参数:
instrument交易工具
get_instruments
列出可用的交易工具。
参数:
currency货币代码(默认:“BTC”)kind“期货”、“期权”或“现货”
get_account_summary
查看账户余额和权益。
参数:
currency货币代码(默认:“BTC”)
get_positions
列出所有空缺职位。
参数:
currency货币代码(默认:“BTC”)
资源
deribit://price/{instrument}
一种工具的实时价格数据。
deribit://alerts
所有已配置警报的JSON列表。
deribit://account/{currency}
账户摘要信息。
警报条件
- 上述当价格超过阈值时触发
- 在......下面当价格低于阈值时触发
- “crosses_above”可以翻译为“在……之上交叉”。这个短语通常用于描述某种技术分析或数据图表中,一条线或指标从下方穿过另一条线或指标的情况,特别是在金融分析、股票市场分析等领域中常见当价格上穿阈值时触发
- “crosses_below”可以翻译为“下穿”或“低于交叉”。这个术语通常用于技术分析或金融领域,表示一个指标或价格线从上方穿过某个特定水平或另一个指标,但此时它处于较低的位置。例如,在股票市场中,如果短期移动平均线从长期移动平均线的上方下穿,这可能是一个卖出信号当价格跌破阈值时触发
- 百分比变化触发条件:基于上次检查后的百分比变化
示例用例
基本价格监测
"Set an alert for BTC-PERPETUAL when it goes above $100,000"
电话呼叫提醒
"Call me when BTC-PERPETUAL crosses above $105,000"
"Set a phone call alert for ETH-PERPETUAL below $3,000"
交叉警报
"Alert me when ETH-PERPETUAL crosses below $3,500"
百分比变化
"Set a 5% change alert for BTC-PERPETUAL"
查看当前价格
"What's the current price of BTC-PERPETUAL?"
查看警报
"Show me all my active alerts"
账户管理
"What's my BTC account balance?"
"Show my open positions"
发展
项目结构
mcp-server/
├── src/ # Telegram implementation
│ ├── __init__.py
│ ├── server.py # Main MCP server (Telegram)
│ ├── config.py # Configuration management
│ ├── deribit_ws.py # WebSocket client
│ ├── deribit_rest.py # REST API client
│ ├── alerts.py # Alert management
│ └── notifications.py # Notification system (Telegram)
├── src-signal/ # Signal Messenger implementation
│ ├── __init__.py
│ ├── server.py # Main MCP server (Signal)
│ ├── config.py # Configuration management (Signal)
│ ├── deribit_ws.py # WebSocket client (shared)
│ ├── deribit_rest.py # REST API client (shared)
│ ├── alerts.py # Alert management (shared)
│ └── notifications.py # Notification system (Signal)
├── pyproject.toml # Project dependencies
├── .env.example # Example environment config
├── README.md # Telegram documentation
└── README-signal.md # Signal documentation
运行测试
pytest tests/
代码格式化
black src/
ruff check src/
安全考虑事项
- API凭据永远不要提交(或承诺)
.env将文件提交到版本控制系统 - 测试模式使用
DERIBIT_TEST_MODE=true用于测试 - 权限将Deribit API的权限限制在最低必要范围内
- 通知确保你的Telegram机器人令牌安全
故障排除
连接问题
如果WebSocket连接失败:
- 检查网络连接
- 验证Deribit API状态
- 先尝试测试环境(
DERIBIT_TEST_MODE=true)
认证错误
如果API认证失败:
- 验证API密钥和秘密
- 在Deribit上检查API密钥权限
- 确保凭据已就绪
.env文件
Telegram通知
如果未收到通知:
-
检查Claude Desktop配置中的环境变量:
- 最常见的问题:Telegram 凭证不在(系统/列表中)
claude_desktop_config.json - 这个(或:那个,根据上下文确定具体指代)
.env文件未被Claude Desktop读取 - 你必须添加
TELEGRAM_BOT_TOKEN和TELEGRAM_CHAT_ID到……的env您配置文件中的部分
- 最常见的问题:Telegram 凭证不在(系统/列表中)
-
验证凭据:
- 检查机器人令牌是否正确
- 检查聊天ID是否正确(应该是一个数字,如
1950437710) - 先给你的机器人发送一条消息(这样它就知道你的聊天ID了)
-
检查日志 (macOS):
tail -f ~/Library/Logs/Claude/mcp-server-deribit.log- 查找“已初始化Telegram通知渠道”(状态良好)
- 或者“未找到Telegram凭据”(表示环境变量未正确设置)
-
启动时的测试通知:
- 当服务器启动时,它会发送一条测试消息
- 如果你收到此信息,说明Telegram已正确配置
- 如果不是,请检查您的Claude桌面配置
CallMeBot 电话呼叫
如果电话提醒功能不起作用:
-
验证授权:
- 最佳方法访问 https://api2.callmebot.com/txt/auth.php 并使用您的Telegram账号进行授权
- 或者发送
/start到 @CallMeBot_API (非@CallMeBot_txtbot) - 检查授权状态:
curl "http://api.callmebot.com/start.php?user=@yourname&text=test"
-
检查用户名格式:
- 使用确切格式
@yourname从Telegram设置 → 编辑个人资料 - 用户名区分大小写,必须完全匹配
- 或者使用国际电话格式,例如
+1234567890 - 常见错误:使用了错误的用户名(请在Telegram应用中验证)
- 使用确切格式
-
检查环境变量:
- 确保
CALLMEBOT_USERNAME在Claude Desktop配置中已正确设置 - 必须与您在CallMeBot中授权的用户名相匹配
- 更改后重启Claude桌面版
- 确保
-
检查日志 (macOS): (译文)(适用于 macOS)
tail -f ~/Library/Logs/Claude/mcp-server-deribit.log- 查找“Telegram呼叫频道已为@yourname初始化”(表示成功)
- 查找“已成功发起对@yourname的通话”(通话已发送)
- 或者“CallMeBot 用户名未配置”(意味着环境变量未设置)
- 或者“HTTP 请求:GET http://api.callmebot.com/start.php”(显示API调用)
-
使用简单警报进行测试:
- 尝试:“为BTC永续合约设置一个高于1美元的电报提醒”
- 如果价格高于1美元,应立即触发
- 检查日志,查看是否出现“成功发起通话”
注在iOS版Telegram应用中存在一个已知的音频播放问题。Android版和桌面版的使用体验更好。
贡献
欢迎投稿!请:
- 为仓库创建分支(或:为仓库进行叉操作)
- 创建一个特性分支
- 进行你的更改
- 如适用,请添加测试
- 提交拉取请求
许可证
MIT 许可证 - 详见 LICENSE 文件
支持
对于问题和疑问:
- 检查一下 MCP文档
- 评论 Deribit API文档
- 在GitHub上打开一个议题(或问题)
致谢
- 使用(某种材料/技术)建造 FastMCP
- 与……集成 Deribit交易所
- 通过(某种方式)的通知 Python-Telegram-Bot(Python 电报机器人库)