Aster Agent Gateway

io.github.alekskram由 GitHub 帳號 alekskram 發布v0.1.3更新於 Oct 24, 2026

Read-only MCP gateway to Aster DEX: 24/7 gold, oil and equity perps, funding with real intervals.

已驗證STDIO僅桌面金融資料與分析

概覽

AI 產生的概覽

唯讀、免金鑰的 Aster DEX 行情 MCP 閘道,提供合約與現貨、資金費率、訂單簿、K 線、金庫資金流與標記價對指數價價差資料。

可以做什麼
  • 瀏覽市場與交易對:合約與現貨總覽、含篩選與精度規則的交易對清單
  • 檢視市場微觀結構:訂單簿、依最新價/標記價/指數價取得 K 線、近期成交
  • 分析資金費率:含各市場不同結算週期與上下限的費率總覽、年化費率篩選器
  • 篩選 TradFi 永續(金屬、能源、股票、公債、外匯),並依標記價與指數價價差排名
  • 查看未平倉量快照,以及 Solana 與選用 EVM 鏈上的金庫存款流
  • 依地址查詢公開帳戶餘額、掛單與成交紀錄
適用情境
適合讓助理研究 Aster DEX 市場、比較不同 1 至 8 小時結算週期的資金費率,或追蹤 24/7 交易的 TradFi 永續與現貨交易對,而不必自行撰寫 API 程式或持有金鑰。
執行需求
以 Python 套件透過 uvx 在本機執行(需 Python 工具鏈);預設 stdio,也可用本機 HTTP 模式監聽 8904 埠。不需 API 金鑰或帳戶。需能連線 Aster 公開端點與 Solana RPC;EVM 金庫日誌需選用設定 ASTER_EVM_RPC_URL(或依鏈區分的變體)。
安裝前請注意
所有工具皆為唯讀且免金鑰,但資料來自第三方公開端點,可能過期或無法取得(快取回應附時間欄位,null 代表無法取得)。帳戶查詢僅適用公開地址,且常因隱私設定回傳錯誤。EVM 金庫查詢需自備 RPC 網址,免費公開 RPC 會拒絕。內容不構成交易建議。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Aster Agent Gateway,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

aster-agent-gateway

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

Aster lists roughly 580 futures, and about 32 of them are things you would not expect on a crypto DEX: gold, oil, treasuries, single equities and index perps that trade 24/7 while the underlying market sleeps. This MCP server puts the whole board, plus ~68 spot pairs, funding, order books, klines and vault deposit flows, in front of an AI agent. Read-only and keyless; public endpoints only (fapi.asterdex.com/fapi/v3, sapi.asterdex.com/api/v3, tapi.asterdex.com/info, Solana RPC, optional EVM RPCs), cached and rate-limited.

Use cases

Funding first, because this is where Aster is different. Intervals vary per market, 1h to 8h; annualize naively and an 8h market reads 8x too cold. The screener computes every row from its own interval and shows cap/floor next to it, so a 4,148%/yr print comes with the context that explains it.

Then the TradFi board at 3am: gold at $4,365 with live volume, oil paying longs to hold (negative funding, -0.0001%/1h when we looked), Micron up 4.8% overnight. One API, same conventions as the crypto rows.

mark_index_divergence ranks all ~756 markets by mark-vs-index spread. The morning we captured it, RTXUSDT topped both that board (505 bps rich) and the funding board at once, which is the classic pre-squeeze picture. Vault deposit flows show who parks capital where; OI snapshots are per-symbol and honest about the fact that Aster has no keyless OI history.

Full walkthroughs: examples/use-cases.md.

Quickstart

Claude Code:

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

stdio (default, for local agents):

bash
uvx aster-agent-gateway

or from a checkout:

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

Claude Desktop / Cursor config:

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

Hosted form, streamable HTTP on port 8904:

bash
uvx aster-agent-gateway --http             # 127.0.0.1:8904curl http://127.0.0.1:8904/health   # -> {"ok": true, "service": "aster-agent-gateway", ...}
Codex (~/.codex/config.toml)
toml
[mcp_servers.aster]command = "uvx"args = ["aster-agent-gateway"]
ZCode: register the server (copy-paste)
bash
# 1) start the gateway (keep it running)uvx aster-agent-gateway --http --port 8904 &
# 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", {})["aster"] = {    "type": "http", "url": "http://127.0.0.1:8904/mcp"}json.dump(cfg, open(p, "w"), indent=2)print("aster-agent-gateway registered:", p)PY

Tools

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

#ToolSignatureWhat it does
1market_overviewmarket_overview(limit=20, sort="volume")Futures panel from ONE ticker/24hr ALL call joined with exchangeInfo: TRADING markets, top volumes, status counts, fresh listings (onboardDate).
2exchange_symbolsexchange_symbols(venue="futures", symbol=None, include_junk=False)Symbol universe with filters/precisions incl. MIN_NOTIONAL, stepSize, leverageFilter; TEST*/SETTLING junk filtered by default.
3order_bookorder_book(symbol, venue="futures", depth=10)fapi depth / sapi api/v3 depth; limit snapped to a priced tier (weight-aware).
4klinesklines(symbol, interval="1h", limit=100, market="futures", price_type="last")last/mark/index klines on fapi; spot via sapi.
5tradestrades(symbol, limit=20, venue="futures")Fresh keyless trades; spot path probed live (honest error dict if dead).
6spot_overviewspot_overview(limit=20)Spot pairs from sapi ticker/24hr + exchangeInfo; TEST* junk filtered.
7funding_overviewfunding_overview(limit=20, sort="rate")All ~730 rates from premiumIndex + fundingInfo: mixed 1/2/4/8h intervals (flagged), cap/floor, interestRate, nextFundingTime.
8tradfi_marketstradfi_markets(limit=20, window=None)TradFi-perp screener by asset class (metals/equity/energy/treasuries/forex) + tradfi_crypto_corr sub-block: local TradFi-vs-BTC correlation from klines.
9funding_screenerfunding_screener(top=10, direction="both")One-call ranking by annualized funding, premium, mark-index spread + funding_regime headroom to cap/floor.
10oi_snapshotoi_snapshot(symbols=None, top=10)Per-symbol openInterest (max 10 symbols/call). No keyless OI history (404) - stated honestly.
11deposit_flowsdeposit_flows(chain_filter="all", limit=20)Solana vault signatures (keyless) + EVM vault Transfers when ASTER_EVM_RPC_URL* set + deposit_stats hourly/chain buckets.
12account_viewaccount_view(address, data="balance")tapi aster_getBalance/openOrders/userFills keyless for any address; privacy-empty returns an honest error dict explaining why.
13mark_index_divergencemark_index_divergence(limit=20)mark vs index spread screener from ONE premiumIndex call + markPriceKlines-vs-klines crosscheck on the top 3.

Why a gateway and not the raw API?

Aster's fapi/sapi/tapi endpoints are plain REST. The traps are in the semantics:

Raw API gives youYou would have to build
per-market funding intervals that differ (1h to 8h)correct annualization per symbol; a naive ×24×365 overstates 8h markets by 8×
funding cap/floor fields under live vs legacy namesname negotiation with fallback (this gateway reads fundingFeeCap/FundingFeeFloor and degrades honestly)
~580 symbols mixing crypto, TradFi 24/7 perps and spotchain/asset-class filtering, spot index dislocation ranking, capacity filtering where OI is not published
three separate API surfaces (futures/spot/tapi) + Solanaone tool surface with consistent symbol handling and per-field source tags

Rate limits

Two REST buckets, locally enforced and weight-aware:

  • fapi 2400 weight/min, sapi 6000/min (header X-MBX-USED-WEIGHT-1M read after every call). Above 80% of a bucket the client self-throttles; 429 backs off honoring Retry-After; a 418 (repeated 429 = IP ban) triggers a 60s refusal cooldown. Depth/kline limits snap to priced tiers so callers cannot accidentally burn weight.
  • Solana 10 req/min, tapi 30/min, EVM 20/min local budgets (separate ledgers, fail-fast honest errors).

TTL caches: exchangeInfo 3600s, fundingInfo 600s, premiumIndex and tickers 15s, depth 5s, klines 60s, trades 10s, openInterest 30s.

Data notes

  • Every numeric from the API is a STRING upstream; parsed 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.
  • No OI history exists keyless (/futures/data/openInterestHist 404s) - the gateway says so instead of inventing data.
  • EVM vault logs need ASTER_EVM_RPC_URL (or per-chain ASTER_EVM_RPC_URL_{BSC,ETH,ARB}); free public RPCs reject vault queries with -32005. Unset -> honest "no RPC configured".
  • tapi account privacy: most accounts are private; empty results are reported as privacy, not as data.
  • 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-gatewayHyperliquid: 233 perps + spot, funding carry, account risk, HyperEVM
aster-agent-gateway (you are here)Aster 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,提交 6f9c622

工具

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 分