项目简介

Hummingbot MCP 服务端是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在将 Hummingbot 强大的自动化加密货币交易能力暴露给大语言模型 (LLM) 客户端,如 Claude 和 Gemini CLI。通过标准化的 JSON-RPC 协议,LLM 客户端可以调用服务器提供的工具来管理交易账户、执行订单、获取市场数据以及部署和管理交易机器人,实现智能化、自动化的交易策略。

主要功能点

  • 账户与连接器管理: 配置和管理多个 Hummingbot API 服务器连接,设置交易所连接器及其凭据。
  • 交易与仓位管理: 支持市价单、限价单的创建、查询和取消,管理杠杆和仓位模式。
  • 市场数据获取: 实时获取交易对价格、K线数据、订单簿深度和永续合约的资金费率。
  • 交易机器人部署与管理: 探索、创建、修改和删除交易策略控制器及其配置,部署和监控交易机器人,并管理其运行状态。
  • 会话管理与错误处理: 提供会话管理能力,并输出详细的错误信息以帮助诊断连接和认证问题。

安装步骤

选项1: 使用 'uv' (推荐开发环境)

  1. 安装 'uv' (如果尚未安装): 在终端运行以下命令:
    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 克隆仓库并安装依赖:
    git clone https://github.com/hummingbot/mcp
    cd mcp
    uv sync
  3. 创建 '.env' 文件:
    cp .env.example .env
  4. 编辑 '.env' 文件,填入你的 Hummingbot API 凭据:
    HUMMINGBOT_API_URL=http://localhost:8000
    HUMMINGBOT_USERNAME=admin
    HUMMINGBOT_PASSWORD=admin

选项2: 使用 Docker (推荐生产环境)

  1. 创建 '.env' 文件
    touch .env
  2. 编辑 '.env' 文件,填入你的 Hummingbot API 凭据:
    HUMMINGBOT_API_URL=http://localhost:8000
    HUMMINGBOT_USERNAME=admin
    HUMMINGBOT_PASSWORD=admin
    重要提示: 如果在 Docker 中运行 MCP 服务器,且 Hummingbot API 运行在宿主机上:
    • Linux: 在运行 Docker 命令时使用 '--network host'。
    • Mac/Windows: 将 'HUMMINGBOT_API_URL' 修改为 'http://host.docker.internal:8000'。
  3. 拉取 Docker 镜像:
    docker pull hummingbot/hummingbot-mcp:latest
    后续 MCP 客户端的配置将直接启动这个 Docker 镜像。

服务器配置 (供MCP客户端连接)

MCP 客户端(如 Claude Code 或 Gemini CLI)需要配置 MCP 服务器的连接信息。以下是两种常见的配置方式,其中包含了 MCP 服务器的启动命令及其参数。

请将以下 JSON 配置添加到你的 MCP 客户端设置中,替换 '/path/to/mcp' 为你的 MCP 仓库实际路径,并根据你的操作系统选择合适的 Docker 配置。

示例配置 (uv 方式):

用于连接通过 'uv' 启动的 MCP 服务器。

{
  "hummingbot-mcp": {
    "type": "stdio",
    "command": "uv",
    "args": [
      "--directory",
      "/path/to/mcp",  // 替换为 MCP 仓库的实际路径,例如 "/home/user/mcp"
      "run",
      "main.py"
    ]
  }
}

参数说明:

  • 'type': 连接类型,'stdio' 表示标准输入输出。
  • 'command': 启动 MCP 服务器的命令,这里是 'uv'。
  • 'args': 'uv' 命令的参数,'--directory' 指定 MCP 仓库路径,'run main.py' 执行主程序。

示例配置 (Docker 方式 - Linux):

用于连接在 Linux 宿主机上使用 '--network host' 启动的 Docker 版 MCP 服务器。

{
  "hummingbot-mcp": {
    "type": "stdio",
    "command": "docker",
    "args": [
      "run",
      "--rm",
      "-i",
      "--network",
      "host",
      "--env-file",
      "/path/to/mcp/.env", // 替换为 .env 文件的实际路径,例如 "/home/user/mcp/.env"
      "-v",
      "$HOME/.hummingbot_mcp:/root/.hummingbot_mcp",
      "hummingbot/hummingbot-mcp:latest"
    ]
  }
}

参数说明:

  • 'command': 启动 Docker 容器的命令,这里是 'docker'。
  • 'args': 'docker run' 命令的参数,包括:
    • '--rm': 容器退出时自动删除。
    • '-i': 保持标准输入流开放,允许 MCP 客户端交互。
    • '--network host': 允许容器访问宿主机的网络。
    • '--env-file': 加载环境变量文件。
    • '-v': 挂载卷,用于持久化服务器配置。
    • 'hummingbot/hummingbot-mcp:latest': 使用最新版 Hummingbot MCP Docker 镜像。

示例配置 (Docker 方式 - Mac/Windows):

用于连接在 Mac/Windows 宿主机上启动的 Docker 版 MCP 服务器。

{
  "hummingbot-mcp": {
    "type": "stdio",
    "command": "docker",
    "args": [
      "run",
      "--rm",
      "-i",
      "--env-file",
      "/path/to/mcp/.env", // 替换为 .env 文件的实际路径,例如 "/c/Users/user/mcp/.env"
      "-v",
      "$HOME/.hummingbot_mcp:/root/.hummingbot_mcp",
      "hummingbot/hummingbot-mcp:latest"
    ]
  }
}

参数说明:

  • 与 Linux Docker 配置类似,但无需 '--network host'。请确保 '.env' 文件中 'HUMMINGBOT_API_URL' 设置为 'http://host.docker.internal:8000'。

示例配置 (Docker Compose 方式 - 连接已有容器):

如果已通过 Docker Compose 部署了 Hummingbot API 和 MCP 服务器,可配置客户端连接到正在运行的 'hummingbot-mcp' 容器。

{
  "hummingbot-mcp": {
    "type": "stdio",
    "command": "docker",
    "args": [
      "exec",
      "-i",
      "hummingbot-mcp", // 替换为你的 MCP 容器名称,例如 "my-hummingbot-mcp-container"
      "uv",
      "run",
      "main.py"
    ]
  }
}

参数说明:

  • 'command': 'docker' 命令。
  • 'args': 'docker exec' 命令的参数,用于在运行中的 'hummingbot-mcp' 容器内执行 'uv run main.py'。

基本使用方法

一旦 MCP 客户端配置完成并连接到 Hummingbot MCP 服务器,你可以通过 LLM 客户端的对话界面来调用服务器提供的各种工具。

例如:

  • 列出可用交易所: 向 LLM 提问:“列出所有支持的交易所连接器。” LLM 可能会调用 'setup_connector()' 工具并返回结果。
  • 设置 Binance 连接器: 向 LLM 提问:“我想设置 Binance 连接器,需要什么凭据?” LLM 可能会调用 'setup_connector(connector='binance')'。 获取到所需凭据字段后,再提供凭据:“这是我的 Binance API Key 和 Secret Key。” LLM 可能会调用 'setup_connector(connector='binance', credentials={'binance_api_key': '...', 'binance_secret_key': '...'})'。
  • 查看账户余额: 向 LLM 提问:“我的投资组合余额是多少?” LLM 可能会调用 'get_portfolio_balances()'。
  • 下限价买单: 向 LLM 提问:“在 Binance 交易对 BTC-USDT 上以 60000 的价格买入 0.001 BTC。” LLM 可能会调用 'place_order(connector_name='binance', trading_pair='BTC-USDT', trade_type='BUY', amount=0.001, price=60000, order_type='LIMIT')'。
  • 部署策略机器人: 向 LLM 提问:“部署一个名为 'my_spot_bot' 的交易机器人,使用 'directional_trading_strategy' 配置。” LLM 可能会调用 'deploy_bot_with_controllers(bot_name='my_spot_bot', controllers_config=['directional_trading_strategy'])'。
  • 管理 API 服务器连接: 使用 'configure_api_servers' 工具来添加、修改、删除或切换默认的 Hummingbot API 服务器连接。

通过这些交互,LLM 客户端能够理解你的自然语言指令,并将其转化为对 MCP 服务器工具的调用,从而实现与 Hummingbot 的无缝交互。

信息

分类

AI与计算