[English](./README.md) | [中文](./README.zh-CN.md)

# @dbot/copy-trading-mcp-server

跟单交易 MCP Server - 支持创建和管理复杂的跟单任务，自动跟随其他用户的交易策略

## 🚀 功能特性

以下为功能概述：

- 🔗 **智能跟单**: 自动跟随指定钱包的交易行为进行买入和卖出操作
- ⚡ **多链支持**: 支持多链跟单交易（Solana, Ethereum, Base, BSC, Tron）
- 💰 **灵活买入**: 支持固定金额、固定比例、跟随金额三种买入模式
- 📊 **智能卖出**: 支持跟随卖出、止盈止损、混合模式等多种卖出策略
- 🛡️ **风险控制**: 全面的代币过滤、税率检查、持仓限制等风险控制机制
- 🔧 **任务管理**: 创建、编辑、开关、删除跟单任务
- 📈 **实时监控**: 支持多DEX跟随和黑名单管理
- ⚙️ **高级配置**: 支持防夹模式、滑点控制、并发节点等高级功能

## 快速开始

以下为使用方法：

在MCP客户端配置中添加：

**示例:**
```json
{
  "mcpServers": {
    "copy-trading": {
      "command": "npx",
      "args": ["-y", "@dbot/copy-trading-mcp-server@latest"],
      "env": {
        "DBOT_API_KEY": "your-api-key",
        "DBOT_WALLET_ID": "your-wallet-id"
      }
    }
  }
}
```

## 📚 典型场景

- **基础跟单**：
  - "帮我创建一个跟单任务，跟随钱包地址 ECQwEUMk75pxgruroXKTfqMHL4Aoj622vEZxBtYu4gNt 在Solana上的交易，每次最多买入0.1 SOL"
- **智能跟单 + 止盈止损**：
  - "创建跟单任务跟随该地址，设置最大买入0.5 SOL，价格上涨200%时自动卖出，下跌30%时止损"
- **多目标跟单**：
  - "跟随3个聪明钱地址进行交易，设置分级止盈：涨50%卖30%，涨100%卖70%"
- **管理跟单任务**：
  - "暂停我的跟单任务"
  - "修改跟单任务的最大买入金额"
  - "删除指定的跟单任务"

## 🌱 环境变量

以下为环境变量说明：

### 必需的环境变量
- `DBOT_API_KEY`: DBot API密钥（必需）
- `DBOT_WALLET_ID`: 默认钱包ID（必需）

### 可选的默认参数配置
- 如需更改可根据示例配置，如未更改将使用默认配置。
- 默认配置可通过与LLM模型对话得到，例如 "请告诉我 跟单交易 工具的默认配置"。
- 所有环境变量默认值均可在对话时被覆盖。例如 系统默认开启防夹模式，对话时可要求将其覆盖，"创建跟单任务....，请关闭防夹模式。"

#### 基础配置
- `DBOT_CHAIN`: 默认链类型 (solana/ethereum/base/bsc/tron)
- `DBOT_CUSTOM_FEE_AND_TIP`: 是否使用自定义费用 (true/false)
- `DBOT_PRIORITY_FEE`: 优先费，例如："0.0001"
- `DBOT_GAS_FEE_DELTA`: gas费用增量，例如：5
- `DBOT_MAX_FEE_PER_GAS`: 最大gas费用，例如：100
- `DBOT_JITO_ENABLED`: 是否启用防夹模式 (true/false)
- `DBOT_JITO_TIP`: 防夹小费，例如：0.001
- `DBOT_MAX_SLIPPAGE`: 最大滑点 (0.00-1.00)，例如：0.1
- `DBOT_CONCURRENT_NODES`: 并发节点数 (1-3)，例如：2
- `DBOT_RETRIES`: 重试次数 (0-10)，例如：1

**示例:**
```json
{
  "env": {
    "DBOT_API_KEY": "your-api-key",
    "DBOT_WALLET_ID": "your-wallet-id",
    "DBOT_CHAIN": "solana",
    "DBOT_CUSTOM_FEE_AND_TIP": "true",
    "DBOT_PRIORITY_FEE": "0.0002",
    "DBOT_GAS_FEE_DELTA": "5",
    "DBOT_MAX_FEE_PER_GAS": "100",
    "DBOT_JITO_ENABLED": "true",
    "DBOT_JITO_TIP": "0.001",
    "DBOT_MAX_SLIPPAGE": "0.1",
    "DBOT_CONCURRENT_NODES": "2",
    "DBOT_RETRIES": "1"
  }
}
```

#### 跟单配置
- `DBOT_BUY_AMOUNT_TYPE`: 默认买入类型 (fixed_amount/fixed_ratio/follow_amount)
- `DBOT_MAX_BUY_AMOUNT`: 默认最大买入金额，例如："0.1"
- `DBOT_BUY_RATIO`: 默认跟随比例，例如：1.0
- `DBOT_SELL_MODE`: 默认卖出模式 (mixed/only_copy/only_pnl)
- `DBOT_SELL_AMOUNT_TYPE`: 默认卖出类型 (all/follow_ratio/x_target_ratio)

**示例:**
```json
{
  "env": {
    "DBOT_API_KEY": "your-api-key",
    "DBOT_WALLET_ID": "your-wallet-id",
    "DBOT_BUY_AMOUNT_TYPE": "follow_amount",
    "DBOT_MAX_BUY_AMOUNT": "0.1",
    "DBOT_BUY_RATIO": "1.0",
    "DBOT_SELL_MODE": "mixed",
    "DBOT_SELL_AMOUNT_TYPE": "all"
  }
}
```

#### 止盈止损配置
- `DBOT_PNL_ORDER_EXPIRE_DELTA`: 止盈止损订单过期时间（毫秒），例如：43200000
- `DBOT_PNL_ORDER_EXPIRE_EXECUTE`: 是否执行过期订单 (true/false)
- `DBOT_PNL_ORDER_USE_MID_PRICE`: 是否使用中间价 (true/false)

**示例:**
```json
{
  "env": {
    "DBOT_API_KEY": "your-api-key",
    "DBOT_WALLET_ID": "your-wallet-id",
    "DBOT_PNL_ORDER_EXPIRE_DELTA": "43200000",
    "DBOT_PNL_ORDER_EXPIRE_EXECUTE": "true",
    "DBOT_PNL_ORDER_USE_MID_PRICE": "false"
  }
}
```

注意：
1. 所有布尔类型的环境变量值应该使用字符串 "true" 或 "false"
2. 数字类型的环境变量值也应该使用字符串形式
3. 在调用时指定的参数值会覆盖环境变量中的默认值
4. 可以根据需要只配置部分参数，未配置的参数将使用系统默认值

## 🛠️ 可用工具

以下为工具说明：

### create_copy_trading

创建多链的跟单交易任务 - 自动跟随指定钱包地址的交易行为进行买入和卖出操作

**基础参数:**
- `enabled` (boolean, 可选): 任务启用状态，true/false，默认为true
- `name` (string, 必需): 跟单任务的名称
- `chain` (string, 可选): 链 (solana/ethereum/base/bsc/tron)，默认为solana
- `dexFilter` (array, 可选): 需要跟随的DEX，null表示全部跟随，填写名字表示只跟随该DEX的交易
- `targetIds` (array, 必需): 需要跟单的钱包地址（最多10个）
- `tokenBlacklist` (array, 可选): 当前任务的黑名单代币地址（最多20个），加入黑名单之后将不会跟买和跟卖这些代币
- `walletId` (string, 可选): 使用的钱包的id，可通过"钱包信息 API"获取（如未提供将使用环境变量 DBOT_WALLET_ID）
- `groupId` (string, 可选): 分组id
- `buySettings` (object, 必需): 买入相关设置
- `sellSettings` (object, 必需): 卖出相关设置

**买入设置 (buySettings):**
- `enabled` (boolean): 买入任务启用状态，默认为true
- `maxBuyAmountUI` (string, 必需): 跟单的最大买入金额，最小可填写0.001 SOL，0.0001 ETH，0.0001 BNB，1 TRX
- `buyAmountType` (string): 跟单买入类型，"fixed_amount"表示固定金额，"fixed_ratio"表示固定比例，"follow_amount"表示跟随金额，默认为follow_amount
- `buyRatio` (number): 跟随买入比例（0-10），当买入类型为fixed_ratio时生效，默认为1
- `maxBalanceUI` (number): 止盈金额（ETH/SOL/BNB/TRX），钱包余额高于此金额时不会再跟随买入，默认为100
- `reservedAmountUI` (number): 止损金额（ETH/SOL/BNB/TRX），钱包余额低于此金额时不会再跟随买入，默认为0.01
- `targetMinAmountUI` (number): 聪明钱买入金额大于此值时才会跟随买入，默认为0
- `targetMaxAmountUI` (number): 聪明钱买入金额小于此值时才会跟随买入，默认为999999
- `minTokenMCUSD` (number): 最小跟单市值，只跟随买入高于此市值的代币，默认为0
- `maxTokenMCUSD` (number): 最大跟单市值，只跟随买入低于此市值的代币，默认为999999999
- `maxSlippage` (number): 最大滑点（0.00-1.00），默认为0.1
- `jitoEnabled` (boolean): 是否启用防夹模式，默认为true
- `jitoTip` (number): 防夹模式使用的贿赂费，默认为0.001
- `skipFreezableToken` (boolean): 不买入冻结权限未丢弃的代币，默认为false
- `skipMintableToken` (boolean): 不买入mint权限未丢弃的代币，默认为false
- `skipHoneyPot` (boolean): 不买入GoPlus定义为貔貅的代币，默认为false
- `minBurnedLp` (number): 池子最小销毁比例（0-1），默认为0
- `maxBuyTimesPerToken` (number): 7日内代币在此任务中的最大买入次数，默认为999
- `buyOncePerWallet` (boolean): 只买入一次，默认为false
- `concurrentNodes` (number): 并发节点数（1-3），默认为2
- `retries` (number): 失败后的重试次数（0-10），默认为1

**卖出设置 (sellSettings):**
- `enabled` (boolean): 卖出任务启用状态，默认为true
- `mode` (string): 卖出模式，"mixed"表示同时启用跟随卖出和止盈止损，"only_copy"表示只启用跟随卖出，"only_pnl"表示只启用止盈止损，默认为mixed
- `sellAmountType` (string): 跟单卖出的比例，"all"表示100%卖出，"follow_ratio"表示跟随比例卖出，"x_target_ratio"表示根据聪明钱的卖出比例，固定乘以一个倍数进行卖出，默认为all
- `xTargetRatio` (number): 聪明钱卖出比例的倍数（0-100），默认为1
- `sellSpeedType` (string): 跟随卖出的速度，"fast"表示速度优先，"accurate"表示准确优先，默认为accurate
- `stopEarnPercent` (number): 止盈百分比（0.5表示50%）
- `stopLossPercent` (number): 止损百分比（0.5表示50%）
- `stopEarnGroup` (array): 止盈分组，最多支持设置6个
- `stopLossGroup` (array): 止损分组，最多支持设置6个
- `trailingStopGroup` (array): 移动止盈止损分组，当前仅支持设置1组
- `pnlOrderExpireDelta` (number): 止盈止损任务的过期时间（毫秒），默认为43200000
- `sellMode` (string): 卖出方式，"smart"表示不会卖出，"normal"表示继续卖出，默认为smart
- `migrateSellPercent` (number): 开盘卖出比例（0.00-1.00），默认为0
- `minDevSellPercent` (number): 触发比例（0-1），默认为0.5
- `devSellPercent` (number): 当跟随Dev卖出任务触发时，你卖出的比例，默认为1

**示例:**
```json
{
  "enabled": true,
  "name": "跟单任务1",
  "chain": "solana",
  "targetIds": ["ECQwEUMk75pxgruroXKTfqMHL4Aoj622vEZxBtYu4gNt"],
  "buySettings": {
    "enabled": true,
    "maxBuyAmountUI": "0.1",
    "buyAmountType": "follow_amount",
    "buyRatio": 1.5,
    "maxSlippage": 0.1,
    "jitoEnabled": true
  },
  "sellSettings": {
    "enabled": true,
    "mode": "mixed",
    "sellAmountType": "all",
    "stopEarnPercent": 1,
    "stopLossPercent": 0.5
  }
}
```

### edit_copy_trading

编辑跟单交易任务。只需要提供要修改的字段和必需字段（id, enabled, name, chain, targetIds, buySettings, sellSettings），无需重新输入所有字段

**参数:**
- `id` (string, 必需): 跟单任务id
- 其他参数与创建任务相同（可选）

**示例:**
```json
{
  "id": "lxvmnr5h00jeus",
  "enabled": true,
  "name": "更新的任务名称"
}
```

### switch_copy_trading

开关跟单交易任务

**参数:**
- `id` (string, 必需): 跟单任务id
- `enabled` (boolean, 必需): 任务启用状态，true/false
- `closePnlOrder` (boolean, 可选): 是否同时关闭跟单任务创建的所有止盈止损任务，默认false，表示不关闭（当"enabled"为false时有效）

**示例:**
```json
{
  "id": "lxvmnr5h00jeus",
  "enabled": false,
  "closePnlOrder": false
}
```

### delete_copy_trading

删除跟单交易任务

**参数:**
- `id` (string, 必需): 跟单任务id
- `deletePnlOrder` (boolean, 可选): 是否同时删除此跟单任务创建的所有止盈止损任务，默认为false

**示例:**
```json
{
  "id": "lxvmnr5h00jeus",
  "deletePnlOrder": false
}
```

### get_copy_trading_tasks

获取跟单任务列表

**参数:**
- `page` (number, 可选): 页码，默认为0
- `size` (number, 可选): 每页数量（最大100），默认为20

**示例:**
```json
{
  "page": 0,
  "size": 20
}
```

## 支持的DEX

### Solana
- raydium_amm, raydium_clmm, raydium_cpmm, raydium_launchpad
- meteora_dlmm, meteora_dyn, meteora_dyn2, meteora_bc
- pump, pump_swap, moonshot, orca_wp

### Ethereum/Base/BSC
- uniswap_v2, uniswap_v3, pancake_v2, pancake_v3
- ether_vista, okx_v2, fourmeme, boop

### Tron
- sunswap_v2, sunpump

## 跟单机制说明

### 买入类型
- **fixed_amount**: 固定金额买入
- **fixed_ratio**: 固定比例买入（根据buyRatio参数）
- **follow_amount**: 跟随金额买入（按聪明钱的实际买入金额）

### 卖出模式
- **mixed**: 同时启用跟随卖出和止盈止损
- **only_copy**: 只启用跟随卖出
- **only_pnl**: 只启用止盈止损

### 卖出类型
- **all**: 100%卖出
- **follow_ratio**: 跟随比例卖出
- **x_target_ratio**: 根据聪明钱的卖出比例乘以倍数

### 风险控制功能
- **代币过滤**: 支持冻结权限、mint权限、委托检查
- **税率检查**: 支持买入/卖出税率限制（EVM链）
- **貔貅检测**: 集成GoPlus安全检测
- **流动性检查**: 支持最小流动性和LP销毁比例检查
- **持仓限制**: 支持前10持仓比例限制
- **购买频率**: 支持单币最大购买次数和金额限制

## 风险提醒

### 投资风险
1. **市场风险**: 跟单不能保证盈利，存在亏损可能
2. **策略风险**: 被跟单者的策略可能不适合您的风险偏好
3. **时间差风险**: 跟单执行可能存在时间延迟

### 技术风险
1. **网络延迟**: 可能影响跟单执行时机
2. **资金不足**: 确保账户有足够资金执行跟单
3. **链条拥堵**: 网络拥堵可能影响交易执行

### 建议措施
1. **合理配置**: 根据风险承受能力设置买入金额和止盈止损
2. **多重保护**: 启用代币过滤和风险检查功能
3. **定期监控**: 定期检查跟单任务的执行情况
4. **及时调整**: 根据市场情况及时调整策略

## 注意事项

1. **钱包配置**: `walletId` 参数是可选的，如果不提供将自动使用环境变量 `DBOT_WALLET_ID` 中的钱包ID
2. **被跟单地址**: 确保提供的钱包地址是您信任的交易者
3. **资金管理**: 确保账户有足够的资金执行跟单交易
4. **监控频率**: 系统会实时监控被跟单地址的交易活动
5. **参数配置**: 建议先用较小金额测试，确认策略有效后再增加投入

## 📚 API文档

完整的API文档请参考：https://api-bot-v1.dbotx.com/docs

## 📄 许可证

MIT

## 💡 支持

如有问题或建议，请访问：https://github.com/dbot-team/dbot-mcp-servers 