MCP Upbit
Access real-time and historical market data from the Upbit cryptocurrency exchange.
- Package:
@iqai/mcp-upbit - Provider: Upbit
Overview
The Upbit MCP server connects your agent to the Upbit exchange API. It can retrieve ticker data, order books, trade history, and OHLCV candles for KRW, BTC, and USDT markets. Trading operations require API credentials; market data queries are available without authentication.
Trading vs. Read-Only
Market data (tickers, order books, candles) is publicly accessible without API
credentials. Placing orders or accessing account data requires an Access Key,
Secret Key, and UPBIT_ENABLE_TRADING=true.
Getting Started
Install the package:
pnpm add @iqai/mcp-upbitUse the server in your agent:
import { McpUpbit } from "@iqai/adk";
const toolset = McpUpbit();
const tools = await toolset.getTools();import { McpUpbit } from "@iqai/adk";
const toolset = McpUpbit({
env: {
UPBIT_ACCESS_KEY: process.env.UPBIT_ACCESS_KEY,
UPBIT_SECRET_KEY: process.env.UPBIT_SECRET_KEY,
UPBIT_ENABLE_TRADING: "true",
},
});
const tools = await toolset.getTools();import { McpToolset } from "@iqai/adk";
const toolset = new McpToolset({
name: "Upbit MCP Client",
description: "Client for Upbit exchange market data and trading",
transport: {
mode: "stdio",
command: "npx",
args: ["-y", "@iqai/mcp-upbit"],
env: {
UPBIT_ACCESS_KEY: process.env.UPBIT_ACCESS_KEY,
UPBIT_SECRET_KEY: process.env.UPBIT_SECRET_KEY,
UPBIT_ENABLE_TRADING: "true",
PATH: process.env.PATH || "",
},
},
});
const tools = await toolset.getTools();{
"mcpServers": {
"upbit-mcp-server": {
"command": "npx",
"args": ["-y", "@iqai/mcp-upbit"],
"env": {
"UPBIT_ACCESS_KEY": "your_upbit_access_key",
"UPBIT_SECRET_KEY": "your_upbit_secret_key",
"UPBIT_ENABLE_TRADING": "true"
}
}
}
}Environment Variables
| Variable | Required | Description |
|---|---|---|
UPBIT_ACCESS_KEY | For trading only | Upbit Open API access key |
UPBIT_SECRET_KEY | For trading only | Upbit Open API secret key |
UPBIT_ENABLE_TRADING | For trading only | Set to "true" to enable trading operations (default: disabled for safety) |
Credentials
To get your Upbit API credentials:
- Log into upbit.com and go to My Page → Open API
- Click Issue API Key
- Set the permissions your agent needs (e.g., asset inquiry, order placement)
- Copy the Access Key and Secret Key — the secret key is only shown once
Available Tools
GET_TICKERmarket:string
GET_TICKERDescription
Get the latest ticker data from Upbit for a single market
GET_ORDERBOOKmarket:string
GET_ORDERBOOKDescription
Get orderbook snapshot for a given market
GET_TRADESmarket:string
GET_TRADESDescription
Get recent trades for a market
GET_ACCOUNTSNo parameters
GET_ACCOUNTSNo parameters
Description
Get Upbit account balances (requires private API enabled)
CREATE_ORDERmarket:stringside:stringord_type:stringvolume:stringprice:stringtime_in_force:stringsmp_type:stringidentifier:string
CREATE_ORDERDescription
Create an Upbit order (requires private API)
GET_ORDERSmarket:stringstate:stringpage:integerlimit:integer
GET_ORDERSDescription
List Upbit orders (requires private API)
GET_ORDERuuid:stringidentifier:string
GET_ORDERDescription
Get a single Upbit order (requires private API)
CANCEL_ORDERuuid:string
CANCEL_ORDERDescription
Cancel an existing Upbit order (requires private API)
LIST_WITHDRAWAL_ADDRESSESNo parameters
LIST_WITHDRAWAL_ADDRESSESNo parameters
Description
List registered withdrawal-allowed addresses (requires private API)
CREATE_WITHDRAWALcurrency:stringamount:stringaddress:stringnet_type:stringsecondary_address:stringtransaction_type:string
CREATE_WITHDRAWALDescription
Request a digital asset withdrawal (requires private API)
GET_WITHDRAWALuuid:string
GET_WITHDRAWALDescription
Get a single withdrawal by UUID (requires private API)
LIST_WITHDRAWALScurrency:stringstate:stringpage:integerlimit:integer
LIST_WITHDRAWALSDescription
List withdrawals (requires private API)
CANCEL_WITHDRAWALuuid:string
CANCEL_WITHDRAWALDescription
Cancel a digital asset withdrawal by UUID (requires private API)
GET_DEPOSIT_CHANCEcurrency:stringnet_type:string
GET_DEPOSIT_CHANCEDescription
Get deposit availability information for a currency (private)
CREATE_DEPOSIT_ADDRESScurrency:stringnet_type:string
CREATE_DEPOSIT_ADDRESSDescription
Request creation of a deposit address (requires private API)
GET_DEPOSIT_ADDRESScurrency:stringnet_type:string
GET_DEPOSIT_ADDRESSDescription
Get a single deposit address for a currency and net_type (private)
LIST_DEPOSIT_ADDRESSESNo parameters
LIST_DEPOSIT_ADDRESSESNo parameters
Description
List deposit addresses for all currencies (requires private API)
GET_DEPOSITuuid:string
GET_DEPOSITDescription
Get a single deposit by UUID (requires private API)
LIST_DEPOSITScurrency:stringstate:stringpage:integerlimit:integer
LIST_DEPOSITSDescription
List deposits (requires private API)
Integration Example
import { AgentBuilder, McpUpbit } from "@iqai/adk";
import * as dotenv from "dotenv";
dotenv.config();
async function main() {
// Initialize McpUpbit toolset
const toolset = McpUpbit({
env: {
UPBIT_ACCESS_KEY: process.env.UPBIT_ACCESS_KEY,
UPBIT_SECRET_KEY: process.env.UPBIT_SECRET_KEY,
UPBIT_ENABLE_TRADING: "true",
},
});
// Get available McpUpbit tools
const upbitTools = await toolset.getTools();
// Create agent with McpUpbit tools
const { runner } = await AgentBuilder.create("upbit_agent")
.withModel("gemini-2.5-flash")
.withDescription("A crypto trading agent that monitors and trades on Upbit")
.withTools(...upbitTools)
.build();
const response = await runner.ask(
"What is the current price of Bitcoin on Upbit and how has it moved in the last 24 hours?",
);
console.log(response);
}
main().catch(console.error);