Bitkub Trading Mcp

by topcraftcodes

465 downloads Not rated yet

About

bitkub-trading-mcp is a Model Context Protocol server that exposes the Bitkub cryptocurrency exchange API to AI assistants. Once installed, your AI can:

Explore

Replace the two placeholder values with your real Bitkub key + secret. See Add your API key for how to generate them.

claude mcp add bitkub-trading-mcp \
  -e BITKUB_API_KEY=your_real_key_here \
  -e BITKUB_API_SECRET=your_real_secret_here \
  -- npx -y bitkub-trading-mcp

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Bitkub Trading Mcp
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Requirement: Node.js ≥ 20 (node --version to check). No clone, no build — the MCP client downloads the package on first launch via npx.

One command, no JSON editing.

If you're using Claude Desktop, or prefer to edit the config file by hand, follow the three steps below.

| Client | Config file path |
|---|---|
| Claude Code (all platforms) | ~/.claude.json (Linux/macOS/WSL) or %USERPROFILE%\.claude.json (Windows) |
| Claude Desktop — macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop — Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Desktop — Linux | ~/.config/Claude/claude_desktop_config.json |

If the file doesn't exist yet, create it with { "mcpServers": {} } as the contents.

Tools are invoked by Claude based on what you ask in plain English. The "you say" rows show the kind of prompt that triggers the tool; the "tool" rows show what gets called under the hood (you can verify with /mcp → tool history). All examples assume the server is registered and connected.

bitkub_ws_ticker_snapshot.sym

required (e.g. `btc_thb`).

bitkub_ws_order_updates.sym

/ `bitkub_ws_match_updates.sym` — optional post-filter on `data.symbol`.

bitkub_status

`GET /api/status`

bitkub_servertime

`GET /api/v3/servertime` (ms)

bitkub_symbols

`GET /api/v3/market/symbols`

bitkub_ticker

`GET /api/v3/market/ticker?sym=` — omit `sym` to fetch ALL symbols in one call

bitkub_bids

`GET /api/v3/market/bids?sym=&lmt=`

bitkub_asks

`GET /api/v3/market/asks?sym=&lmt=`

bitkub_depth

`GET /api/v3/market/depth?sym=&lmt=`

bitkub_trades

`GET /api/v3/market/trades?sym=&lmt=`

bitkub_tv_history

`GET /tradingview/history?symbol=&resolution=&from=&to=`

bitkub_balances

v4

bitkub_crypto_addresses

v4

bitkub_crypto_deposits

v4

bitkub_crypto_withdraws

v4

bitkub_fiat_accounts

v4

bitkub_fiat_deposits

v4

bitkub_fiat_withdraws

v4

bitkub_my_open_orders

v3

bitkub_my_order_history

v3

bitkub_order_info

v3

bitkub_user_limits

v3

bitkub_user_trading_credits

v3

bitkub_ws_ticker_snapshot

`market.ticker.<sym>` (public)

bitkub_ws_order_updates

`order_update` (private)

bitkub_ws_match_updates

`match_update` (private)

Workflow

Tools used (parallel)

| Tool | Endpoint |
| ------------------- | -------------------------------------------------------- |
| bitkub_status | GET /api/status |
| bitkub_servertime | GET /api/v3/servertime (ms) |
| bitkub_symbols | GET /api/v3/market/symbols |
| bitkub_ticker | GET /api/v3/market/ticker?sym= — omit sym to fetch ALL symbols in one call |
| bitkub_bids | GET /api/v3/market/bids?sym=&lmt= |
| bitkub_asks | GET /api/v3/market/asks?sym=&lmt= |
| bitkub_depth | GET /api/v3/market/depth?sym=&lmt= |
| bitkub_trades | GET /api/v3/market/trades?sym=&lmt= |
| bitkub_tv_history | GET /tradingview/history?symbol=&resolution=&from=&to= |

Bitkub v4 is used wherever it has an equivalent; v3 endpoints are kept only where v4 has not yet shipped one. v4 uses GET with query params; v3 mostly used POST with body. Auth signing is identical for v3 and v4.

| Tool | Ver | Method | Endpoint | Args (zod-validated) |
| ----------------------------- | --- | ------ | ------------------------------------- | ------------------------------------------------------------------- |
| bitkub_balances | v4 | GET | /api/v4/wallet/balances | segment? ("funding") |
| bitkub_crypto_addresses | v4 | GET | /api/v4/crypto/addresses | page? (≥1), limit? (1–200), symbol?, network?, memo? |
| bitkub_crypto_deposits | v4 | GET | /api/v4/crypto/deposits | page?, limit? (1–200), symbol?, status?, created_start?, created_end? (ISO 8601) |
| bitkub_crypto_withdraws | v4 | GET | /api/v4/crypto/withdraws | same shape as bitkub_crypto_deposits (read-only history) |
| bitkub_fiat_accounts | v4 | GET | /api/v4/fiat/accounts | page? (1–100), limit? (1–100) — must be paired |
| bitkub_fiat_deposits | v4 | GET | /api/v4/fiat/deposit/history | page?, limit? (1–100) — must be paired |
| bitkub_fiat_withdraws | v4 | GET | /api/v4/fiat/withdraw/history | page?, limit? (1–100) — must be paired (read-only history) |
| bitkub_my_open_orders | v3 | GET | /api/v3/market/my-open-orders | sym |
| bitkub_my_order_history | v3 | GET | /api/v3/market/my-order-history | sym, p?, lmt?, start?, end? |
| bitkub_order_info | v3 | GET | /api/v3/market/order-info | sym, id, sd, hash? |
| bitkub_user_limits | v3 | POST | /api/v3/user/limits | (none) |
| bitkub_user_trading_credits | v3 | POST | /api/v3/user/trading-credits | (none) |

Auth signing (v3 and v4): X-BTK-APIKEY, X-BTK-TIMESTAMP (Unix ms), X-BTK-SIGN = HMAC-SHA256 of {ts}{METHOD}{path}{?query | body}, hex lowercase. For POSTs the exact JSON bytes sent on the wire are signed.

References: <https://github.com/bitkub/bitkub-official-api-docs/blob/master/restful-api.md> · <https://github.com/bitkub/bitkub-official-api-docs/blob/master/restful-api-v4.md>

Each call opens a WebSocket, collects events for a bounded duration, then closes. Stateless — no long-lived subscriptions, no MCP notifications.

| Tool | Stream | Auth | Default / max duration |
| ---------------------------- | ------------------------------- | -------- | ---------------------- |
| bitkub_ws_ticker_snapshot | market.ticker.<sym> (public) | none | 10 s / 60 s |
| bitkub_ws_order_updates | order_update (private) | required | 30 s / 120 s |
| bitkub_ws_match_updates | match_update (private) | required | 30 s / 120 s |

Args (every tool):

- duration_ms? — int, milliseconds. Defaults and caps as in the table above.
- bitkub_ws_ticker_snapshot.sym — required (e.g. btc_thb).
- bitkub_ws_order_updates.sym / bitkub_ws_match_updates.sym — optional post-filter on data.symbol.

Response shape:

{
  "events": [/ raw Bitkub payloads, in receive order /],
  "count": 0,
  "duration_ms_actual": 30000,
  "stream": "order_update",
  "started_at": "2026-05-10T17:00:00.000Z",
  "ended_at":   "2026-05-10T17:00:30.000Z"
}

If the WS closes before the window ends, the response also includes closed_early: true and closed_reason: "...".

Race-condition note: the private streams only deliver events that occur AFTER subscribe is sent. If you want to observe an order's full lifecycle, call bitkub_ws_order_updates in parallel with the order placement — or call bitkub_order_info afterward for the authoritative final state.

Concurrency cap: Bitkub permits at most 5 concurrent private WebSocket connections per API key. The server detects "too many concurrent" closes and surfaces them with a clear message.

Excluded streams (intentional): the public market.trade. channel (Bitkub deprecates it 2026-05-18) and the public orderbook channel (uses numeric pairing_id instead of symbol; REST bitkub_depth is a better fit).

References: <https://github.com/bitkub/bitkub-official-api-docs/blob/master/websocket-api.md> · <https://github.com/bitkub/bitkub-official-api-docs/blob/master/private-websocket.md>

| Workflow | Tools used (parallel) |
|---|---|
|
"Show me BTC/THB depth, last 50 trades, and watch ticker for 10s. Tell me if it's a good time to buy." | bitkub_depth + bitkub_trades + bitkub_ws_ticker_snapshot |
|
"Audit my last 24h: balances now, all crypto deposits since yesterday, and any open orders." | bitkub_balances + bitkub_crypto_deposits (with created_start) + bitkub_my_open_orders (per symbol) |
|
"My order is stuck at 'open' in the UI. Get its REST state AND watch order_updates for 30s to see if anything moves."* | bitkub_order_info + bitkub_ws_order_updates |

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "bitkub trading mcp": {
            "bitkub-trading-mcp": {
                "type": "stdio",
                "command": "npx",
                "args": [
                    "-y",
                    "bitkub-trading-mcp"
                ],
                "env": {
                    "BITKUB_API_KEY": "your_real_key_here",
                    "BITKUB_API_SECRET": "your_real_secret_here"
                }
            }
        }
    }
}

McpServers

{
    "bitkub-trading-mcp": {
        "type": "stdio",
        "command": "npx",
        "args": [
            "-y",
            "bitkub-trading-mcp"
        ],
        "env": {
            "BITKUB_API_KEY": "your_real_key_here",
            "BITKUB_API_SECRET": "your_real_secret_here"
        }
    }
}

2. Add the bitkub-trading-mcp block

Inside the mcpServers object, add this entry. If you already have other MCP servers configured, separate them with a comma — it's a normal JSON object.

{
  "mcpServers": {
    "bitkub-trading-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "bitkub-trading-mcp"],
      "env": {
        "BITKUB_API_KEY": "your_api_key_here",
        "BITKUB_API_SECRET": "your_api_secret_here"
      }
    }
  }
}

Replace the two your_..._here placeholders with your real Bitkub key + secret — see Add your API key below for how to generate them.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.