okx mcp

Local 2025-09-01 00:35:23 0

Provides real-time cryptocurrency price data from OKX exchange through a Model Context Protocol interface, allowing access to historical candlestick data and current market prices for any trading instrument.


A Model Context Protocol server that provides real-time cryptocurrency price data from OKX exchange.

Features

This MCP server connects to the OKX API to provide cryptocurrency price information through a simple tool interface. It includes comprehensive error handling, request logging, and rate limiting via OKX's API.

Tools

get_candlesticks

Retrieves historical candlestick (OHLCV) data for any instrument on OKX.

  • Input:
  • instrument: String (required) - Instrument ID (e.g. "BTC-USDT")
  • bar: String (optional) - Time interval (e.g. "1m", "5m", "1H", "1D"), default "1m"
  • limit: Number (optional) - Number of candlesticks to return (max 100), default 100
  • Output: Array of JSON objects, each containing:
  • timestamp: ISO timestamp of the candlestick
  • open: Opening price
  • high: Highest price
  • low: Lowest price
  • close: Closing price
  • volume: Trading volume
  • volumeCurrency: Volume in currency terms

Example usage:

[
  {
    "timestamp": "2025-03-07T17:00:00.000Z",
    "open": "87242.8",
    "high": "87580.2",
    "low": "86548.0",
    "close": "87191.8",
    "volume": "455.72150427",
    "volumeCurrency": "39661166.242091111"
  }
]

get_price

Fetches the latest price and 24-hour market data for any instrument on OKX.

  • Input:
  • instrument: String (required) - Instrument ID (e.g. "BTC-USDT")
  • Output: JSON object containing:
  • instrument: The requested instrument ID
  • lastPrice: Latest trade price
  • bid: Current best bid price
  • ask: Current best ask price
  • high24h: 24-hour high price
  • low24h: 24-hour low price
  • volume24h: 24-hour trading volume
  • timestamp: ISO timestamp of the data

Example usage:

{
  "instrument": "BTC-USDT",
  "lastPrice": "65432.1",
  "bid": "65432.0",
  "ask": "65432.2",
  "high24h": "66000.0",
  "low24h": "64000.0",
  "volume24h": "1234.56",
  "timestamp": "2024-03-07T17:22:28.000Z"
}

Development

Install dependencies:

npm install

Build the server:

npm run build

For development with auto-rebuild:

npm run watch

Installation

To use with Claude Desktop or VSCode, add the server config to your MCP settings:

macOS (VSCode):

~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

macOS (Claude Desktop):

~/Library/Application Support/Claude/claude_desktop_config.json

Windows (VSCode):

%APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Windows (Claude Desktop):

%APPDATA%/Claude/claude_desktop_config.json

Configuration:

{
  "mcpServers": {
    "okx": {
      "command": "node",
      "args": ["/path/to/okx-mcp-server/build/index.js"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

Error Handling

The server implements comprehensive error handling:

  • Network errors are captured and returned with context
  • Invalid instrument IDs return appropriate error messages
  • API rate limits are respected through axios timeout configuration
  • All errors are logged for debugging purposes
[
  {
    "description": "Get latest price for an OKX instrument",
    "inputSchema": {
      "properties": {
        "instrument": {
          "description": "Instrument ID (e.g. BTC-USDT)",
          "type": "string"
        }
      },
      "required": [
        "instrument"
      ],
      "type": "object"
    },
    "name": "get_price"
  },
  {
    "description": "Get candlestick data for an OKX instrument",
    "inputSchema": {
      "properties": {
        "bar": {
          "default": "1m",
          "description": "Time interval (e.g. 1m, 5m, 1H, 1D)",
          "type": "string"
        },
        "instrument": {
          "description": "Instrument ID (e.g. BTC-USDT)",
          "type": "string"
        },
        "limit": {
          "default": 100,
          "description": "Number of candlesticks (max 100)",
          "type": "number"
        }
      },
      "required": [
        "instrument"
      ],
      "type": "object"
    },
    "name": "get_candlesticks"
  }
]