MCP server for trade.xyz — analysis and trading of the xyz HIP-3 markets (xyz:AAPL, xyz:GOLD, ...) on Hyperliquid, with in-code guardrails. Fork of hyperliquid-mcp.
Project description
mcpxyz — MCP server for trade.xyz (HIP-3 on Hyperliquid)
An MCP server that lets an AI assistant (Claude
Desktop, Claude Code, …) analyse and trade the xyz markets — tokenized equities,
commodities and indices like xyz:AAPL, xyz:GOLD, xyz:NVDA, xyz:XYZ100 —
exposed by trade.xyz.
trade.xyz has no proprietary API: it is a UI over the xyz HIP-3 perp dex
deployed on Hyperliquid. Everything here goes through the standard Hyperliquid API,
with markets namespaced xyz:.
⚠️ Not financial advice. Trading involves risk of loss. Use at your own risk.
Safety model
This server signs financial transactions, so guardrails are enforced in code (not via the prompt):
- Read-only by default — no order is signed unless
READ_ONLY=falseand a key is set. - Delegated API wallet only — use a Hyperliquid API wallet (no withdrawal rights). The
withdrawtool has been removed entirely. - Asset whitelist — writes are limited to
ALLOWED_ASSETS(empty ⇒ all writes blocked). - Per-order caps —
MAX_ORDER_SIZE,MAX_ORDER_NOTIONAL_USD,MAX_LEVERAGE. - Two-step orders —
place_orderreturns a preview + token; nothing is signed until you callconfirm_order. - Kill switch —
cancel_all_ordersis always available and never whitelisted.
See SECURITY.md for the full policy and key-handling guidance.
Tools
Market data (read-only): get_market_data, get_candle_data, get_l2_orderbook,
get_funding_rates, calculate_min_order_size.
Account: get_positions (xyz isolated margin account), get_spot_user_state,
get_user_fees, update_leverage, transfer (move collateral between core / spot / xyz).
Orders: place_order (preview) → confirm_order, cancel_order,
cancel_all_orders, bulk_cancel_orders, modify_order, get_open_orders,
get_order_status, get_user_fills, get_user_fills_by_time.
Assets are accepted namespaced (xyz:AAPL) or bare (AAPL, apple) — they are
normalized automatically.
Install
# from PyPI (once published)
uvx mcpxyz
# or from source
uvx --from git+https://github.com/akugone/mcp-xyz mcpxyz
Get a delegated API wallet
- In the Hyperliquid / trade.xyz UI, create an API wallet (a.k.a. agent wallet). It can trade but cannot withdraw funds.
- Copy its private key. This is what you put in
HYPERLIQUID_PRIVATE_KEY— never your main account key.
Claude Desktop config
Configuration lives in claude_desktop_config.json (there is no .env to fill
as an end user). Generate a ready-to-paste snippet with:
mcpxyz init # analysis only (read-only)
mcpxyz init --trading # with a trading env block to fill in
Then merge the xyz entry into the mcpServers object and fully restart Claude
Desktop. The two cases:
Analysis only — zero config, no key:
{
"mcpServers": {
"xyz": { "command": "uvx", "args": ["mcpxyz"] }
}
}
Reads (prices, funding, candles, orderbook) work immediately. No key ⇒ fully read-only, no order can be placed.
Trading — add your own delegated API wallet key:
{
"mcpServers": {
"xyz": {
"command": "uvx",
"args": ["mcpxyz"],
"env": {
"HYPERLIQUID_PRIVATE_KEY": "0x<your_delegated_api_wallet_key>",
"HYPERLIQUID_USER_ADDRESS": "0x<your_main_account_address>",
"READ_ONLY": "false",
"ALLOWED_ASSETS": "xyz:*",
"MAX_ORDER_NOTIONAL_USD": "100"
}
}
}
}
ALLOWED_ASSETS: "xyz:*" allows trading every xyz market. To restrict trading to
specific markets, list them instead, e.g. "xyz:AAPL,xyz:GOLD".
Your key stays on your machine — it is only read from this env block (or, for
local development, a gitignored .env) and never sent anywhere.
Environment variables
| Variable | Default | Description |
|---|---|---|
HYPERLIQUID_PRIVATE_KEY |
— | Delegated API wallet key. Empty ⇒ read-only. |
HYPERLIQUID_USER_ADDRESS |
wallet addr | Address to query positions/fills for. |
HYPERLIQUID_TESTNET |
false |
Use testnet instead of mainnet. |
READ_ONLY |
true |
Must be false (and a key set) to sign anything. |
XYZ_DEX |
xyz |
HIP-3 perp dex namespace. |
ALLOWED_ASSETS |
— | Comma-separated whitelist for writes (e.g. xyz:AAPL,xyz:GOLD). xyz:* allows all xyz markets. Empty ⇒ writes blocked. Reads are never restricted. |
MAX_ORDER_SIZE |
— | Max size per order. |
MAX_ORDER_NOTIONAL_USD |
— | Max notional (USD) per order. |
MAX_LEVERAGE |
— | Max leverage for update_leverage. |
HYPERLIQUID_MCP_SHOW_LOGS |
false |
Keep false in production. |
Usage flow
- Explore read-only:
get_market_data xyz:AAPL→ candles → L2 → funding. - Check
get_positions. place_order(limit, away from the price) → review the preview →confirm_order.cancel_order/cancel_all_orders.
Validation & tests
uv run pytest— offline unit tests (guardrails, models, tool registration, order flow).- Write-path validation on testnet: see docs/VALIDATION.md and
scripts/validate_testnet.py.
Transports
mcpxyz # stdio (default)
mcpxyz --transport http --port 3000
mcpxyz --transport sse --port 3000
Credits & license
Fork of midodimori/hyperliquid-mcp (MIT). Adapted for the trade.xyz HIP-3 markets with in-code guardrails. Licensed under MIT.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcpxyz-0.1.1.tar.gz.
File metadata
- Download URL: mcpxyz-0.1.1.tar.gz
- Upload date:
- Size: 209.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
391a80485a454c5786611dbd27233c52779d7289cb08e9aad6ee656c789e605e
|
|
| MD5 |
412375fb566b5f35260ee870f6945994
|
|
| BLAKE2b-256 |
45a3e57b192f7a2c6de3e05f533a6632fc9e57e7ad3badcc78043f0f9a18795c
|
File details
Details for the file mcpxyz-0.1.1-py3-none-any.whl.
File metadata
- Download URL: mcpxyz-0.1.1-py3-none-any.whl
- Upload date:
- Size: 34.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b26077d022f8eeccdf608cc303ff2c8ad5ed1475a9af8867fde95eba6f62e3d8
|
|
| MD5 |
a44c1be01fddf737f748c00a9e7d44f9
|
|
| BLAKE2b-256 |
b9cc8bca1047e979efa1849af6f140c8d6c77401cc8ed7dfcbc128a46ccfb16b
|