Skip to main content
Glama
IQAIcom

Upbit MCP Server

by IQAIcom

Upbit MCP Server (TypeScript)

Fast MCP server for interacting with Upbit. Provides public market data tools and optional private trading tools.

Requirements

  • Node.js 18+

  • pnpm 8+

Related MCP server: MCP Bitpanda Server

Install

pnpm install

Environment

Copy and edit .env:

cp .env.example .env

.env.example:

UPBIT_SERVER_URL=https://api.upbit.com UPBIT_ACCESS_KEY= UPBIT_SECRET_KEY= UPBIT_ENABLE_TRADING=false

Private tools require UPBIT_ACCESS_KEY, UPBIT_SECRET_KEY, and UPBIT_ENABLE_TRADING=true.

Security & permissions

  • Keep your UPBIT_SECRET_KEY private and IP-allowlist your server in Upbit.

  • Set UPBIT_ENABLE_TRADING=true only when you intend to place/cancel orders or create withdrawals/deposit addresses.

  • Upbit permission mapping (high-level):

Where to get Upbit API keys

Before you begin, you need to get your Upbit API keys:

  1. Create an account on Upbit if you don't already have one

  2. Go to the Upbit Developer Center

  3. Create a new API key

  4. Make sure to set appropriate permissions (read, trade, withdraw as needed)

  5. Store your API keys(UPBIT_ACCESS_KEY, UPBIT_SECRET_KEY) in the .env file (see Installation section) set UPBIT_ENABLE_TRADING=true to enable private tools.

Build & Run

pnpm run build pnpm run start

For easier testing use this (in project root):

pnpm run build npx @modelcontextprotocol/inspector node dist/index.js

If installed globally or via npx, you can also run the bin:

mcp-upbit-server

Runs over stdio for MCP clients.

Tools

Public:

  • GET_TICKER — latest ticker for a market. Params: { "market": "KRW-BTC" }

  • GET_ORDERBOOK — orderbook snapshot. Params: { "market": "KRW-BTC" }

  • GET_TRADES — recent trades. Params: { "market": "KRW-BTC" }

Private (requires env and enable flag):

  • GET_ACCOUNTS

  • GET_ORDERS{ market?, state?, page?, limit? }

  • GET_ORDER{ uuid? , identifier? }

  • CREATE_ORDER{ market, side, ord_type, volume?, price? }

  • CANCEL_ORDER{ uuid }

  • LIST_WITHDRAWAL_ADDRESSES

  • CREATE_WITHDRAWAL{ currency, amount, address, net_type, secondary_address? , transaction_type? }

  • GET_WITHDRAWAL{ uuid }

  • LIST_WITHDRAWALS{ currency?, state?, page?, limit? }

  • CANCEL_WITHDRAWAL{ uuid }

  • GET_DEPOSIT_CHANCE{ currency, net_type? }

  • CREATE_DEPOSIT_ADDRESS{ currency, net_type }

  • GET_DEPOSIT_ADDRESS{ currency, net_type }

  • LIST_DEPOSIT_ADDRESSES

  • GET_DEPOSIT{ uuid }

  • LIST_DEPOSITS{ currency?, state?, page?, limit? }

All tool outputs are JSON strings for easy display.

Examples

// CREATE_ORDER (market buy 10,000 KRW) { "name": "CREATE_ORDER", "arguments": { "market": "KRW-BTC", "side": "bid", "ord_type": "price", "price": "10000" } }
// CREATE_ORDER (limit sell with post_only) { "name": "CREATE_ORDER", "arguments": { "market": "KRW-BTC", "side": "ask", "ord_type": "limit", "volume": "0.01", "price": "100000000", "time_in_force": "post_only", "identifier": "my-unique-id-001" } }
// LIST_WITHDRAWALS (page 1, 50 items) { "name": "LIST_WITHDRAWALS", "arguments": { "page": 1, "limit": 50 } }
// GET_DEPOSIT_CHANCE { "name": "GET_DEPOSIT_CHANCE", "arguments": { "currency": "BTC" } }

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/IQAIcom/mcp-upbit'

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