LIST_DEPOSIT_ADDRESSES
Retrieve deposit addresses for all currencies on Upbit. Requires private API authentication.
Instructions
List deposit addresses for all currencies (requires private API)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/list-deposit-addresses.ts:6-21 (handler)The tool definition including the 'execute' handler that calls the Upbit API /deposits/coin_addresses endpoint
export const listDepositAddressesTool = { name: "LIST_DEPOSIT_ADDRESSES", description: "List deposit addresses for all currencies (requires private API)", parameters: z.object({}), execute: async () => { ensurePrivateEnabled(); const baseURL = `${config.upbit.baseUrl}${config.upbit.apiBasePath}`; const client = createHttpClient(baseURL); const token = signJwtToken(); const data = await fetchJson<unknown>(client, "/deposits/coin_addresses", { headers: { Authorization: `Bearer ${token}` }, }); return JSON.stringify(data, null, 2); }, } as const; - Input parameter schema - empty object (z.object({})), meaning no parameters required
parameters: z.object({}), - src/index.ts:18-47 (registration)Import of the tool on line 18 and registration via server.addTool on line 47
import { listDepositAddressesTool } from "./tools/list-deposit-addresses.js"; import { listDepositsTool } from "./tools/list-deposits.js"; import { listWithdrawalAddressesTool } from "./tools/list-withdrawal-addresses.js"; import { listWithdrawalsTool } from "./tools/list-withdrawals.js"; async function main() { console.log("Initializing Upbit MCP Server..."); const server = new FastMCP({ name: "Upbit MCP Server", version: "0.0.1", }); server.addTool(getTickerTool); server.addTool(getOrderbookTool); server.addTool(getTradesTool); server.addTool(getAccountsTool); server.addTool(createOrderTool); server.addTool(getOrdersTool); server.addTool(getOrderTool); server.addTool(cancelOrderTool); server.addTool(listWithdrawalAddressesTool); server.addTool(createWithdrawalTool); server.addTool(getWithdrawalTool); server.addTool(listWithdrawalsTool); server.addTool(cancelWithdrawalTool); server.addTool(getDepositChanceTool); server.addTool(createDepositAddressTool); server.addTool(getDepositAddressTool); server.addTool(listDepositAddressesTool); - src/lib/upbit-auth.ts:5-41 (helper)ensurePrivateEnabled() helper used to check private API access before executing the tool
export function ensurePrivateEnabled(): void { if (!config.upbit.enablePrivate) { throw new Error( "Private trading tools are disabled. Set UPBIT_ENABLE_TRADING=true to enable.", ); } if (!config.upbit.accessKey || !config.upbit.secretKey) { throw new Error( "Upbit API keys are not configured. Set UPBIT_ACCESS_KEY and UPBIT_SECRET_KEY.", ); } } export function signJwtToken( params?: Record<string, string | number | boolean | undefined>, ): string { const payload: Record<string, unknown> = { access_key: config.upbit.accessKey, nonce: crypto.randomUUID(), }; if (params && Object.keys(params).length > 0) { const searchParams = new URLSearchParams(); const sortedKeys = Object.keys(params).sort(); for (const key of sortedKeys) { const value = params[key]; if (value === undefined) continue; searchParams.append(key, String(value)); } const encoded = searchParams.toString(); const queryHash = crypto.createHash("sha512").update(encoded).digest("hex"); payload.query_hash = queryHash; payload.query_hash_alg = "SHA512"; } return jwt.sign(payload, config.upbit.secretKey as string); } - src/lib/upbit-auth.ts:18-41 (helper)signJwtToken() helper used to generate authentication JWT for the Upbit API call
export function signJwtToken( params?: Record<string, string | number | boolean | undefined>, ): string { const payload: Record<string, unknown> = { access_key: config.upbit.accessKey, nonce: crypto.randomUUID(), }; if (params && Object.keys(params).length > 0) { const searchParams = new URLSearchParams(); const sortedKeys = Object.keys(params).sort(); for (const key of sortedKeys) { const value = params[key]; if (value === undefined) continue; searchParams.append(key, String(value)); } const encoded = searchParams.toString(); const queryHash = crypto.createHash("sha512").update(encoded).digest("hex"); payload.query_hash = queryHash; payload.query_hash_alg = "SHA512"; } return jwt.sign(payload, config.upbit.secretKey as string); }