Phemex交易MCP服务器

基于模型上下文协议(MCP)的服务器,支持AI代理在Phemex上进行USDT-M期货、Coin-M期货和现货市场的交易、持仓管理和市场数据查询。

  • by betta2moon
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 betta2moon/phemex-trade-mcp

使用说明

phemex贸易mcp

用于交易的MCP服务器 墨西哥石油公司 --支持USDT-M期货、Coin-M期货和现货市场。

建立在 模型上下文协议,该服务器允许AI代理(Claude Desktop、Claude Code或任何MCP客户端)在Phemex上下订单、管理头寸、检查余额和查询市场数据。

可用工具

市场数据(公开,无需API密钥)

工具 说明
get_ticker 交易品种的24小时价格自动收报机
get_orderbook 订单簿快照(30个级别)
get_klines 历史烛台/曲线数据
get_recent_trades 最近的市场交易
get_funding_rate 资金利率历史(仅期货)

帐户(只读)

工具 说明
get_account 期货账户余额和保证金信息
get_spot_wallet 每种货币的即期钱包余额
get_positions 未实现净现值的当前头寸(仅期货)
get_open_orders 某个交易品种的所有未结订单
get_order_history 已关闭/已完成订单历史记录
get_trades 交易执行历史

交易(写)

工具 说明
place_order 下单(市价、限价、止损、止损限价)
amend_order 修改未结订单的价格或数量
cancel_order 通过orderID或clOrdID取消单个订单
cancel_all_orders 取消某个交易品种的所有未结订单
set_leverage 为永久交易品种设置杠杆(仅限期货)
switch_pos_mode 在单向和对冲模式之间切换(仅限USDT-M)

转账

工具 说明
transfer_funds 在现货和期货钱包之间转移资金
get_transfer_history 查询转账历史

效用

工具 说明
list_symbols 列出所有可用的交易品种,按合约类型分组

合同类型

每个工具都接受一个可选 contractType 参数:

  • linear (默认)——百万美元永久期货。符号以结尾 USDT (例如。 BTCUSDT).
  • inverse --Coin-M永久期货。符号以结尾 USD (例如。 BTCUSD).
  • spot --现货交易。符号以结尾 USDT (例如。 BTCUSDT).服务器会自动预置 s API。

设置

1.获取Phemex API证书

在处创建API密钥 phemex.com (或 testnet.phemex.com 用于测试)。

2.配置环境

选项A:环境变量 --复制 .env.example 到 .env 并填写您的密钥:

PHEMEX_API_KEY=your-api-key
PHEMEX_API_SECRET=your-api-secret
PHEMEX_API_URL=https://testnet-api.phemex.com
PHEMEX_MAX_ORDER_VALUE=

选项B:配置文件 --创建 ~/.phemexrc:

# Phemex API Credentials
PHEMEX_API_KEY=your-api-key
PHEMEX_API_SECRET=your-api-secret
PHEMEX_API_URL=https://api.phemex.com

# Optional: max order value limit (USD)
PHEMEX_MAX_ORDER_VALUE=1000

优先级 (从高到低):CLI参数→ 环境变量→ ~/.phemexrc → 默认值(测试网)。

变量 描述
PHEMEX_API_KEY 您的Phemex API密钥
PHEMEX_API_SECRET 您的Phemex API秘密
PHEMEX_API_URL API基本URL。使用 https://testnet-api.phemex.com 用于测试网或 https://api.phemex.com 用于生产
PHEMEX_MAX_ORDER_VALUE 可选安全限制——最大名义订单价值(美元)。超过此值的订单将在客户端被拒绝

3.建造

npm install
npm run build

MCP客户端配置

克劳德桌面版

添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "phemex": {
      "command": "node",
      "args": ["/absolute/path/to/phemex-trade-mcp/dist/index.js"],
      "env": {
        "PHEMEX_API_KEY": "your-key",
        "PHEMEX_API_SECRET": "your-secret",
        "PHEMEX_API_URL": "https://testnet-api.phemex.com"
      }
    }
  }
}

克劳德代码

添加 ~/.claude.json (全球)或 .mcp.json (每个项目):

{
  "mcpServers": {
    "phemex": {
      "command": "node",
      "args": ["/absolute/path/to/phemex-trade-mcp/dist/index.js"],
      "env": {
        "PHEMEX_API_KEY": "your-key",
        "PHEMEX_API_SECRET": "your-secret",
        "PHEMEX_API_URL": "https://testnet-api.phemex.com"
      }
    }
  }
}

开爪

从安装技能 爪集:

clawhub install phemex-trade

或手动复制 skill/phemex-trade/ 目录到 ~/.openclaw/skills/.

将API键设置为环境变量:

export PHEMEX_API_KEY=your-key
export PHEMEX_API_SECRET=your-secret
export PHEMEX_API_URL=https://api.phemex.com

该技能使用 phemex-cli (包含在npm包中)用于直接工具调用——不需要mcporter。

然后问你的OpenClaw代理人:“Phemex目前的BTC价格是多少?”

任何MCP客户端(stdio)

此服务器使用 标准 运输。将其作为子进程启动,并通过stdin/stdout进行通信:

PHEMEX_API_KEY=... PHEMEX_API_SECRET=... node dist/index.js

用法示例

连接后,询问您的AI代理以下问题:

  • “Phemex目前的BTC价格是多少?”
  • “显示我的USDT-M账户余额”
  • “以95000美元的价格限价买入0.01 BTC”
  • “我的空缺职位是什么?”
  • “取消ETHUSDT的所有未结订单”
  • “显示BTCUSD Coin-M订单簿”(使用 contractType: "inverse")
  • “当场购买价值10 USDT的BTC”(使用 contractType: "spot", qtyType: "ByQuote")
  • “将100 USDT从现货转移到期货”

发展

npm run dev       # watch mode — recompiles on file changes
npm run build     # one-time build
npm run test      # run tests
npm run start     # run the server

建筑

src/
  index.ts              # MCP server entry point — registers all tools
  cli.ts                # CLI entry point — dispatches to tool handlers
  cli-parser.ts         # CLI argument parser (flag + JSON modes)
  client.ts             # Phemex API client (auth, signing, HTTP)
  config.ts             # Config loading (~/.phemexrc + env vars)
  contract-router.ts    # Routes tools to correct API endpoints per contract type
  errors.ts             # Enhanced error messages with suggestions
  product-info.ts       # Caches product metadata for price/qty scaling
  tool-schemas.ts       # Tool parameter schemas and --help formatter
  types.ts              # Shared types
  formatters/
    field-mapper.ts     # Maps API field names to friendly names (--raw to skip)
  tools/
    get-ticker.ts       # One file per MCP tool
    list-symbols.ts     # List all available trading symbols
    place-order.ts
    ...

关键设计决策:

  • 合同路由器 --单身 contractType 每个工具上的参数分派到正确的Phemex API端点(USDT-M /g-*,Coin-M /orders/*,现货 /spot/*).
  • 自动缩放 --Coin-M和Spot API使用整数缩放值(priceEp, baseQtyEv).服务器通过以下方式自动处理转换 ProductInfoCache,因此代理总是使用人类可读的小数。
  • 符号解析 --点符号会自动添加前缀 s API(例如。 BTCUSDT 成为 sBTCUSDT).特工们不需要知道这一点。
  • 字段名称映射 -API字段后缀(closeRp, fundingRateRr等)被映射到友好名称(closePrice, fundingRate).使用 --raw 以保留原始名称。
  • 配置文件 — ~/.phemexrc 提供持久的API凭据,而无需在每个会话中导出env vars。
  • 增强的错误 --错误代码被映射到具有可操作建议的人类可读消息中。

CLI使用情况

该套餐还包括 phemex-cli 用于直接命令行访问的二进制文件(由OpenClaw技能使用):

# Install globally
npm install -g phemex-trade-mcp

# Set your API keys
export PHEMEX_API_KEY=your-key
export PHEMEX_API_SECRET=your-secret
export PHEMEX_API_URL=https://api.phemex.com

# Use any tool
phemex-cli get_ticker --symbol BTCUSDT
phemex-cli get_positions --currency USDT
phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 0.01 --ordType Market

# List available symbols
phemex-cli list_symbols
phemex-cli list_symbols --contractType linear

# JSON args also supported
phemex-cli get_ticker '{"symbol":"BTCUSDT"}'

# Help
phemex-cli --help
phemex-cli place_order --help

# Raw output (preserve original API field names)
phemex-cli get_ticker --symbol BTCUSDT --raw

WebSocket流媒体

订阅实时市场数据流:

# Subscribe to price ticker (market24h)
phemex-cli subscribe ticker --symbol BTCUSDT

# Subscribe to live trades
phemex-cli subscribe trade --symbol SOLUSDT

# Subscribe to order book updates
phemex-cli subscribe orderbook --symbol ETHUSDT

输出格式:

  • JSON转 标准输出 (用于解析/管道)
  • 日志到 标准错误 (连接状态、错误)

特征:

  • 通过指数回退(1秒)自动重新连接→ 30s)
  • 支持SIGINT(Ctrl+C)以实现优雅关机
  • Websocket URL: wss://ws.phemex.com (可通过以下方式配置 PHEMEX_WS_URL)

许可证

ISC