CCXT MCP Server

Crypto exchange and prediction market data, balances and opt-in trading through the ccxt library

Official · ccxt TypeScript Local · stdio Finance and payments

52 popularity score ★ 45k ↓ 571/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add ccxt -- npx -y ccxt-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "ccxt": {
      "command": "npx",
      "args": [
        "-y",
        "ccxt-mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "ccxt": {
      "command": "npx",
      "args": [
        "-y",
        "ccxt-mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "ccxt": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "ccxt-mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.ccxt]
command = "npx"
args = ["-y", "ccxt-mcp"]
Gemini CLITerminal
gemini mcp add --scope user ccxt npx -- -y ccxt-mcp

Settings 7

CCXT_MCP_CONFIG Optional: Path to a config.json with accounts and tier switches, instead of the default per-OS location.
CCXT_MCP_EXCHANGE Optional: Exchange id for a single account named default.
CCXT_MCP_APIKEY Optional: API key for the default account.
CCXT_MCP_SECRET Optional: API secret for the default account.
CCXT_MCP_SANDBOX Optional: Use the exchange's sandbox/testnet for the default account.
CCXT_MCP_TRADING Optional: Trading switch for the default account.
BINANCE_APIKEY Optional: Example of the <EXCHANGEID>_<CREDENTIAL> pattern that fills missing credentials per exchange (also e.g. BINANCE_SECRET, OKX_PASSWORD).

What it does

The CCXT MCP server is the MCP front end the ccxt maintainers ship from their own repository. It wraps the ccxt unified API, so one set of tools covers more than 100 cryptocurrency exchanges plus prediction markets such as Polymarket. It runs on your own machine over stdio and talks directly to each exchange.

With no setup it serves public market data: exchange and market listings, tickers, order books, candles (OHLCV), recent trades and prediction-market events, plus read-only access to any unified fetch method or raw GET endpoint. Live WebSocket streams can be opened in the background and read later, with an option to block until the next update instead of polling.

Adding an exchange account to its config file unlocks private reads: balances, open and past orders, your own trades and positions. Order placement, leverage and margin changes, withdrawals and transfers, and raw write endpoints are separate tiers that stay off until switched on per account in that file. Plain trading: true works only on sandbox or demo accounts; live trading needs the value "live" and a per-order dollar cap you choose. Every write is shown for confirmation first, checked against market limits and your caps, and logged to an append-only journal.

What it needs

RuntimeNode.js 18+

Node.js 18 or later. Public market data needs nothing else. Private data and trading need an account on the chosen exchange and its API credentials (or a wallet address and private key for Polymarket), written to the server's config.json or passed as environment variables.

Limits

Trading, funds movement and raw write endpoints are off by default, and no tool can switch them on: only the config file can. Plain trading: true only trades on sandbox or demo accounts. List results are capped and paginated, and the raw exchange payload is dropped by default. Some exchanges block cloud, VPN or US IP addresses (HTTP 451), so a proxy may be needed. The first call on a large exchange can take seconds while markets load; they are then cached for 24 hours. Idle live streams stop after 10 minutes.

Who it suits

It suits developers and traders who want an assistant to read crypto market data across many exchanges from one place, and those who want it to place orders under caps they set themselves, starting on a testnet. Because it is published by the ccxt project and runs locally, keys never pass through a hosted service. If you only need one exchange's own tooling, or prefer that nothing on your machine can trade, run it without accounts or with keys that have trading disabled.

Tools 32

list_exchanges
List the exchanges ccxt supports
describe_exchange
Show what one exchange supports
describe_method
Look up ccxt methods, their signatures, per-exchange parameters and doc links
search_markets
Find trading pairs and markets on an exchange
get_tickers
Fetch current prices for one or more symbols
get_orderbook
Fetch the order book for a symbol
get_ohlcv
Fetch candle data for a symbol
get_trades
Fetch recent public trades
search_events
Search prediction-market events and outcomes
call_read_method
Call any read-only unified fetch or load method
call_implicit_get
Call a raw exchange GET endpoint
get_safety_status
Report enabled tiers, accounts and the config file path
watch_subscribe
Open a background WebSocket stream
watch_read
Read the latest data or new events from a stream, optionally waiting for a change
watch_unsubscribe
Stop a stream
watch_list
List active streams
list_accounts
List configured exchange accounts
get_balance
Fetch account balances
get_orders
Fetch open or past orders
get_my_trades
Fetch your own executed trades
get_positions
Fetch open positions
create_order
Place an order (trading tier)
edit_order
Change an existing order (trading tier)
cancel_order
Cancel one order (trading tier)
cancel_all_orders
Cancel all orders (trading tier)
set_leverage
Set leverage for a market (trading tier)
set_margin_mode
Switch margin mode (trading tier)
call_write_method
Run an allowlisted margin, position or batch-cancel method (trading tier)
withdraw
Withdraw funds from the exchange (funds tier)
transfer
Move funds between internal accounts (funds tier)
get_deposit_address
Get a deposit address (funds tier)
call_implicit_write
Call a raw exchange POST, PUT or DELETE endpoint (implicitWrites tier)

Similar servers