加密货币API服务器

一个提供Bybit加密货币交易所API只读访问的模型上下文协议(MCP)服务器,适用于加密货币交易数据分析和监控。

  • by sammcj
  • TypeScript
  • 本地部署
  • 16 星标
  • 更新于
在 GitHub 查看 sammcj/bybit-mcp

使用说明

Bybit MCP服务器

A. 模型上下文协议(MCP) 提供对Bybit的加密货币交易所API的只读访问的服务器。

这是ALPHA质量的软件,使用风险自负!

只能在此服务器上使用只读API密钥。我不会把你的“钱”托付给我的代码,你也不应该!

特性

此MCP服务器为与Bybit的API交互提供了以下工具:

  • get_ticker:获取交易对的实时行情信息
  • get_orderbook:获取交易对的订单簿(市场深度)数据
  • get_kline:获取交易对的kline/烛台数据
  • get_market_info:获取交易对的详细市场信息
  • get_trades:获取交易对的最近交易
  • get_instrument_info:获取特定交易对的详细工具信息
  • get_wallet_balance:获取经过身份验证的用户的钱包余额信息
  • get_positions:获取经过身份验证的用户的当前职位信息
  • get_order_history:获取已验证用户的订单历史记录
  • get_ml_rsi:为交易对获取基于机器学习的RSI(相对强弱指数)
  • get_market_structure:获取交易对的市场结构信息
  • get_order_blocks:检测机构秩序积累区
  • get_order_history:获取已验证用户的订单历史记录
  • get_orderbook:获取交易对的订单簿(市场深度)数据
  • get_ticker:获取交易对的实时行情信息

还有一个 高度实验性 WebUI,请参阅 WebUI自述 了解详情。

随着我继续开发这个项目,所有代码都会发生重大更改和功能添加/删除。

要求和安装

  1. Node.js(v22+)
  2. pnpm(npm i -g pnpm)
  3. 如果你想运行Olama客户端,如下面的快速入门所示,你需要安装并运行Olama,以及你选择的型号。
pnpm i

快速开始

要安装软件包,请构建所有内容并启动交互式客户端:

pnpm i

将.env.example文件复制到.env并填写您的详细信息。

cp .env.example .env
code .env

MCP服务器(仅限)

标准传输(默认)

pnpm serve

HTTP/SSE传输

pnpm start:http

默认情况下,HTTP服务器在端口8080上运行,提供现代可流式HTTP和传统SSE传输,使其与web应用程序和各种MCP客户端兼容。看 HTTP服务器文档 了解详细信息。

MCP服务器和Ollama客户端

安装所需的客户端包:

(cd client && pnpm i)

将client.env.example文件复制到.env并填写您的详细信息。

cp client/.env.example client/.env
code client/.env

然后,在一个命令中启动客户端和服务器:

pnpm start

配置

环境变量

服务器要求将Bybit API凭据设置为环境变量:

  • BYBIT_API_KEY:您的Bybit API密钥(必需)
  • BYBIT_API_SECRET:您的Bybit API机密(必需)- 重要信息-只创建一个只读的API密钥!
  • BYBIT_USE_TESTNET:设置为“true”以使用测试网而不是主网(可选,默认为false)
  • DEBUG:设置为“true”以启用调试日志记录(可选,默认为false)

客户端环境变量(./Client/.env):

  • OLLAMA_HOST:Ollama服务器的主机(默认为http://localhost:11434)
  • DEFAULT_MODEL:用于聊天的默认模型(默认为qwen3-30b-a3b-ud-nothink-128k:q4_k_xl)

MCP设置配置

要将此服务器与MCP客户端一起使用,您需要将其添加到MCP设置配置文件中。文件位置取决于您的客户端:

MCP示例-克劳德桌面

地点: ~/Library/Application\ Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "bybit": {
      "command": "node",
      "args": ["/path/to/bybit-mcp/build/index.js"],
      "env": {
        "BYBIT_API_KEY": "your-api-key",
        "BYBIT_API_SECRET": "your-api-secret",
        "BYBIT_USE_TESTNET": "false"
      }
    }
  }
}

MCP示例- gomcp

地点: ~/.config/gomcp/config.yaml

mcp_servers:
  - name: "bybit"
    command: "cd /path/to/bybit-mcp && pnpm run serve"
    arguments: []
    env:
      BYBIT_API_KEY: ""      # Add your Bybit API **READ ONLY** key here
      BYBIT_API_SECRET: ""   # Add your Bybit API **READ ONLY** secret here
      BYBIT_USE_TESTNET: "true"  # Set to false for production
      DEBUG: "false"         # Optional: Set to true for debug logging

客户端集成

此包包括一个TypeScript客户端,它提供了一个命令行界面,用于与Ollama LLM和bybit mcp服务器进行交互。客户端支持:

  • 与Ollama模特互动聊天
  • 直接访问所有bybit mcp交易工具
  • 自动服务器管理
  • 基于环境的配置
  • 调试记录

有关详细的客户文档,请参阅 客户端README.

运行服务器

生产

  1. 构建服务器:
pnpm build
  1. 运行服务器:
node build/index.js

发展

对于使用TypeScript自动重新编译的开发:

pnpm watch

在开发过程中检查MCP服务器:

pnpm inspector

工具文档

获取票务信息

{
  "name": "get_ticker",
  "arguments": {
    "symbol": "BTCUSDT",
    "category": "spot" // optional, defaults to "spot"
  }
}

获取订单数据

{
  "name": "get_orderbook",
  "arguments": {
    "symbol": "BTCUSDT",
    "category": "spot", // optional, defaults to "spot"
    "limit": 25 // optional, defaults to 25 (available: 1, 25, 50, 100, 200)
  }
}

获取Kline/烛台数据

{
  "name": "get_kline",
  "arguments": {
    "symbol": "BTCUSDT",
    "category": "spot", // optional, defaults to "spot"
    "interval": "1", // optional, defaults to "1" (available: "1", "3", "5", "15", "30", "60", "120", "240", "360", "720", "D", "M", "W")
    "limit": 200 // optional, defaults to 200 (max 1000)
  }
}

获取市场信息

{
  "name": "get_market_info",
  "arguments": {
    "category": "spot", // optional, defaults to "spot"
    "symbol": "BTCUSDT", // optional, if not provided returns info for all symbols in the category
    "limit": 200 // optional, defaults to 200 (max 1000)
  }
}

获取最近交易

{
  "name": "get_trades",
  "arguments": {
    "symbol": "BTCUSDT",
    "category": "spot", // optional, defaults to "spot"
    "limit": 200 // optional, defaults to 200 (max 1000)
  }
}

获取仪器信息

{
  "name": "get_instrument_info",
  "arguments": {
    "symbol": "BTCUSDT", // required
    "category": "spot" // optional, defaults to "spot"
  }
}

返回有关交易工具的详细信息,包括:

  • 基础货币和报价货币
  • 交易状态
  • 批量过滤器(最小/最大订单数量)
  • 价格过滤器(刻度大小)
  • 杠杆设置(期货)
  • 合约详情(期货)

获取钱包余额

{
  "name": "get_wallet_balance",
  "arguments": {
    "accountType": "UNIFIED", // required (available: "UNIFIED", "CONTRACT", "SPOT")
    "coin": "BTC" // optional, if not provided returns all coins
  }
}

获取职位

{
  "name": "get_positions",
  "arguments": {
    "category": "linear", // required (available: "linear", "inverse")
    "symbol": "BTCUSDT", // optional
    "baseCoin": "BTC", // optional
    "settleCoin": "USDT", // optional
    "limit": 200 // optional, defaults to 200
  }
}

获取订单历史记录

{
  "name": "get_order_history",
  "arguments": {
    "category": "spot", // required (available: "spot", "linear", "inverse")
    "symbol": "BTCUSDT", // optional
    "baseCoin": "BTC", // optional
    "orderId": "1234567890", // optional
    "orderLinkId": "myCustomId", // optional
    "orderStatus": "Filled", // optional (available: "Created", "New", "Rejected", "PartiallyFilled", "PartiallyFilledCanceled", "Filled", "Cancelled", "Untriggered", "Triggered", "Deactivated")
    "orderFilter": "Order", // optional (available: "Order", "StopOrder")
    "limit": 200 // optional, defaults to 200
  }
}

支持的类别

  • spot:现货交易
  • linear:线性永久合同
  • inverse:反向永久合同

许可证

麻省理工学院