Upbit MCP Server for Real-Time Market Data
Access real-time Upbit cryptocurrency prices, market summaries, and asset listings with an MCP server for instant market data.
npx -y @solangii/upbit-mcp-serverOverview
This MCP (Model Context Protocol) server provides instant access to Upbit market data — including live price ticks, market summaries, and lists of available assets — packaged as an MCP-compatible data source. It acts as a lightweight bridge between Upbit’s public API and applications or LLMs that expect the MCP wire format, allowing consumers to request contextual market information or subscribe to real-time updates with minimal integration work.
For developers building trading dashboards, alerting systems, or LLM agents that need up-to-date cryptocurrency prices, the server simplifies data retrieval and streaming. Rather than polling Upbit directly or writing custom parsers, you can run this server locally or in a container and query a consistent set of endpoints (REST and/or WebSocket) that expose market lists, summaries, and live ticks formatted for immediate ingestion.
Features
- Real-time price ticks proxied from Upbit public endpoints
- Market summaries (24h change, volume, high/low) for requested markets
- Asset and market listings (all markets supported by Upbit)
- MCP-compatible HTTP and/or streaming interfaces for model context integration
- Local and containerized deployment options
- Simple configuration via environment variables
Installation / Configuration
Clone the repository and run locally or via Docker. The examples below use common Node/Docker commands — adapt to the language/runtime in the repository if different.
Clone the repo:
Install dependencies (Node.js example):
# using npm
# or using yarn
Create a .env file (example variables):
# HTTP server port
PORT=3000
# Base URL for Upbit (defaults to public Upbit API)
UPBIT_BASE_URL=https://api.upbit.com
# Optional: enable WebSocket stream
ENABLE_WS=true
# Log level (debug|info|warn|error)
LOG_LEVEL=info
Start the server:
# development
# or with environment variables inline
PORT=4000
Docker usage:
# build and run
# or using docker-compose (example)
Notes:
- Upbit public market endpoints generally do not require API keys for market data. Private account/endpoints do. If you plan to extend the server to broker authenticated requests, add credential configuration and secure them (e.g., secrets manager).
- The repository exposes configurable endpoints and a toggleable streaming interface; consult the project code for exact endpoint paths if you need to tailor requests.
Available Tools / Resources
- GitHub repository: https://github.com/solangii/upbit-mcp-server
- Upbit API docs: https://docs.upbit.com (official Upbit REST/WebSocket references)
- MCP (Model Context Protocol) reference: check the MCP spec or the repo README for protocol details
- Useful client libraries:
- HTTP: curl, axios, fetch
- WebSocket: ws (Node), websocket APIs in browsers
Common endpoints (typical examples)
| Path | Method | Description |
|---|---|---|
| /markets | GET | Returns list of markets/assets listed on Upbit |
| /ticker?markets=KRW-BTC,KRW-ETH | GET | Current price/tick data for requested markets |
| /summary?market=KRW-BTC | GET | 24h summary: change, volume, high, low |
| /stream (WebSocket) | WS | Subscribe to live ticks / updates for markets |
Example Response (ticker):
Use Cases
LLM-driven trading assistants: Feed the MCP server output directly into a model context window to let an agent reason about current prices and market context before generating recommendations or actions.
- Example: Fetch /summary?market=KRW-BTC and include the returned JSON as context before asking an agent to generate trade rationale.
Real-time dashboards: Use the WebSocket /stream endpoint to push updates to a UI with low latency. The MCP server normalizes Upbit feeds so the dashboard can consume a consistent schema across markets.
- Example: Subscribe to KRW-BTC and KRW-ETH ticks and render last price, 24h change, and volume.
Alerting and automation: Periodically poll /ticker for markets of interest and trigger alerts or automated workflows when price thresholds or unusual volume patterns occur.
- Example: Poll /ticker every 15 seconds; if change_rate > 0.05 within 1 minute, send notification.
Backtesting and research: Use the server as a reproducible source of historical snapshots (if the server supports caching or replay) for model training or strategy analysis.
Quick Examples
Fetch current markets list:
Get tick data for BTC and ETH:
Subscribe via WebSocket (JavaScript example):
;