Pyth Pro MCP Server

Real-time and historical price feeds for 500+ crypto, equities, FX, and commodities assets.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,024Tokens (tool definitions)
~2.4 KBTypical response size
Moderate attention impact (1.58% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.pyth.network/mcp"
    }
  }
}

Remote endpoints

https://mcp.pyth.network/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

ðŸŸĒ Read-onlyðŸŸĄ WriteðŸ”ī Delete⚩ Unknown
ðŸŸĒget_symbols(asset_type, limit, offset, query)

List available Pyth Pro price feeds. Use this FIRST to discover what feeds exist before calling get_latest_price, get_historical_price, or get_candlestick_data. Filter by asset_type (crypto, equity, fx, metal, rates, commodity, funding-rate) or search by name/symbol. Returns feed metadata including pyth_lazer_id (needed for get_historical_price), symbol, asset_type, and exponent.

Input Schema

{
  "type": "object",
  "properties": {
    "asset_type": {
      "type": "string",
      "enum": [
        "crypto",
        "fx",
        "equity",
        "metal",
        "rates",
        "commodity",
        "funding-rate"
      ],
      "description": "Filter by asset type: crypto, fx, equity, metal, rates, commodity, funding-rate"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "default": 50,
      "description": "Results per page (default 50, max 200)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Pagination offset (default 0)"
    },
    "query": {
      "type": "string",
      "description": "Text filter (e.g. 'BTC', 'gold', 'AAPL')"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
ðŸŸĒconvert_date_to_timestamp(date_string)

Convert a date string to Unix timestamp for use with get_historical_price and get_candlestick_data. Use this tool when you need to compute timestamps — do not calculate Unix timestamps manually. Accepts ISO 8601 dates (e.g. '2026-01-01', '2026-01-01T12:00:00Z'). Returns seconds, microseconds, ISO 8601, and whether the date is within the available data range (April 2025 onward).

Input Schema

{
  "type": "object",
  "properties": {
    "date_string": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Date to convert. Must be ISO 8601 / RFC 3339 with timezone (e.g. '2026-01-01T00:00:00Z', '2026-01-01'). Bare dates without timezone are interpreted as UTC."
    }
  },
  "required": [
    "date_string"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
ðŸŸĒget_candlestick_data(access_token, channel, from, resolution, symbol, ...)

Fetch OHLC candlestick data for a symbol. Pass your Pyth Pro `access_token` to authenticate the request. Use for charting, technical analysis, backtesting. IMPORTANT: The symbol must be the full name from get_symbols including the asset type prefix (e.g. 'Crypto.BTC/USD', 'Equity.US.AAPL', 'FX.EUR/USD') — never use bare names like 'BTC/USD'. Historical data is available from April 2025 onward — do not request timestamps before that. Resolutions: 1/5/15/30/60 minutes, 120/240/360/720 (multi-hour), D (daily), W (weekly), M (monthly). Timestamps are Unix seconds. Timestamp reference (Unix seconds): 2025-04-01 (earliest available) = 1743465600 2026-01-01 = 1767225600 2026-06-01 = 1780272000 Always double-check your timestamp math — year-boundary errors are common.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "minLength": 1,
      "description": "Pyth Pro access token used to authenticate the request. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token"
    },
    "channel": {
      "type": "string",
      "pattern": "^(real_time|fixed_rate@\\d+ms)$",
      "description": "Override default channel (e.g. fixed_rate@200ms, real_time, fixed_rate@50ms, fixed_rate@1000ms)"
    },
    "from": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "Start time (Unix seconds)"
    },
    "resolution": {
      "type": "string",
      "enum": [
        "1",
        "5",
        "15",
        "30",
        "60",
        "120",
        "240",
        "360",
        "720",
        "D",
        "W",
        "M"
      ],
      "description": "Candle size: 1, 5, 15, 30, 60 (minutes), 120, 240, 360, 720 (hours), D (daily), W (weekly), M (monthly)"
    },
    "symbol": {
      "type": "string",
      "minLength": 1,
      "description": "Full symbol from get_symbols including asset type prefix (e.g. 'Crypto.BTC/USD', not 'BTC/USD')"
    },
    "to": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "description": "End time (Unix seconds)"
    }
  },
  "required": [
    "from",
    "resolution",
    "symbol",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
ðŸŸĒget_historical_price(access_token, channel, price_feed_ids, symbols, timestamp)

Get price data for specific feeds at a historical timestamp. Pass your Pyth Pro `access_token` to authenticate the request. Use get_symbols first to find feed IDs or symbols. If both price_feed_ids and symbols are provided, only price_feed_ids are used. Accepts Unix seconds, milliseconds, or microseconds (auto-detected). Historical data is available from April 2025 onward — do not request timestamps before that. The timestamp is internally converted to microseconds and aligned (rounded down) to the channel rate — e.g. for fixed_rate@200ms, it must be divisible by 200,000ξs. Prices are integers with an exponent field — human-readable price = price * 10^exponent. Pre-computed display_price fields are included for convenience. Timestamp reference: 2025-04-01 (earliest available) = 1743465600 2026-01-01 = 1767225600 2026-06-01 = 1780272000 Always double-check your timestamp math — year-boundary errors are common.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "minLength": 1,
      "description": "Pyth Pro access token used to authenticate the request. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token"
    },
    "channel": {
      "type": "string",
      "pattern": "^(real_time|fixed_rate@\\d+ms)$",
      "description": "Override default channel (e.g. fixed_rate@200ms, real_time, fixed_rate@50ms, fixed_rate@1000ms)"
    },
    "price_feed_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0
      },
      "maxItems": 50,
      "description": "Numeric feed IDs from get_symbols"
    },
    "symbols": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "description": "Full symbol names from get_symbols including asset type prefix (e.g. ['Crypto.BTC/USD', 'Equity.US.AAPL/USD'])"
    },
    "timestamp": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Unix timestamp — accepts seconds, milliseconds, or microseconds (auto-detected by magnitude)"
    }
  },
  "required": [
    "timestamp"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
ðŸŸĒget_latest_price(access_token, channel, price_feed_ids, properties, symbols)

Get the most recent real-time price for one or more feeds. Requires an `access_token` parameter (get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token). Use get_symbols first to find symbols or feed IDs. IMPORTANT: symbols must be the full name including asset type prefix (e.g. 'Crypto.BTC/USD', not 'BTC/USD'). If both price_feed_ids and symbols are provided, only price_feed_ids are used. Prices are integers with an exponent field — human-readable price = price * 10^exponent. Pre-computed display_price fields are included for convenience.

Input Schema

{
  "type": "object",
  "properties": {
    "access_token": {
      "type": "string",
      "minLength": 1,
      "description": "Pyth Pro access token. Get one at https://pyth.network/pricing"
    },
    "channel": {
      "type": "string",
      "pattern": "^(real_time|fixed_rate@\\d+ms)$",
      "description": "Override default channel (e.g. fixed_rate@200ms, real_time, fixed_rate@50ms, fixed_rate@1000ms)"
    },
    "price_feed_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0
      },
      "maxItems": 100,
      "description": "Numeric feed IDs from get_symbols"
    },
    "properties": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Properties to return. Default: price, bestBidPrice, bestAskPrice, confidence, exponent, publisherCount"
    },
    "symbols": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "description": "Full symbol names from get_symbols including asset type prefix (e.g. ['Crypto.BTC/USD', 'Equity.US.AAPL/USD'])"
    }
  },
  "required": [
    "access_token"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools