使用说明
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 |
先决条件
- Node.js 20.0.0或更高
- 可选: TronGridneneneba API密钥 用于可靠的主网访问(强烈推荐)
安装
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 对于每一个
许可证
麻省理工学院