DeFi协议交互服务器

一个MCP服务器,使AI代理能够与TRON上的JustLend DAO借贷协议交互,提供资产供应、借贷、头寸管理和DeFi投资组合分析功能,同时支持通用TRON链实用程序。

  • by bbsyaya
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 bbsyaya/mcp-server-tld

使用说明

mcp服务器TLD

一个模型上下文协议(MCP)服务器,使AI代理能够与 JustLend DAO TRON上的借贷协议。通过统一的人工智能界面提供资产、抵押贷款、管理头寸和分析DeFi投资组合。

除了JustLend特定的操作外,服务器还公开了一整套 通用TRON链实用程序 --余额查询、区块/交易数据、代币元数据、TRX转账、智能合约读/写、质押(Stake 2.0)、多播等。

概述

JustLend DAO 是基于Compound V2架构的TRON上最大的借贷协议。此MCP服务器将完整的协议功能封装到AI代理(Claude Desktop、Cursor等)可以使用的工具和引导提示中。

📌 当前版本:JustLend V1

此MCP服务器当前支持 JustLend V1 协议。所有合同地址、ABI、计算函数和借贷操作都适用于V1。

关键能力

JustLend协议

  • 市场数据:所有市场的实时APY、TVL、利用率、价格
    • 直接查询合同以提高链上准确性
    • 基于API的综合市场数据查询(更稳定,包括历史数据和挖掘奖励)
  • 账户数据:API支持的全方位分析
    • 基于合约:健康因素、抵押品、借款头寸
    • 基于API:通过挖掘奖励、历史趋势、风险指标增强数据
  • 挖矿奖励:高级挖矿奖励计算(基于justlend应用程序逻辑)
    • 按市场和奖励代币(USDD、TRX、WBTC等)详细分类
    • 区分新时期与上一时期的奖励
    • 使用实时代币价格计算美元价值
    • 挖掘状态跟踪(正在进行/暂停/结束)和周期结束时间
  • 供应:存入TRX或TRC20代币以赚取利息(薄荷jTokens)
  • 借:通过健康因素监测,以抵押品为抵押借入资产
  • 偿还:全额或部分偿还未偿还的借款
  • 提取:将jTokens兑换回基础资产
  • 抵押品管理:进入/退出市场,管理抵押品
  • 投资组合分析:人工智能指导的风险评估、健康因素监测、优化
  • 代币批准:管理jToken合约的TRC20审批
  • JST投票/治理:查看提案、投票、存入/提取JST以获得投票权、收回选票

通用TRON链

  • 余额:TRX余额(含Sun/TRX转换),TRC20/TRC1155代币余额
  • 积木:最新区块,按数字/哈希区块,区块编号,链ID
  • 交易:获取交易详情、收据,等待确认
  • 合同:读/写任何合约,获取链上ABI,多调用(v2和v3),部署,估计能量
  • 令牌元数据:TRC20信息(名称/符号/小数/供应),TRC721元数据,TRC1155 URI
  • 转账:发送TRX、转移TRC20代币、批准消费者
  • 质押(质押2.0):冻结/解冻BANDWIDTH或ENERGY的TRX,提取过期的解冻
  • 地址实用程序:十六进制↔ Base58转换、地址验证、解析
  • 钱包:签名消息、签名类型数据(EIP-712)、从助记符派生的HD钱包

支持的市场

jToken 基础 描述
jTRX TRX 本机TRON代币
jUSDT USDT Tether USD
jUSDC USDC USD硬币
jBTC BTC 比特币(包裹)
jETH ETH 以太坊(已包装)
jSUN SUN SUN代币
jWIN WIN WINkLink
jTUSD TUSD TrueUSD

先决条件

安装

git clone https://github.com/your-org/mcp-server-TLD.git
cd mcp-server-TLD
npm install

配置

环境变量

安全:切勿将私钥保存在配置文件中。使用环境变量。

# Required for write operations (supply, borrow, transfer, stake, etc.)
export TRON_PRIVATE_KEY="your_private_key_hex"
# OR use a mnemonic phrase
export TRON_MNEMONIC="word1 word2 ... word12"
export TRON_ACCOUNT_INDEX="0"   # Optional HD wallet account index, default: 0

# Strongly recommended — avoids TronGrid 429 rate limiting on mainnet
export TRONGRID_API_KEY="your_trongrid_api_key"

客户端配置

克劳德桌面版

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "justlend": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcp-server-TLD/src/index.ts"],
      "env": {
        "TRONGRID_API_KEY": "your_key"
      }
    }
  }
}

光标

添加 .cursor/mcp.json:

{
  "mcpServers": {
    "justlend": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcp-server-TLD/src/index.ts"]
    }
  }
}

用法

# Stdio mode (for MCP clients)
npm start

# HTTP/SSE mode (for remote clients)
npm run start:http

# Development with auto-reload
npm run dev

API 参考

工具(共34个)

钱包和网络

工具 描述 写吗?
get_wallet_address 显示已配置的钱包地址 否
get_supported_networks 列出可用网络 否
get_supported_markets 列出所有jToken市场及其地址 否

市场数据

工具 描述 写吗?
get_market_data 一个市场的详细数据(APY、TVL、费率)-合同查询 否
get_all_markets 所有市场概述-合同查询 否
get_protocol_summary 审计员配置和协议参数-合同查询 否
get_markets_from_api API 所有包含挖矿奖励和趋势的市场数据 否
get_dashboard_from_api API 协议级统计数据(TVL、用户等) 否
get_jtoken_details_from_api API 详细的jToken信息和利率模型 否

账户和余额

工具 描述 写吗?
get_account_summary 当前位置:供应、借用、健康因素-合同查询 否
get_account_data_from_api API 通过挖掘奖励和趋势增强账户数据 否
check_allowance 检查jToken的TRC20批准 否
get_trx_balance TRX余额 否
get_token_balance TRC20代币余额 否

贷款业务

工具 描述 写吗?
supply 存入资产以赚取利息 是
withdraw 提取供应资产 是
withdraw_all 从市场中撤出所有资金 是
borrow 抵押借款 是
repay 偿还未偿还的借款 是
enter_market 使市场成为抵押品 是
exit_market 禁用市场作为抵押品 是
approve_underlying 批准jToken的TRC20 是
claim_rewards 领取挖矿奖励 是

JST投票/治理

工具 描述 写吗?
get_proposal_list 列出所有具有状态和投票计数的治理提案 否
get_user_vote_status 用户的投票历史:已投票的提案、可撤回的投票 否
get_vote_info 投票权:JST余额、可用投票、锁定投票 否
get_locked_votes 投票锁定在特定提案中 否
check_jst_allowance_for_voting 检查JST是否批准WJST投票合同 否
approve_jst_for_voting 批准WJST投票合同的JST 是
deposit_jst_for_votes 存入JST以获得投票权(1 JST=1票) 是
withdraw_votes_to_jst 将WJST撤回JST 是
cast_vote 对某项提案投赞成票/反对票 是
withdraw_votes_from_proposal 从已完成的提案中收回投票 是

提示(AI引导的工作流)

提示 描述
supply_assets 通过平衡检查和批准逐步供应
borrow_assets 安全借贷,风险评估和健康因素检查
repay_borrow 带验证的指导还款
analyze_portfolio 具有风险评分的综合投资组合分析
compare_markets 寻找最佳供应/借用机会

建筑

mcp-server-TLD/
├── src/
│   ├── core/
│   │   ├── chains.ts          # Network configs + JustLend contract addresses
│   │   ├── abis.ts            # jToken, Comptroller, Oracle, TRC20 ABIs
│   │   ├── tools.ts           # MCP tool registrations
│   │   ├── prompts.ts         # AI-guided workflow prompts
│   │   ├── resources.ts       # Static protocol info resource
│   │   └── services/
│   │       ├── # — JustLend-specific —
│   │       ├── clients.ts     # TronWeb client factory (cached)
│   │       ├── wallet.ts      # Key/mnemonic management, signMessage, signTypedData
│   │       ├── markets.ts     # APY, TVL, utilization, prices
│   │       ├── account.ts     # User positions, liquidity, allowances
│   │       ├── lending.ts     # supply, borrow, repay, withdraw, collateral
│   │       ├── voting.ts      # JST governance: proposals, cast vote, deposit/withdraw WJST
│   │       ├── # — General TRON chain —
│   │       ├── address.ts     # Hex ↔ Base58 conversion, validation
│   │       ├── balance.ts     # TRX balance (rich), TRC20/TRC1155 balances
│   │       ├── blocks.ts      # Block queries, block number, chain ID
│   │       ├── transactions.ts# getTransaction, getTransactionInfo, waitForTransaction
│   │       ├── transfer.ts    # transferTRX, transferTRC20, approveTRC20
│   │       ├── tokens.ts      # TRC20/TRC721/TRC1155 metadata
│   │       ├── contracts.ts   # readContract, writeContract, multicall, deploy, estimateEnergy
│   │       ├── multicall-abi.ts # Multicall2 & Multicall3 ABIs
│   │       ├── staking.ts     # Stake 2.0: freeze, unfreeze, withdrawExpireUnfreeze
│   │       └── utils.ts       # toSun/fromSun, formatJson, hexToNumber, isAddress, …
│   ├── server/
│   │   ├── server.ts          # MCP server init
│   │   └── http-server.ts     # Express HTTP/SSE transport
│   └── index.ts               # Stdio entry point
├── bin/cli.js                 # CLI entry for npx
└── tests/
    └── core/
        ├── chains.test.ts
        └── services/
            ├── services.test.ts    # Client cache, legacy balance tests
            ├── address.test.ts     # Pure: address format conversion (16 tests)
            ├── utils.test.ts       # Pure: unit conversions, formatters (26 tests)
            ├── balance.test.ts     # Integration: TRX & TRC20 balances
            ├── blocks.test.ts      # Integration: block queries
            ├── contracts.test.ts   # Mixed: pure ABI helpers + integration reads
            ├── tokens.test.ts      # Integration: TRC20 token metadata
            ├── transactions.test.ts# Integration: transaction fetch
            ├── transfer.test.ts    # Write: skipped by default (TEST_TRANSFER=1)
            ├── staking.test.ts     # Write: skipped by default (TEST_STAKING=1)
            └── wallet.test.ts      # Unit: skipped without TRON_PRIVATE_KEY

测试

# Run all tests (pure/unit tests always pass; integration tests need network)
npm test

# Run individual test files (recommended to avoid TronGrid rate limits)
npx vitest run tests/core/services/utils.test.ts
npx vitest run tests/core/services/address.test.ts
npx vitest run tests/core/services/balance.test.ts
npx vitest run tests/core/services/blocks.test.ts
npx vitest run tests/core/services/contracts.test.ts
npx vitest run tests/core/services/transactions.test.ts
npx vitest run tests/core/services/tokens.test.ts

# Enable write/staking tests (uses real funds — use Nile testnet!)
TRON_PRIVATE_KEY=xxx TEST_TRANSFER=1 npx vitest run tests/core/services/transfer.test.ts
TRON_PRIVATE_KEY=xxx TEST_STAKING=1 npx vitest run tests/core/services/staking.test.ts

速率限制:集成测试对TronGrid进行真正的RPC调用 TRONGRID_API_KEY 空闲层限制为每秒几个请求。单独运行测试文件,或设置 TRONGRID_API_KEY 以避免429个错误。

安全注意事项

  • 私钥 仅从环境变量读取,从不通过MCP工具公开
  • 写入操作 清楚地标明 destructiveHint: true 在MCP注释中
  • 健康因素检查 提示防止危险借贷
  • 总是 尼罗河测试网测试 主网运行前
  • 小心 无限制审批 (approve_underlying 随着 max)
  • 从不分享 你的 claude_desktop_config.json 如果它包含密钥

对话示例

“JustLend目前的最佳供应率是多少?” → AI呼叫 get_all_markets,按供应商排序PY,显示排名

“我想提供10000 USDT来赚取利息” → AI使用 supply_assets 提示:检查余额→ 批准USDT→ 补给→ 验证

“我有清算的风险吗?” → AI呼叫 get_account_summary,分析健康因素,如果<1.5则发出警告

“用我的TRX抵押品借入500 USDT” → AI使用 borrow_assets 提示:检查抵押品→ 计算新的健康因子→ 如果安全,则执行

“地址TXxx…的TRX余额是多少?” → AI调用通用TRX余额工具,在TRX和Sun中返回余额

“冻结100 TRX以获取能量” → AI通过Stake 2.0调用质押服务冻结,返回交易哈希

“显示最新的治理建议” → AI呼叫 get_proposal_list,显示按ID排序的提案,包括状态和投票计数

“我想以1000 JST的价格投票支持425号提案” → AI检查 get_vote_info → 如果没有投票,建议 approve_jst_for_voting + deposit_jst_for_votes → then cast_vote

“从已完成的提案中撤回我的投票” → AI呼叫 get_user_vote_status 寻找可撤回的提案→ calls withdraw_votes_from_proposal 对于每一个

许可证

麻省理工学院