内容
# 📈 Upbit MCP 服务器
[](https://www.npmjs.com/package/@iqai/mcp-upbit)
[](https://opensource.org/licenses/MIT)
## 📖 概述
用于与韩国最大的加密货币交易所 [Upbit](https://upbit.com) 交互的快速 MCP 服务器。该服务器提供对公共市场数据的全面访问以及可选的私有交易工具,包括订单管理、存款和取款。
通过实现模型上下文协议(MCP),该服务器允许大型语言模型(LLM)直接通过其上下文窗口访问实时行情数据、订单簿、交易历史并执行交易操作。
<a href="https://glama.ai/mcp/servers/@IQAIcom/mcp-upbit">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@IQAIcom/mcp-upbit/badge" alt="Upbit 服务器 MCP 服务器" />
</a>
## ✨ 功能
* **公共市场数据**:访问任何 Upbit 市场的实时行情数据、订单簿快照和近期交易。
* **账户管理**:查看账户余额和持仓(需要 API 密钥)。
* **订单管理**:创建、查询和取消订单,支持限价、市价和价格订单类型。
* **存款操作**:检查存款资格、创建存款地址和跟踪存款历史。
* **取款操作**:创建取款、管理取款地址和跟踪取款历史。
## 📦 安装
### 🚀 使用 npx(推荐)
无需全局安装即可使用此服务器:
```bash
npx @iqai/mcp-upbit
```
### 🔧 从源代码构建
```bash
git clone https://github.com/IQAIcom/mcp-upbit.git
cd mcp-upbit
pnpm install
pnpm run build
```
## ⚡ 使用 MCP 客户端运行
在您的 MCP 客户端设置中添加以下配置(例如 `claude_desktop_config.json`)。
### 📋 最小配置(仅公共数据)
```json
{
"mcpServers": {
"upbit": {
"command": "npx",
"args": ["-y", "@iqai/mcp-upbit"],
"env": {
"UPBIT_SERVER_URL": "https://api.upbit.com"
}
}
}
}
```
### ⚙️ 完整配置(启用交易)
```json
{
"mcpServers": {
"upbit": {
"command": "npx",
"args": ["-y", "@iqai/mcp-upbit"],
"env": {
"UPBIT_SERVER_URL": "https://api.upbit.com",
"UPBIT_ACCESS_KEY": "your_access_key_here",
"UPBIT_SECRET_KEY": "your_secret_key_here",
"UPBIT_ENABLE_TRADING": "true"
}
}
}
}
```
## 🔐 配置(环境变量)
| 变量 | 是否必填 | 描述 | 默认值 |
| :--- | :--- | :--- | :--- |
| `UPBIT_SERVER_URL` | 否 | Upbit API 服务器 URL | `https://api.upbit.com` |
| `UPBIT_ACCESS_KEY` | 交易必填 | 您的 Upbit API 访问密钥 | - |
| `UPBIT_SECRET_KEY` | 交易必填 | 您的 Upbit API 密钥 | - |
| `UPBIT_ENABLE_TRADING` | 交易必填 | 启用私有交易工具 | `false` |
### 🔑 获取 Upbit API 密钥
1. 如果您尚未在 [Upbit](https://upbit.com) 上创建账户,请创建一个。
2. 前往 [Upbit 开发者中心](https://upbit.com/service_center/open_api_guide)。
3. 创建一个新的 API 密钥。
4. 设置适当的权限(根据需要读取、交易、提现)。
5. 将您的 API 密钥存储在环境变量中。
### 🔒 安全性和权限
- 保持您的 `UPBIT_SECRET_KEY` 私有,并在 Upbit 中允许您的服务器 IP 地址。
- 仅当您打算下单、取消订单或创建取款/存款地址时,请设置 `UPBIT_ENABLE_TRADING=true`。
- Upbit 权限映射:
- 订单:创建/取消 → 下单,查询/列表 → 订单查询
- 账户/余额 → 资产查询
- 取款:创建/取消 → 取款,查询/列表/地址列表 → 取款查询
- 存款:创建存款地址 → 存款,查询/列表/地址读取 → 存款查询
**文档:**
- [身份验证参考](https://docs.upbit.com/kr/reference/auth)
- [订单参考](https://docs.upbit.com/kr/reference/new-order)
- [取款参考](https://docs.upbit.com/kr/reference/withdraw)
- [存款参考](https://docs.upbit.com/kr/reference/available-deposit-information)
## 💡 使用示例
### 📊 市场数据
* "Upbit 当前的比特币价格是多少(KRW-BTC)?"
* "显示以太坊(KRW-ETH)的订单簿。"
* "获取 XRP(KRW-XRP)的近期交易记录。"
### 💼 账户和订单(需要 API 密钥)
* "我的当前账户余额是多少?"
* "以 50,000,000 KRW 的价格购买 0.01 BTC。"
* "取消我的待处理订单,UUID 为 xyz123。"
* "显示我的 KRW-BTC 开仓订单。"
### 💳 存款和取款(需要 API 密钥)
* "为 BTC 创建存款地址。"
* "列出我的近期存款。"
* "将 1 ETH 转到我的钱包地址。"
* "检查我的取款状态。"
## 🛠️ MCP 工具
<!-- AUTO-GENERATED TOOLS START -->
### `CANCEL_ORDER`
取消现有的 Upbit 订单(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `uuid` | 字符串 | ✅ | |
### `CANCEL_WITHDRAWAL`
通过 UUID 取消数字资产取款(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `uuid` | 字符串 | ✅ | |
### `CREATE_DEPOSIT_ADDRESS`
请求创建存款地址(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `currency` | 字符串 | ✅ | |
| `net_type` | 字符串 | ✅ | |
### `CREATE_ORDER`
创建 Upbit 订单(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `market` | 字符串 | ✅ | |
| `side` | 字符串 | ✅ | |
| `ord_type` | 字符串 | ✅ | |
| `volume` | 字符串 | | |
| `price` | 字符串 | | |
| `time_in_force` | 字符串 | | |
| `smp_type` | 字符串 | | |
| `identifier` | 字符串 | | |
### `CREATE_WITHDRAWAL`
请求数字资产取款(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `currency` | 字符串 | ✅ | |
| `amount` | 字符串 | ✅ | |
| `address` | 字符串 | ✅ | |
| `net_type` | 字符串 | ✅ | |
| `secondary_address` | 字符串 | | |
| `transaction_type` | 字符串 | | |
### `GET_ACCOUNTS`
获取 Upbit 账户余额(需要启用私有 API)
_无参数_
### `GET_DEPOSIT`
通过 UUID 获取单个存款(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `uuid` | 字符串 | ✅ | |
### `GET_DEPOSIT_ADDRESS`
获取特定货币和 net_type 的单个存款地址(私有)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `currency` | 字符串 | ✅ | |
| `net_type` | 字符串 | ✅ | |
### `GET_DEPOSIT_CHANCE`
获取特定货币的存款可用性信息(私有)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `currency` | 字符串 | ✅ | |
| `net_type` | 字符串 | | |
### `GET_ORDER`
获取单个 Upbit 订单(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `uuid` | 字符串 | | |
| `identifier` | 字符串 | | |
### `GET_ORDERBOOK`
获取给定市场的订单簿快照
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `market` | 字符串 | ✅ | Upbit 市场代码,例如 KRW-BTC |
### `GET_ORDERS`
列出 Upbit 订单(需要私有 API)
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|-----------|------|----------|---------|-------------|
| `market` | 字符串 | | | |
| `state` | 字符串 | | "wait" | |
| `page` | 整数 | | 1 | |
| `limit` | 整数 | | 100 | |
### `GET_TICKER`
获取 Upbit 单个市场的最新行情数据
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `market` | 字符串 | ✅ | Upbit 市场代码,例如 KRW-BTC |
### `GET_TRADES`
获取市场的近期交易记录
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `market` | 字符串 | ✅ | Upbit 市场代码,例如 KRW-BTC |
### `GET_WITHDRAWAL`
通过 UUID 获取单个取款(需要私有 API)
| 参数 | 类型 | 是否必填 | 描述 |
|-----------|------|----------|-------------|
| `uuid` | 字符串 | ✅ | |
### `LIST_DEPOSIT_ADDRESSES`
列出所有货币的存款地址(需要私有 API)
_无参数_
### `LIST_DEPOSITS`
列出存款(需要私有 API)
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|-----------|------|----------|---------|-------------|
| `currency` | 字符串 | | | |
| `state` | 字符串 | | | |
| `page` | 整数 | | 1 | |
| `limit` | 整数 | | 50 | |
### `LIST_WITHDRAWAL_ADDRESSES`
列出已注册的允许取款地址(需要私有 API)
_无参数_
### `LIST_WITHDRAWALS`
列出取款(需要私有 API)
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|-----------|------|----------|---------|-------------|
| `currency` | 字符串 | | | |
| `state` | 字符串 | | | |
| `page` | 整数 | | 1 | |
| `limit` | 整数 | | 50 | |
<!-- AUTO-GENERATED TOOLS END -->
## 👨💻 开发
### 🏗️ 构建项目
```bash
pnpm run build
```
### 👁️ 开发模式(监听)
```bash
pnpm run watch
```
### ✅ linting 和格式化
```bash
pnpm run lint
pnpm run format
```
### 🧪 使用 MCP 检测器测试
```bash
pnpm run build
npx @modelcontextprotocol/inspector node dist/index.js
```
### 📁 项目结构
* `src/tools/`:单个工具定义
* `src/lib/`:配置、HTTP 客户端和身份验证实用程序
* `src/index.ts`:服务器入口点
## 📚 资源
* [Upbit API 文档](https://docs.upbit.com)
* [模型上下文协议(MCP)](https://modelcontextprotocol.io)
* [Upbit 平台](https://upbit.com)
## ⚠️ 免责声明
该项目与 Upbit 加密货币交易所 API 交互。交易加密货币涉及重大风险。用户应谨慎并独立验证所有数据。作者不对其软件使用中产生的任何财务损失负责。
## 📄 许可证
[MIT](LICENSE)