HTTP交互工具

一个基于FastAPI的MCP服务器,提供通过HTTP与Hyperliquid交互的工具,适用于加密货币交易和开发测试。

  • by Kishan0703
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Kishan0703/hyperliquid_mcp

使用说明

Hyperliquid MCP 服务器(FastAPI)

这是什么

  • 一个MCP服务器 提供工具以便通过HTTP与Hyperliquid进行交互。
  • 使用……构建 FastAPI; 读取你的 MetaMask私钥 来自 .env。
  • 随船附有 桩客户端 因此,你可以不使用Hyperliquid SDK来运行它。准备好后,再切换到实际的SDK。

它的功能/作用

  • /health健康检查。
  • /mcp/tools (POST):发布可用工具的广告(包括模式)。
  • /mcp/call (POST): 执行工具(get_all_mids, place_limit_order)。

快速入门

  1. 创建 .env 在仓库根目录:
PRIVATE_KEY=replace_with_your_metamask_private_key
  • 保持 .env 脱离版本控制。
  • 使用原始私钥(十六进制),而不是助记词短语。
  1. 安装依赖项:
pip install -r requirements.txt
  1. 运行服务器:
uvicorn server:app --reload --host 0.0.0.0 --port 8000
  1. 试试看:
curl -s http://127.0.0.1:8000/health
curl -s -X POST http://127.0.0.1:8000/mcp/tools -H 'Content-Type: application/json' -d '{}'
curl -s -X POST http://127.0.0.1:8000/mcp/call -H 'Content-Type: application/json' -d '{"toolName":"get_all_mids","arguments":{}}'

工具和模式

  • get_all_mids

    • 参数:无
    • 返回值: { [coin: string]: number }
  • place_limit_order

    • 参数:
      • coin字符串(例如“BTC”)
      • side字符串("买入" | "卖出")
      • size数字
      • limit_price数字
      • time_in_force (可选):“Gtc” | “Ioc” | “Alo”(默认“Gtc”)
      • reduce_only (可选):布尔值(默认为 false)

示例调用:

curl -s -X POST http://127.0.0.1:8000/mcp/call \
  -H 'Content-Type: application/json' \
  -d '{
    "toolName":"place_limit_order",
    "arguments": {"coin":"BTC","side":"buy","size":0.1,"limit_price":60000}
  }'

模拟SDK与真实SDK

  • 默认情况下, mcp_tools.py 尝试导入Hyperliquid SDK。
    • 如果存在:它将初始化真实(值/状态) ExchangeClient/InfoClient 你可以在测试网/主网上进行交易。
    • 如果缺失:则回退到一个存根(返回演示中的中间件ID和模拟订单响应)。不涉及资金,不收取费用。

交换网络中的 server.py 通过(某种方式或途径) is_testnet=True to init_hyperliquid_client。


安全

  • 永远不要泄露你的真实私钥。 .env 被忽略了。
  • 在验证端到端行为之前,建议先在测试网上运行。

故障排除

  • 导入警告(fastapi、pydantic、dotenv):

    • 跑步 pip install -r requirements.txt.
  • 未找到 Hyperliquid SDK:

    • 服务器仍在使用存根运行。若要使用真实的SDK,请安装官方包,并根据需要替换存根调用。
  • 404 未知工具:

    • 确保 toolName 完全匹配: get_all_mids 或者 place_limit_order。