Hyperliquid Agent Gateway

io.github.alekskram由 GitHub 账号 alekskram 发布v0.1.3更新于 Oct 24, 2026

Read-only MCP gateway to Hyperliquid: liquidation distance, funding carry, HyperEVM flows. No keys.

已验证STDIO仅桌面数据库金融数据与分析

概览

AI 生成的概览

只读的 Hyperliquid MCP 网关,提供行情、资金费率、账户风险与 HyperEVM 链上数据,无需密钥或签名。

可以做什么
通过 Hyperliquid 公开接口提供十二个只读工具:永续与现货市场概览、报价、订单簿、K 线、成交、资金费率历史以及资金费率套利筛选器。账户类工具涵盖清算风险、交易者活动与钱包余额,另有 HyperEVM ERC-20 代币转账查询。所有请求都带缓存和限流,失败时返回结构化错误字典而非堆栈信息。
适用场景
适合需要读取 Hyperliquid 永续或现货行情、筛选资金费率、查看某地址的持仓与清算距离,或追踪 HyperEVM 代币流向的场景。仅用于分析与监控,无法下单、签名或修改任何数据。
运行要求
需要本地 Python 运行环境,通过 uvx 安装运行(也可从代码仓库用 uv 运行)。需要网络访问 api.hyperliquid.xyz 与 rpc.hyperliquid.xyz。未声明任何 API 密钥、账户或环境变量。仅支持桌面端;可选本地 HTTP 模式监听 8903 端口。
安装前请注意
设计上为只读:无密钥、无签名、无写入。传给工具的地址与合约地址会发送到 Hyperliquid 公开接口,应按公开数据处理。限流在本地执行(/info 每分钟 1200 权重,HyperEVM RPC 每分钟 100 次请求),超限会直接报错。清算距离与标记价格可能是带标记的估算值,未映射的 ERC-20 代币小数位按 18 假设。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Hyperliquid Agent Gateway,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

hyperliquid-agent-gateway

[CI] [PyPI] [PyPI downloads] [MCP Catalog] [License: MIT] [Python 3.11+]

Hyperliquid puts about 233 perps, 326 spot pairs and a whole EVM chain in front of you, all readable through public endpoints. This MCP server does the reading for your agent: market and funding data, per-account risk, trader activity, HyperEVM (chain 999) token transfers. No keys, no signing, no writes; everything goes through api.hyperliquid.xyz/info and rpc.hyperliquid.xyz/evm, cached and rate-limited so an enthusiastic agent cannot hammer the upstream.

Use cases

The liquidation tool is the one people come for. Feed it any address and you get the margin summary, per-position leverage, and the distance to liquidation; when the venue publishes liquidationPx you get the real number, flagged as such, and when it doesn't you get an estimate that says it is one. We tested it on a $209M-notional 25x short book the day it was 17.6% from the cliff.

Funding: funding_carry_screener ranks all 233 perps from a single call and then fetches 168h of history only for the top few, because the API's weight budget (1200/min) punishes naivety. You see whether a rate is a spike or a regime.

HyperEVM transfers tie on-chain flow back to the perp markets; quote returns a book-derived mid that never leaves [bid, ask]; trader_activity dissects any address into fills, fees, win-rate, funding drag and open positions.

Full walkthroughs: examples/use-cases.md.

Quickstart

Claude Code:

bash
claude mcp add hyperliquid -- uvx hyperliquid-agent-gateway

stdio (default, for local agents):

bash
uvx hyperliquid-agent-gateway

or from a checkout:

bash
git clone https://github.com/alekskram/hyperliquid-agent-gatewaycd hyperliquid-agent-gatewayuv syncuv run hyperliquid-agent-gateway

Claude Desktop / Cursor config:

json
{  "mcpServers": {    "hyperliquid": {      "command": "uvx",      "args": ["hyperliquid-agent-gateway"]    }  }}

Hosted form, streamable HTTP on port 8903:

bash
uvx hyperliquid-agent-gateway --http             # 127.0.0.1:8903curl http://127.0.0.1:8903/health   # -> {"ok": true, "service": "hyperliquid-agent-gateway", ...}
Codex (~/.codex/config.toml)
toml
[mcp_servers.hyperliquid]command = "uvx"args = ["hyperliquid-agent-gateway"]
ZCode: register the server (copy-paste)
bash
# 1) start the gateway (keep it running)uvx hyperliquid-agent-gateway --http --port 8903 &
# 2) register it (merges into ~/.zcode/cli/config.json)python3 - <<'PY'import json, osp = os.path.expanduser("~/.zcode/cli/config.json")os.makedirs(os.path.dirname(p), exist_ok=True)cfg = json.load(open(p)) if os.path.exists(p) else {}cfg.setdefault("mcp", {}).setdefault("servers", {})["hyperliquid"] = {    "type": "http", "url": "http://127.0.0.1:8903/mcp"}json.dump(cfg, open(p, "w"), indent=2)print("hyperliquid-agent-gateway registered:", p)PY

Tools

All 12 tools are read-only (annotated readOnlyHint: true, destructiveHint: false, openWorldHint: true).

#ToolSignatureWhat it does
1market_overviewmarket_overview(limit=20, sort="open_interest")Perp market snapshot from ONE metaAndAssetCtxs call: per-coin mark, open interest, day volume, premium, max leverage + totals. sort in {open_interest, volume, premium}.
2spot_overviewspot_overview(limit=20)Spot pairs from spotMeta + ctxs with HIP-1 to ERC-20 links; @{index} names resolved to readable token names.
3quotequote(coin)Bid/ask/mid/spread + top-of-book sizes from l2Book. mid is the book midpoint (bid+ask)/2 when both sides exist (mid_source: "book"); allMids is only a labeled fallback when the book lacks a side (mid_source: "allMids"); mid_source: null when neither knows the coin. With both sides present mid never leaves [bid, ask]. coin is the ONLY parameter (no size/limit). Unknown coin raises with 5 examples.
4order_bookorder_book(coin, depth=10)Book levels per side with nSigFigs aggregation and per-side total liquidity.
5candlescandles(coin, interval="1h", limit=100)OHLCV rows newest-first; intervals 1m/15m/1h/4h/1d/1w/1M; startTime computed from limit.
6tradestrades(coin, limit=20)Recent public fills WITH both sides' addresses (users: [maker, taker]).
7funding_historyfunding_history(coin, limit=100)Hourly funding rows + premium_now from the live asset ctx.
8liquidation_riskliquidation_risk(address)Per-account risk: margin summary, cross maintenance margin, per-position leverage + liquidationPx when published; when null, an explicitly flagged ESTIMATED distance from the maintenance-margin ratio. Mark px is resolved per coin from metaAndAssetCtxs (fallback allMids) because live positions carry no markPx - see mark_px_source on each row. Includes funding drag.
9trader_activitytrader_activity(address, limit=50)Fills PnL/fees/volume/win-rate, funding net, open positions, per-coin breakdown.
10funding_carry_screenerfunding_carry_screener(topN=10, metric="premium")Ranks ALL perps from ONE call; fundingHistory fetched only for the topN (weight economy).
11token_transferstoken_transfers(contract, limit=100, from_block=None)HyperEVM ERC-20 Transfer logs via adaptive-window eth_getLogs; rows carry from/to/value/txHash/blockNumber/ts with per-token decimals + decimals_source (static map or assumed_18).
12wallet_balancewallet_balance(address)Native (eth_getBalance) + up to 20 ERC-20s (eth_call balanceOf, resolved from spotMeta) + Hyperliquid spot balances; every row carries decimals/decimals_source.

Why a gateway and not the raw API?

api.hyperliquid.xyz/info is open and one POST away. The traps start after that:

Raw API gives youYou would have to build
two mid-price sources that disagree (allMids vs l2Book)the discipline of book-derived mids that never leave [bid, ask], with labeled fallbacks
candleSnapshot whose cache key ignores nested request paramsper-coin cache isolation (a naive first-coin key poisons every subsequent coin for the TTL)
OI in base units, funding as an hourly rateunit normalization (×price), annualized carry math, a one-call screener that fetches history only for the top-N
live positions that carry no markPxper-coin mark resolution with a mark_px_source tag on every row, plus estimated-vs-published liquidation distance flags
raw HyperEVM RPCsadaptive-window eth_getLogs, decimals resolution with decimals_source provenance

Rate limits

Two independent, locally enforced budgets protect the upstream:

/info - 1200 weight per rolling 60s (Hyperliquid's documented weight pricing), tracked per request type:

typeweight
allMids2
l2Book2
meta, metaAndAssetCtxs, spotMeta, spotMetaAndAssetCtxs20
recentTrades, clearinghouseState, userFills, userFunding, spotClearinghouseState20
fundingHistory20 base + extra per 20 items beyond the first
candleSnapshot60

When the next request would exceed the budget the client waits once (<=5s) for the window to roll, then raises a clear error naming the limit - it never sleep-blocks forever.

HyperEVM RPC - 100 requests per rolling 60s (flat 1 per request), enforced separately from /info. Over-budget calls raise immediately (rpc-limit) - tools surface an honest error dict, and wallet_balance stops its ERC-20 scan at the cap.

TTL caches also dedupe repeated calls per data type: allMids 15s, recentTrades 15s, l2Book 5s, metaAndAssetCtxs 60s, spotMeta 3600s, spotMetaAndAssetCtxs 60s, candleSnapshot 300s, fundingHistory 300s, per-address account types 60s.

Data notes

  • Every numeric from the API is a STRING upstream; the gateway parses them with a never-raising helper - null always means "not available", never zero.
  • Every upstream failure returns an error dict {"error": ..., "source": ..., "reason": ...}, never a traceback; partial data degrades field-by-field with warnings[].
  • liquidation_risk never invents a liquidation price: when the venue publishes none, liq_px stays null and the distance is an explicitly flagged estimate (formula in the tool's note). Mark px is likewise never invented: live positions carry no markPx, so it is resolved from metaAndAssetCtxs (fallback allMids) and the row's mark_px_source says which; no source -> null.
  • funding_drag / funding_net: the venue's userFunding returns only NON-ZERO funding events, so a live null/empty for a fresh or quiet address is expected behaviour, not a bug.
  • ERC-20 amounts use a static decimals map for canonical HyperEVM tokens (6 for USDC/USDT-style, 18 for PURR/HYPE); unknown tokens assume 18 and every row says decimals_source: "assumed_18" - do not trust 6dp precision for unmapped tokens.
  • Cached responses carry age_seconds / fetched_at freshness fields.

Part of the suite

Four sibling read-only MCP gateways, one style: keyless, cached, honest degradation.

GatewayFocus
dydx-agent-gatewaydYdX v4: verified trader PnL, funding/OI anomaly detectors, leaderboard
arcus-agent-gateway194 tokenized US equities on Robinhood Chain: quotes, holders, whale transfers
hyperliquid-agent-gateway (you are here)Hyperliquid: 233 perps + spot, funding carry, account risk, HyperEVM
aster-agent-gatewayAster DEX: ~580 futures incl. 24/7 TradFi perps, funding caps/floors

All four are on glama.ai and PyPI; any of them installs with uvx <name>.

License

MIT.

来源:README.md,提交 2e9ad8c

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

2
  1. v0.1.3最新Sep 23, 2026
  2. v0.1.2Sep 22, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分