加密货币价格监控服务

Deribit MCP Server是一款集成Deribit加密货币交易所的实时价格监控和智能警报服务,支持Telegram通知和多条件价格警报。

  • by Oishh
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Oishh/telegram-signal-mcp-server

使用说明

Deribit MCP 服务器

一个与Deribit加密货币交易所集成的模型上下文协议(MCP)服务器,通过Claude Desktop提供实时价格监控和智能提醒功能。

📱 提供多种消息发送选项:

  • 这个README文件Telegram集成(支持文本消息和带TTS的电话通话)
  • **信号集成**Signal Messenger集成(注重隐私,仅限文本消息)

两者可以同时运行!根据您偏好的消息平台进行选择。

概述

这款MCP服务器使Claude能够监控Deribit上的加密货币价格,并在价格条件满足时立即向您发送Telegram通知。您可以在Claude Desktop中使用自然语言为BTC、ETH和其他工具设置警报。

核心能力:

  • 🔔(铃铛或通知的提示音) 智能价格提醒使用“高于”、“低于”、“上穿/下穿”或“百分比变化”等条件设置警报
  • 📱 Telegram通知通过Telegram在您的手机上接收即时提醒
  • 📊 表格/数据图表 实时数据用于实时价格数据流的WebSocket连接
  • 💼 表示“公文包”或“职场、工作”的意思。 账户管理查看余额、持仓和账户摘要
  • 🔄 旋转或循环(符号本身无直接对应中文含义,常用于表示重复、循环等概念) 实时监控持续价格追踪并自动触发警报

快速入门

  1. 安装依赖项:

    python3 -m venv venv && source venv/bin/activate
    pip3 install -e .
    
  2. 获取Telegram凭据:

    可选 - 用于电话提醒:

    • 授权CallMeBot:请访问https://api2.callmebot.com/txt/auth.php
    • 记下你的确切Telegram用户名(例如。, @yourname从“设置”→“编辑个人资料”
  3. 配置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 是可选的 - 仅在需要电话提醒时才需要

  4. 重启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机器人令牌(用于通知)

设置

  1. 克隆或导航到仓库:
cd /path/to/mcp-server
  1. 创建一个虚拟环境:
python3 -m venv venv
source venv/bin/activate  # On macOS/Linux
# or
venv\Scripts\activate  # On Windows
  1. 安装依赖项:
pip3 install -e .
  1. 配置Deribit API (可选,用于账户功能):

    • 访问 https://www.deribit.com/account/api
    • 创建具有适当权限的API凭据
    • 注:稍后您将把这些添加到您的Claude桌面配置中
  2. 配置Telegram机器人 (用于通知):

    一 创建一个机器人:

    • 信息 @BotFather(机器人之父) 在Telegram上
    • 发送 /newbot 并按照提示操作
    • 保存机器人令牌(例如。, 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)

    b 获取您的聊天ID:

    • 信息 @用户信息机器人 在Telegram上
    • 它将回复包含您的用户信息,包括您的聊天ID
    • 或者向您的机器人发送消息,然后访问:
      https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
      
    • 寻找 "chat":{"id":123456789} 在回应中

    c 保存凭据:

    • 在下一步中,您将把这些添加到您的Claude桌面配置中
  3. 配置CallMeBot (可选,用于电话提醒):

    一 授权CallMeBot (选择一种方法):

    方法1 - 网络授权(推荐):

    • 访问:https://api2.callmebot.com/txt/auth.php
    • 使用您的Telegram帐户登录
    • 点击“授权”以授予权限
    • 你会看到一个成功页面,上面有一个测试URL

    方法2 - Telegram机器人:

    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}

账户摘要信息。

警报条件

  1. 上述当价格超过阈值时触发
  2. 在......下面当价格低于阈值时触发
  3. “crosses_above”可以翻译为“在……之上交叉”。这个短语通常用于描述某种技术分析或数据图表中,一条线或指标从下方穿过另一条线或指标的情况,特别是在金融分析、股票市场分析等领域中常见当价格上穿阈值时触发
  4. “crosses_below”可以翻译为“下穿”或“低于交叉”。这个术语通常用于技术分析或金融领域,表示一个指标或价格线从上方穿过某个特定水平或另一个指标,但此时它处于较低的位置。例如,在股票市场中,如果短期移动平均线从长期移动平均线的上方下穿,这可能是一个卖出信号当价格跌破阈值时触发
  5. 百分比变化触发条件:基于上次检查后的百分比变化

示例用例

基本价格监测

"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/

安全考虑事项

  1. API凭据永远不要提交(或承诺) .env 将文件提交到版本控制系统
  2. 测试模式使用 DERIBIT_TEST_MODE=true 用于测试
  3. 权限将Deribit API的权限限制在最低必要范围内
  4. 通知确保你的Telegram机器人令牌安全

故障排除

连接问题

如果WebSocket连接失败:

  • 检查网络连接
  • 验证Deribit API状态
  • 先尝试测试环境(DERIBIT_TEST_MODE=true)

认证错误

如果API认证失败:

  • 验证API密钥和秘密
  • 在Deribit上检查API密钥权限
  • 确保凭据已就绪 .env 文件

Telegram通知

如果未收到通知:

  1. 检查Claude Desktop配置中的环境变量:

    • 最常见的问题:Telegram 凭证不在(系统/列表中) claude_desktop_config.json
    • 这个(或:那个,根据上下文确定具体指代) .env 文件未被Claude Desktop读取
    • 你必须添加 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID 到……的 env 您配置文件中的部分
  2. 验证凭据:

    • 检查机器人令牌是否正确
    • 检查聊天ID是否正确(应该是一个数字,如 1950437710)
    • 先给你的机器人发送一条消息(这样它就知道你的聊天ID了)
  3. 检查日志 (macOS):

    tail -f ~/Library/Logs/Claude/mcp-server-deribit.log
    
    • 查找“已初始化Telegram通知渠道”(状态良好)
    • 或者“未找到Telegram凭据”(表示环境变量未正确设置)
  4. 启动时的测试通知:

    • 当服务器启动时,它会发送一条测试消息
    • 如果你收到此信息,说明Telegram已正确配置
    • 如果不是,请检查您的Claude桌面配置

CallMeBot 电话呼叫

如果电话提醒功能不起作用:

  1. 验证授权:

    • 最佳方法访问 https://api2.callmebot.com/txt/auth.php 并使用您的Telegram账号进行授权
    • 或者发送 /start 到 @CallMeBot_API (非@CallMeBot_txtbot)
    • 检查授权状态: curl "http://api.callmebot.com/start.php?user=@yourname&text=test"
  2. 检查用户名格式:

    • 使用确切格式 @yourname 从Telegram设置 → 编辑个人资料
    • 用户名区分大小写,必须完全匹配
    • 或者使用国际电话格式,例如 +1234567890
    • 常见错误:使用了错误的用户名(请在Telegram应用中验证)
  3. 检查环境变量:

    • 确保 CALLMEBOT_USERNAME 在Claude Desktop配置中已正确设置
    • 必须与您在CallMeBot中授权的用户名相匹配
    • 更改后重启Claude桌面版
  4. 检查日志 (macOS): (译文)(适用于 macOS)

    tail -f ~/Library/Logs/Claude/mcp-server-deribit.log
    
    • 查找“Telegram呼叫频道已为@yourname初始化”(表示成功)
    • 查找“已成功发起对@yourname的通话”(通话已发送)
    • 或者“CallMeBot 用户名未配置”(意味着环境变量未设置)
    • 或者“HTTP 请求:GET http://api.callmebot.com/start.php”(显示API调用)
  5. 使用简单警报进行测试:

    • 尝试:“为BTC永续合约设置一个高于1美元的电报提醒”
    • 如果价格高于1美元,应立即触发
    • 检查日志,查看是否出现“成功发起通话”

注在iOS版Telegram应用中存在一个已知的音频播放问题。Android版和桌面版的使用体验更好。

贡献

欢迎投稿!请:

  1. 为仓库创建分支(或:为仓库进行叉操作)
  2. 创建一个特性分支
  3. 进行你的更改
  4. 如适用,请添加测试
  5. 提交拉取请求

许可证

MIT 许可证 - 详见 LICENSE 文件

支持

对于问题和疑问:

致谢