Skip to main content
Glama
t3rmed

Hyperliquid MCP Server

by t3rmed

Hyperliquid MCP Server

A Model Context Protocol (MCP) server for interacting with the Hyperliquid DEX. This server provides tools for retrieving market data, managing positions, and executing trades on Hyperliquid.

Built with Python 3.11+ and uv package manager, with full Docker support for easy deployment.

Features

Market Data Tools

  • get_all_mids - Get current mid prices for all coins

  • get_l2_book - Get L2 order book snapshot for a specific coin

  • get_candle_snapshot - Get historical candle data

Account Information Tools

  • get_open_orders - Get all open orders

  • get_user_fills - Get trading history (fills)

  • get_user_fills_by_time - Get fills for a specific time range

  • get_portfolio - Get portfolio information including PnL and margin

Trading Tools

  • place_order - Place limit orders

  • place_trigger_order - Place stop-loss or take-profit orders

  • cancel_order - Cancel specific orders

  • cancel_all_orders - Cancel all open orders

Installation

Prerequisites

  • Python 3.11 or higher

  • uv package manager

  • Docker (optional, for containerized deployment)

Local Installation

  1. Clone this repository

  2. Install dependencies with uv:

    uv sync
  3. Run the server:

    uv run python -m hyperliquid_mcp_server.main

Docker Installation

  1. Clone this repository

  2. Build and run with Docker Compose:

    # Production mode
    make build && make run
    
    # Or using docker-compose directly
    docker-compose up --build
  3. For development with hot reloading:

    # Development mode
    make dev
    
    # Or using docker-compose directly
    docker-compose --profile dev up --build

Configuration

Configure the server using environment variables:

Required for Trading Operations

  • HYPERLIQUID_PRIVATE_KEY - Your wallet's private key (with 0x prefix)

Optional

  • HYPERLIQUID_WALLET_ADDRESS - Your wallet address (derived from private key if not provided)

  • HYPERLIQUID_TESTNET - Set to "true" for testnet, "false" or unset for mainnet

Example Environment Setup

Create a .env file (not recommended for production):

HYPERLIQUID_PRIVATE_KEY=0x1234567890abcdef...
HYPERLIQUID_WALLET_ADDRESS=0xabcdef1234567890...
HYPERLIQUID_TESTNET=true

Usage

Using Make Commands

The project includes a Makefile for common operations:

# Install dependencies
make install

# Run locally (without Docker)
make local

# Build Docker image
make build

# Run in production mode
make run

# Run in development mode
make dev

# Run tests
make test

# Format code
make format

# Clean up Docker resources
make clean

Manual Commands

# Local development
uv run python -m hyperliquid_mcp_server.main

# Docker production
docker-compose up --build

# Docker development
docker-compose --profile dev up --build

With Claude Desktop

Add this server to your Claude Desktop configuration:

Local Installation

{
  "mcpServers": {
    "hyperliquid": {
      "command": "uv",
      "args": ["run", "python", "-m", "hyperliquid_mcp_server.main"],
      "cwd": "/path/to/hyperliq-mcp",
      "env": {
        "HYPERLIQUID_PRIVATE_KEY": "0x...",
        "HYPERLIQUID_TESTNET": "true"
      }
    }
  }
}

Docker Installation

{
  "mcpServers": {
    "hyperliquid": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--env-file", ".env", "hyperliquid-mcp-server:latest"],
      "cwd": "/path/to/hyperliq-mcp"
    }
  }
}

API Reference

Market Data

get_all_mids

Get current mid prices for all coins.

{}

get_l2_book

Get L2 order book for a specific coin.

{
  "coin": "BTC",
  "nSigFigs": 3
}

get_candle_snapshot

Get historical candle data.

{
  "coin": "BTC",
  "interval": "1h",
  "startTime": 1640995200000,
  "endTime": 1641081600000
}

Account Information

get_open_orders

Get open orders for the configured wallet or a specific user.

{
  "user": "0x..." // optional
}

get_user_fills

Get trading history.

{
  "user": "0x..." // optional
}

get_portfolio

Get portfolio information.

{
  "user": "0x..." // optional
}

Trading

place_order

Place a limit order.

{
  "assetIndex": 0,
  "isBuy": true,
  "price": "50000",
  "size": "0.1",
  "timeInForce": "Gtc",
  "reduceOnly": false,
  "clientOrderId": "my-order-1"
}

place_trigger_order

Place a trigger order (stop-loss/take-profit).

{
  "assetIndex": 0,
  "isBuy": false,
  "size": "0.1",
  "triggerPrice": "45000",
  "isMarket": true,
  "triggerType": "sl",
  "reduceOnly": true
}

cancel_order

Cancel a specific order.

{
  "assetIndex": 0,
  "orderId": 12345
}

cancel_all_orders

Cancel all open orders.

{}

Security Notes

  • Never share your private key

  • Use testnet for development and testing

  • Consider using environment variables or secure secret management for production

  • This server requires your private key to sign trading transactions

  • Read-only operations (market data, account info) work without a private key

Asset Indices

Common asset indices for Hyperliquid:

  • BTC: 0

  • ETH: 1

  • SOL: 2

  • (Check Hyperliquid documentation for complete list)

Error Handling

The server includes comprehensive error handling:

  • Invalid configurations are reported on startup

  • API errors are caught and returned with descriptive messages

  • Network timeouts are handled gracefully

  • Input validation prevents malformed requests

Development

Project Structure

hyperliquid_mcp_server/
├── main.py              # Main MCP server
├── types/
│   └── hyperliquid.py   # Pydantic type definitions
├── utils/
│   ├── hyperliquid_client.py  # API client
│   └── config.py        # Configuration management
└── tools/
    ├── market_data.py   # Market data tools
    ├── account_info.py  # Account information tools
    └── trading.py       # Trading tools

Development Setup

# Install dependencies
uv sync

# Install with development dependencies
uv sync --extra dev

# Run tests
uv run pytest

# Format code
uv run black .
uv run isort .

# Lint code
uv run ruff check .
uv run mypy .

Docker Development

# Development mode with hot reloading
make dev

# Shell into container
make shell

# View logs
make logs

License

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/t3rmed/hyperliquid-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server