mcp服务器tronlink
TronLink MCP服务器——一个生产就绪的MCP服务器,使AI代理(Claude、GPT等)能够通过自然语言与TRON区块链进行交互。
建立在 @tronlink/tronlink-mcp-core,它提供两种操作模式:
- 编剧模式 --浏览器自动化以控制TronLink Chrome扩展程序UI(导航、单击、键入、截图等)
- 直接API模式 -通过TronGrid API、GasFree传输和多签名管理进行链上操作-无需浏览器
______________________________________________________________________
建筑
┌──────────────────────────────────────────────┐
│ AI Agent (Claude Desktop / Claude Code) │
└──────────────────┬───────────────────────────┘
│ MCP Protocol (stdio)
┌──────────────────▼───────────────────────────┐
│ @tronlink/mcp-server-tronlink │
│ │
│ ┌── Playwright Mode ─────────────────────┐ │
│ │ TronLinkSessionManager │ │
│ │ ├── Browser launch & extension load │ │
│ │ ├── Extension ID auto-detection │ │
│ │ ├── Multi-tab tracking & role classify │ │
│ │ ├── State extraction (DOM analysis) │ │
│ │ │ ├── TRON address (T-prefix, 34ch) │ │
│ │ │ ├── TRX balance │ │
│ │ │ ├── Network (Mainnet/Nile/Shasta) │ │
│ │ │ └── Screen detection (15 screens) │ │
│ │ └── Confirmation popup handling │ │
│ └────────────────────────────────────────┘ │
│ │
│ ┌── Direct API Mode ─────────────────────┐ │
│ │ TronLinkOnChainCapability (14 tools) │ │
│ │ ├── TRX/TRC20 transfer, swap, stake │ │
│ │ ├── Account & resource queries │ │
│ │ └── Multi-sig setup & signing │ │
│ │ │ │
│ │ TronLinkGasFreeCapability (3 tools) │ │
│ │ ├── Zero-gas TRC20 transfers │ │
│ │ └── Account & transaction queries │ │
│ │ │ │
│ │ TronLinkMultiSigCapability (5 tools) │ │
│ │ ├── Permission queries │ │
│ │ ├── Transaction submit & list │ │
│ │ └── WebSocket real-time monitoring │ │
│ └────────────────────────────────────────┘ │
│ │ (uses) │
│ ┌─────────────────▼──────────────────────┐ │
│ │ @tronlink/tronlink-mcp-core │ │
│ │ ├── MCP Server (stdio transport) │ │
│ │ ├── 56+ tl_* tool handlers │ │
│ │ ├── Knowledge Store │ │
│ │ └── Discovery Utils │ │
│ └────────────────────────────────────────┘ │
└──────────────────┬───────────────────────────┘
│ Playwright (Chromium) ← only for Playwright mode
┌──────────────────▼───────────────────────────┐
│ Chrome Browser │
│ ├── TronLink Extension (MV3) │
│ │ ├── popup.html#/home │
│ │ ├── popup.html#/login │
│ │ ├── popup.html#/settings │
│ │ ├── popup.html#/transfer │
│ │ └── secondary_popup.html (confirmations)│
│ └── DApp Pages │
└──────────────────────────────────────────────┘______________________________________________________________________
快速开始
零配置模式(最快)
只需配置 TL_TRONGRID_URL。如果不存在钱包,服务器将启动并显示两个设置选项,而不是立即创建一个:
{
"mcpServers": {
"tronlink": {
"command": "node",
"args": ["dist/index.js"],
"cwd": ".",
"env": {
"TL_TRONGRID_URL": "https://nile.trongrid.io"
}
}
}
}- 通过MCP工具自动创建:呼叫
tl_wallet_create
服务器生成一个随机密码,并将其保存到 ~/.agent-wallet/runtime_secrets.json,创建加密 main 钱包,并允许正在运行的会话使用它。
- 手动CLI设置:
1. 创建钱包: agent-wallet start local_secure --generate --wallet-id main 1. 添加 AGENT_WALLET_PASSWORD 给你的 .mcp.json env(必须与上面使用的密码匹配) 1. 重新启动MCP服务器
手动设置(先使用现有钱包或CLI)
如果您更喜欢自己创建钱包或使用现有钱包:
- 创建钱包:
agent-wallet start local_secure --generate --wallet-id main - 添加
AGENT_WALLET_PASSWORD给你的.mcp.jsonenv(必须与上面使用的密码匹配) - 重新启动MCP服务器
一旦配置了钱包(自动或手动),链上工具(tl_chain_*, tl_gasfree_*, tl_multisig_*)变得可用。
剧作家设置
1.构建TronLink扩展(仅限剧作家模式)
cd /path/to/tronlink-extension-pro
npm install
npm run build
# Output: dist/2.安装并构建MCP服务器
cd /path/to/mcp-server-tronlink
npm install
npm run build3.在本地创建钱包(链上工具需要)
npm install -g @bankofai/agent-wallet
agent-wallet start local_secure --generate --wallet-id main4.配置MCP JSON
所有配置均通过 env MCP JSON中的字段。服务器会 不 阅读 .env 文件夹。
请参阅下面的“集成”部分。有关变量引用,请参见 .env.example.
______________________________________________________________________
两种操作模式
剧作家模式——浏览器自动化
通过Playwright控制TronLink Chrome扩展程序。需要内置TronLink扩展。
需要时使用:
- 自动化钱包UI交互(导入钱包、导航屏幕、点击按钮)
- 测试DApp集成(连接钱包,通过弹出窗口签署交易)
- 截取钱包/DApp状态截图
- 对TronLink UI运行端到端测试
工具(27): tl_launch, tl_cleanup, tl_navigate, tl_click, tl_type, tl_screenshot, tl_get_state, tl_describe_screen, tl_accessibility_snapshot, tl_list_testids, tl_switch_to_tab, tl_close_tab, tl_wait_for, tl_wait_for_notification, tl_scroll, tl_keyboard, tl_evaluate, tl_clipboard, tl_seed_contract, tl_seed_contracts, tl_get_contract_address, tl_list_contracts, tl_set_context, tl_get_context, tl_run_steps, tl_list_flows, tl_list_testids
直接API模式-链上操作
使用TronWeb兼容的REST调用和本地加密签名直接调用TRON区块链API。 无需浏览器或扩展程序。
需要时使用:
- 查询账户余额、资源和交易历史记录
- 以编程方式发送TRX或TRC20代币
- 质押/撤销质押TRX,委托带宽/能量
- 通过SunSwap V2/V3执行代币交换
- 管理多签名钱包和交易
- 发送无气体TRC20传输
工具组:
| 组 | 工具 | 必需配置 |
|---|---|---|
| 链上 (14) | tl_chain_* | agent-wallet + TL_TRONGRID_URL |
| 多重签名 (5) | tl_multisig_* | TL_MULTISIG_BASE_URL +凭证 |
| GasFree (3) | tl_gasfree_* | TL_GASFREE_BASE_URL +API密钥 |
两种模式可以同时运行 --配置您需要的内容,服务器会自动启用相应的工具。
______________________________________________________________________
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
| 编剧模式 | ||
TRONLINK_EXTENSION_PATH | TronLink扩展构建目录(包含 manifest.json) | 自动检测 |
TRONLINK_SOURCE_PATH | TronLink扩展源目录(启用构建功能) | -- |
TL_MODE | 工作模式: e2e (测试)或 prod (生产) | prod |
TL_HEADLESS | 在无头模式下运行浏览器: true / false | false |
TL_SLOW_MO | 剧作家慢动作延迟(毫秒)(用于调试) | 0 |
| 特隆格API | ||
TL_TRONGRID_URL | TronGrid全节点API URL | - |
TL_TRONGRID_API_KEY | TronGrid API密钥(主网需要,尼罗河/沙斯塔不需要) | - |
| 钱包(代理钱包) | ||
AGENT_WALLET_PASSWORD | 加密密码(如果使用,则可选 tl_wallet_create;手动或现有钱包需要) | 由自动生成 tl_wallet_create |
AGENT_WALLET_DIR | 自定义钱包存储目录 | ~/.agent-wallet |
TL_OWNER_WALLET_ID | 多重签名的所有者钱包ID | 活动钱包 |
TL_COSIGNER_WALLET_ID | 多重签名的共同签名者钱包ID | -- |
| 链上 | ||
TL_SUNSWAP_ROUTER | SunSwap V2路由器合约地址 | -- |
TL_SUNSWAP_V3_ROUTER | SunSwap智能路由器(V3)合约地址 | -- |
TL_WTRX_ADDRESS | WTRX合约地址 | 主网默认值 |
| 多重签名 | ||
TL_MULTISIG_BASE_URL | 多页面服务API URL | - |
TL_MULTISIG_SECRET_ID | 多签服务密码ID | -- |
TL_MULTISIG_SECRET_KEY | 多签业务密钥(HmacSHA256签名密钥) | -- |
TL_MULTISIG_CHANNEL | 多签业务通道名称 | -- |
| GasFree | ||
TL_GASFREE_BASE_URL | GasFree服务URL | -- |
TL_GASFREE_API_KEY | 无气体API密钥 | - |
TL_GASFREE_API_SECRET | 无气体API秘密 | - |
配置multisig环境变量(BASE_URL+SECRET_ID+SECRET_KEY+CHANNEL)自动启用tl_multisig_*工具。 配置agent-wallet+TL_TRONGRID_URL启用tl_chain_*链上工具组(14个工具)。 配置TL_GASFREE_BASE_URL+TL_GASFREE_API_KEY启用tl_gasfree_*无气体转移工具组(3个工具)。 安全:私钥由管理@bankofai/agent-wallet具有加密的本地存储(local_secure).不支持env变量中的纯文本键。如果启动时不存在钱包,服务器将显示两条路径:调用tl_wallet_create自动生成一个(密码保存到~/.agent-wallet/runtime_secrets.json),或通过CLI手动创建一个并设置AGENT_WALLET_PASSWORD.
API密钥获取指南
TronGridneneneba API密钥(链上操作所需)
被所有人使用 tl_chain_* 工具(余额查询、转账、质押、掉期等)| 项目 | 详细信息 |
|---|---|
| 门户 | https://www.trongrid.io/ |
| 成本 | 免费(100000次请求/天);付费计划可用 |
| 测试网 | 尼罗河/沙斯塔多 不 需要API密钥 |
| 主网 | API密钥是 必需的 |
步骤:
- 访问https://www.trongrid.io/ → click
Sign Up - 通过电子邮件注册并验证
- 前往仪表盘→
Create API Key - 输入项目名称→ 生成密钥
- 将API密钥复制到
TL_TRONGRID_API_KEY
无气体API密钥(无气体TRC20转账)
被...使用 tl_gasfree_* 工具——由服务提供商支付天然气费用的TRC20代币转账| 项目 | 详细信息 |
|---|---|
| 开发者中心 | https://developer.gasfree.io/ |
| API规范 | https://gasfree.io/specification |
| 软件开发工具包 | npm install @gasfree/gasfree-sdk () |
| 测试网URL | https://open-test.gasfree.io/nile/ |
| 主网URL | https://open.gasfree.io/tron/ |
步骤:
- 访问https://developer.gasfree.io → 注册开发人员帐户
- 创建一个应用程序→ 系统生成
API Key和API Secret - 填写
TL_GASFREE_API_KEY和TL_GASFREE_API_SECRET - 注意:Nile测试网也需要密钥,但审批速度很快
SunSwap智能路由器地址(DEX交易)
被...使用 tl_chain_swap_v3 --通过SunSwap V3集中流动性进行代币互换| 网络 | 智能路由器地址 | 源 |
|---|---|---|
| 主网 | TCFNp179Lg46D16zKoumd4Poa2WFFdtqYj | SUN.io文档 |
| 尼罗河 | TB6xBCixqRPUSKiXb45ky1GhChFJ7qrfFj | 一样 |
无需应用程序,只需在中设置地址 TL_SUNSWAP_V3_ROUTER.
智能路由器是SunSwap的统一入口点,可自动选择V1/V2/V3/PSM/SunCurve池中的最佳路由。
WTRX合同地址
用于TRX↔ 代币交换(包裹TRX)
| 网络 | WTRX地址 |
|---|---|
| 主网 | TNUC9Qb1rRpS5CbWLmNMxXBjyFoydXjWFR (默认情况下,不需要手动配置) |
| 尼罗河 | 通过SunSwap路由器查询 WETH() 方法 |
主网不需要配置(使用默认值)。对于Nile测试网,查询地址并设置 TL_WTRX_ADDRESS.
多重签名服务凭据
被...使用 tl_multisig_* 工具——权限查询、事务提交、实时监控| 项目 | 详细信息 |
|---|---|
| 尼罗河测试网 | https://apinile.walletadapter.org |
| 主网 | https://api.walletadapter.org |
| 测试证书 | SECRET_ID=TEST / SECRET_KEY=TESTTESTTEST / CHANNEL=test |
测试网开箱即用 持有上述测试证书。
生产:联系TronLink团队获取官方证书。
钱包设置(可选——如果未配置,则自动创建)
如果不存在钱包,服务器将提示您从两条路径中选择一条:
- 在当前MCP会话中自动创建:呼叫
tl_wallet_create - 手动CLI设置:自己创建钱包,然后设置
AGENT_WALLET_PASSWORD并重新启动
手动CLI命令:
# 1. Install agent-wallet CLI
npm install -g @bankofai/agent-wallet
# 2. Create an encrypted wallet
agent-wallet start local_secure --generate --wallet-id main
# 3. (Optional) Create a cosigner wallet for multisig
agent-wallet start local_secure --generate --wallet-id cosigner您还可以通过MCP工具在运行时管理钱包: tl_wallet_list, tl_wallet_create, tl_wallet_set_active.
快速配置参考(Nile Testnet.mcp.json)
{
"mcpServers": {
"tronlink": {
"command": "node",
"args": ["dist/index.js"],
"cwd": ".",
"env": {
"TRONLINK_EXTENSION_PATH": "/path/to/tronlink-extension/dist",
"TL_MODE": "prod",
"TL_HEADLESS": "false",
"TL_TRONGRID_URL": "https://nile.trongrid.io",
"AGENT_WALLET_PASSWORD": "your-wallet-password",
"TL_SUNSWAP_ROUTER": "TKzxdSv2FZKQrEqkKVgp5DcwEXBEKMg2Ax",
"TL_SUNSWAP_V3_ROUTER": "TB6xBCixqRPUSKiXb45ky1GhChFJ7qrfFj",
"TL_MULTISIG_BASE_URL": "https://apinile.walletadapter.org",
"TL_MULTISIG_SECRET_ID": "TEST",
"TL_MULTISIG_SECRET_KEY": "TESTTESTTEST",
"TL_MULTISIG_CHANNEL": "test",
"TL_GASFREE_BASE_URL": "https://open-test.gasfree.io/nile/",
"TL_GASFREE_API_KEY": "your_gasfree_api_key",
"TL_GASFREE_API_SECRET": "your_gasfree_api_secret"
}
}
}
}测试网TRX水龙头:https://nileex.io/join/getJoinPage
仅限API配置(无Playwright,无浏览器)
如果您只需要直接的API工具(链上、多界面、无气体)而不需要浏览器自动化,则可以省略 TRONLINK_EXTENSION_PATH:
{
"mcpServers": {
"tronlink": {
"command": "node",
"args": ["dist/index.js"],
"cwd": ".",
"env": {
"TL_TRONGRID_URL": "https://nile.trongrid.io",
"AGENT_WALLET_PASSWORD": "your-wallet-password",
"TL_MULTISIG_BASE_URL": "https://apinile.walletadapter.org",
"TL_MULTISIG_SECRET_ID": "TEST",
"TL_MULTISIG_SECRET_KEY": "TESTTESTTEST",
"TL_MULTISIG_CHANNEL": "test",
"TL_GASFREE_BASE_URL": "https://open-test.gasfree.io/nile/",
"TL_GASFREE_API_KEY": "your_gasfree_api_key",
"TL_GASFREE_API_SECRET": "your_gasfree_api_secret"
}
}
}
}此配置可在不启动浏览器的情况下启用API工具(包括3个钱包管理工具)。基于剧作家的工具(tl_launch, tl_click等等)将不可用。如果 AGENT_WALLET_PASSWORD 如果省略,启动将提示您选择 tl_wallet_create 或手动CLI设置。
扩展路径自动检测
如果 TRONLINK_EXTENSION_PATH 如果未设置,服务器将搜索以下位置:
./dist./dist/prd../tronlink-extension-pro/dist../tronlink-extension-pro/dist/prd
条件:目录包含 manifest.json 文件。
______________________________________________________________________
整合
选项1:项目级 .mcp.json (推荐)
该项目包括 .mcp.json 文件。Claude Code会自动检测到它。请填写您的凭据。如果钱包还不存在,请致电 tl_wallet_create 启动后,或先在本地创建钱包并设置 AGENT_WALLET_PASSWORD:
# .mcp.json already exists, edit directly
# Fill in TL_MULTISIG_SECRET_ID / SECRET_KEY / CHANNEL etc.
# If you want the manual wallet path, also add AGENT_WALLET_PASSWORD after creating the wallet locally.mcp.json 例子:
{
"mcpServers": {
"tronlink": {
"command": "node",
"args": ["dist/index.js"],
"cwd": ".",
"env": {
"TRONLINK_EXTENSION_PATH": "../tronlink-extension-pro/dist",
"TL_MODE": "prod",
"TL_HEADLESS": "false",
"TL_SLOW_MO": "0",
"TL_TRONGRID_URL": "https://nile.trongrid.io",
"AGENT_WALLET_PASSWORD": "your-wallet-password",
"TL_TRONGRID_API_KEY": "",
"TL_MULTISIG_BASE_URL": "https://apinile.walletadapter.org",
"TL_MULTISIG_SECRET_ID": "your-secret-id",
"TL_MULTISIG_SECRET_KEY": "your-secret-key",
"TL_MULTISIG_CHANNEL": "your-channel"
}
}
}
}.mcp.json在...里.gitignore并且不会被承诺。
选项2:克劳德桌面
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tronlink": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-tronlink/dist/index.js"],
"env": {
"TRONLINK_EXTENSION_PATH": "/absolute/path/to/tronlink-extension-pro/dist",
"TL_TRONGRID_URL": "https://nile.trongrid.io",
"AGENT_WALLET_PASSWORD": "your-wallet-password",
"TL_MULTISIG_BASE_URL": "https://apinile.walletadapter.org",
"TL_MULTISIG_SECRET_ID": "your-secret-id",
"TL_MULTISIG_SECRET_KEY": "your-secret-key",
"TL_MULTISIG_CHANNEL": "your-channel"
}
}
}
}选项3:Claude代码全局设置
编辑 ~/.claude/settings.json 或项目级别 .claude/settings.json:
{
"mcpServers": {
"tronlink": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-tronlink/dist/index.js"],
"env": {
"TRONLINK_EXTENSION_PATH": "/absolute/path/to/tronlink-extension-pro/dist",
"TL_TRONGRID_URL": "https://nile.trongrid.io",
"AGENT_WALLET_PASSWORD": "your-wallet-password"
}
}
}
}其他MCP客户端
任何支持MCP协议(stdio传输)的客户端都可以连接。服务器通过stdin/stdout进行通信,并处理 tools/list 和 tools/call 请求:
______________________________________________________________________
用法示例
示例1:直接API-查询帐户并发送TRX
User: What is the balance of my account, and send 10 TRX to TAbCdEf...
AI executes:
1. tl_chain_get_address()
→ { address: "TVGcWWdJn9EnJP1LHCJDQaVCEcGsapKrVF" }
2. tl_chain_get_account({ address: "TVGcWWdJn9EnJP1LHCJDQaVCEcGsapKrVF" })
→ { balance_trx: "100.5", bandwidth: 600, energy: 0, ... }
3. tl_chain_send({ to: "TAbCdEf...", amount: "10" })
→ { txId: "abc123...", success: true }示例2:Direct API-Stake TRX和Delegate Energy
User: Stake 100 TRX for energy, then delegate energy to TAbCdEf...
AI executes:
1. tl_chain_stake({ action: "freeze", amount_trx: 100, resource: "ENERGY" })
→ { txId: "...", success: true }
2. tl_chain_resource({
action: "delegate",
resource: "ENERGY",
amount_trx: 50,
receiver: "TAbCdEf..."
})
→ { txId: "...", success: true }示例3:直接API-通过SunSwap进行代币交换
User: Swap 10 TRX for USDT
AI executes:
1. tl_chain_swap_v3({
from_token: "TRX",
to_token: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
amount: "10",
slippage: 1
})
→ { txId: "...", amountOut: "1.52", ... }示例4:直接API-无气体输送
User: Send 10 USDT to TAbCdEf... without paying gas
AI executes:
1. tl_gasfree_get_account({ address: "TVGcWWdJn9..." })
→ { eligible: true, daily_quota_remaining: 3, supported_tokens: [...] }
2. tl_gasfree_send({
to: "TAbCdEf...",
contract_address: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
amount: "10"
})
→ { txId: "...", success: true, gas_paid_by: "gasfree" }示例5:直接API-多签名工作流
User: Check my multisig permissions and submit a transaction
AI executes:
1. tl_multisig_query_auth({ address: "TXz9dfkjui6..." })
→ { permissions: [{ owner_address: "TDqGdq76...",
active_permissions: [{ threshold: 66, weight: 35 }] }] }
2. tl_multisig_list_tx({ address: "TXz9dfkjui6...", state: 0 })
→ { total: 3, transactions: [{ hash: "18213ab5...",
threshold: 3, currentWeight: 2, stateText: "processing" }] }
3. tl_multisig_submit_tx({
address: "TXz9dfkjui6...",
function_selector: "transfer(address,uint256)",
transaction: { raw_data: {...}, signature: ["659143f5..."] }
})
→ { success: true, code: 0, message: "OK" }
4. tl_multisig_connect_ws({ address: "TXz9dfkjui6..." })
→ { connected: true } // real-time pending tx notifications示例6:剧作家——启动钱包并检查状态
User: Launch TronLink and show me the wallet state
AI executes:
1. tl_launch({ fixture: "default" })
→ { sessionId: "tl-1741504523", extensionId: "abc...", extensionUrl: "chrome-extension://..." }
2. tl_get_state()
→ { currentScreen: "home", isUnlocked: true, accountAddress: "TXyz...",
networkName: "Mainnet", balanceTrx: "100.5" }示例7:剧作家——DApp交互
User: Open SunSwap and connect wallet
AI executes:
1. tl_launch({ fixture: "default" })
2. tl_navigate({ target: "url", url: "https://sunswap.com" })
3. tl_click({ selector: ".connect-wallet-btn" })
4. tl_wait_for_notification({ timeout: 30000 })
5. tl_switch_to_tab({ role: "notification" })
6. tl_describe_screen()
7. tl_click({ a11yRef: "e3" }) // approve connection
8. tl_switch_to_tab({ role: "dapp" })
9. tl_screenshot()______________________________________________________________________
多重签名指南
网络参考
| 网络 | TronGridURL | Multi-Sig服务URL | neneneba API密钥 |
|---|---|---|---|
| 尼罗河测试网 | https://nile.trongrid.io | https://apinile.walletadapter.org | 不需要 |
| 沙斯塔测试网 | https://api.shasta.trongrid.io | -- | 不需要 |
| 主网 | https://api.trongrid.io | https://api.walletadapter.org | 必需 |
测试网TRX水龙头:https://nileex.io/join/getJoinPage
TRON多信号权限模型
TRON帐户有三个权限级别:
| 权限 | ID | 描述 |
|---|---|---|
| 所有者 | 0 | 最高级别--可以修改所有权限并执行所有合同 |
| 目击者 | 1 | 仅具有超级代表性(批量生产) |
| 活跃的 | 2+ | 自定义权限——可配置允许的合约类型(最多8种) |
每个权限包含:
- 阈值:执行所需的最小累积重量
- 钥匙:签名者列表
[{address, weight}](每个权限最多5个) - 运营:32字节十六进制位掩码,定义允许的合约类型(仅活动)
多签手续费
accountPermissionUpdate:100 TRX- 每笔多签交易:额外1 TRX
多信号完整流程
1. Setup multi-sig permissions (accountPermissionUpdate)
├── Define owner permission (recommended: keep threshold=1 for recovery)
└── Define active permission (e.g., threshold=2, two signers each weight=1)
2. Create multi-sig transaction (with Permission_id=2)
└── Transaction specifies active permission
3. Collect signatures
├── Signer A signs → submit to multi-sig service
└── Signer B signs → submit to multi-sig service
4. Auto-broadcast when threshold reached
└── Service checks currentWeight >= threshold → broadcast内置多信号流食谱
以...来看 tl_list_flows:
| 流ID | 描述 |
|---|---|
multisig_query_auth | 查询地址多重签名权限(所有者/活动、阈值、权重) |
multisig_list_transactions | 列出多重签名交易(按状态筛选:待定/成功/失败) |
multisig_monitor | WebSocket实时监控+列出当前待处理事务 |
multisig_stop_monitor | 断开WebSocket监控 |
multisig_submit_tx | 将已签名的交易提交给多签名服务(阈值自动广播) |
multisig_check | 完整状态检查:权限→ 待定交易→ 未签名tx |
安全建议
- 保持所有者阈值=1:设置多签名时,将所有者权限保持为单签名(阈值=1),以便在活动签名者不可用时始终可以恢复
- 首先在测试网上进行测试:在主网上操作之前,在尼罗河测试网上进行彻底测试
- 钥匙安全:私钥通过加密
@bankofai/agent-wallet(local_secure类型)。不支持env变量中的纯文本键。如果你使用tl_wallet_create,密码保存到~/.agent-wallet/runtime_secrets.json;如果使用手动路径,请设置AGENT_WALLET_PASSWORD你自己。不要删除runtime_secrets.json--需要解密现有的自动创建的钱包 - 交易到期:未签名的交易将在约60秒后过期--在过期前收集所有签名
______________________________________________________________________
所有可用工具
服务器通过MCP协议公开55多种工具。工具按模式分组:
剧作家模式工具
会话管理: tl_launch / tl_cleanup
状态与发现: tl_get_state / tl_describe_screen / tl_list_testids / tl_accessibility_snapshot
导航: tl_navigate / tl_switch_to_tab / tl_close_tab / tl_wait_for_notification
UI交互: tl_click / tl_type / tl_wait_for / tl_scroll / tl_keyboard / tl_evaluate
屏幕截图和剪贴板: tl_screenshot / tl_clipboard
合同种子(e2e): tl_seed_contract / tl_seed_contracts / tl_get_contract_address / tl_list_contracts
上下文: tl_set_context / tl_get_context
知识存储: tl_knowledge_last / tl_knowledge_search / tl_knowledge_summarize / tl_knowledge_sessions
批次: tl_run_steps
流动食谱: tl_list_flows (32个内置食谱,带有预检查功能)
钱包管理工具
| 工具 | 说明 |
|---|---|
tl_wallet_list | 列出所有带有ID、类型、活动状态和TRON地址的钱包 |
tl_wallet_create | 自动生成加密钱包并将其附加到正在运行的MCP会话 |
tl_wallet_set_active | 按ID切换活动钱包(热交换到所有功能) |
API直接工具
链上 (要求 agent-wallet + TL_TRONGRID_URL):
| 工具 | 说明 |
|---|---|
tl_chain_get_address | 从加密的代理钱包中获取TRON地址 |
tl_chain_get_account | 查询账户:TRX余额、带宽、能量、权限 |
tl_chain_get_tokens | 查询TRC10+TRC20代币余额 |
tl_chain_send | 发送TRX、TRC10或TRC20代币 |
tl_chain_get_tx | 通过txID获取交易详情 |
tl_chain_get_history | 分页查询交易历史 |
tl_chain_stake | 冻结/解冻TRX以获取带宽或能量(赌注2.0) |
tl_chain_get_staking | 查询质押状态:冻结金额、投票、待解冻 |
tl_chain_resource | 委派/取消委派带宽或能源资源 |
tl_chain_swap | 通过SunSwap V2估算或执行代币交换 |
tl_chain_swap_v3 | 通过SunSwap V3智能路由器执行令牌交换 |
tl_chain_setup_multisig | 配置多重签名权限(accountPermissionUpdate) |
tl_chain_create_multisig_tx | 使用权限ID创建未签名的多重签名交易 |
tl_chain_sign_multisig_tx | 与所有者或共同签名者钱包签署多重签名交易 |
多重签名 (需要多重签名服务配置):
| 工具 | 说明 |
|---|---|
tl_multisig_query_auth | 查询地址多重签名权限(阈值、权重) |
tl_multisig_submit_tx | 提交已签名的交易(阈值自动广播) |
tl_multisig_list_tx | 查询交易历史(待定/成功/失败,签名进度) |
tl_multisig_connect_ws | 连接WebSocket以获取实时待处理的tx通知 |
tl_multisig_disconnect_ws | 断开WebSocket侦听器 |
GasFree (要求 TL_GASFREE_BASE_URL +API密钥):
| 工具 | 说明 |
|---|---|
tl_gasfree_get_account | 查询账户资格、支持的代币、每日配额 |
tl_gasfree_get_transactions | 分页查询无气交易历史 |
tl_gasfree_send | 免费发送TRC20代币 |
预检查机制
所有交易工具在执行前都会自动执行安全检查:
| 操作 | 预检查 |
|---|---|
| 发送TRX | 验证TRX余额是否充足 |
| 发送TRC20 | 验证是否有足够的令牌余额 |
| 质押TRX | 验证可用TRX余额 |
| 解锁TRX | 验证是否有足够的质押金额 |
| 委派资源 | 验证是否有足够的冻结资源 |
| 回收委派 | 验证活动资源委派是否存在 |
| 设置多信号 | 验证TRX余额>=100 TRX |
| 创建多签tx | 验证配置的多签权限 |
| Swap(V2/V3) | 验证是否有足够的源令牌余额 |
| GasFree发送 | 验证资格、代币支持、每日配额、代币余额 |
______________________________________________________________________
核心组件
TronLinkSessionManager(编剧模式)
全面实施 ISessionManager 接口:
| 功能 | 详细信息 |
|---|---|
| 浏览器启动 | 剧作家Chromium --load-extension TronLink |
| 扩展ID解析 | 自动从中提取32个字符ID chrome-extension:// URL或服务工作者 |
| 扩展准备就绪 | 等待React挂载 #root,确认DOM非空 |
| 屏幕检测 | 基于URL哈希的15个TronLink屏幕检测 |
| 国家提取 | TRON地址(T前缀,34个字符)、TRX余额、网络的DOM分析 |
| 标签跟踪 | 自动分类页面角色:扩展/通知/dap/其他 |
| 确认处理 | 民意调查+ waitForEvent('page') 用于二次弹出检测 |
| 安全清理 | 依次关闭Fixture、Chain、MockServer,然后关闭浏览器 |
TronLinkOnChainCapability(直接API模式)
| 功能 | 详细信息 |
|---|---|
| API调用 | 对TronGrid全节点API的直接REST调用 |
| 签署 | 通过加密钱包签名 @bankofai/agent-wallet |
| 地址推导 | 已从加密钱包中解决 |
| 支持的操作 | 转让、质押、委托、交换(V2/V3)、多重签名设置/创建/签名 |
| 预检查 | 每次交易前进行平衡和权限验证 |
TronLinkGasFreeCapability(直接API模式)
| 功能 | 详细信息 |
|---|---|
| API调用 | 用于零-gas TRC20传输的GasFree REST API |
| 资格检查 | 发送前验证帐户、令牌支持和每日配额 |
| 签署 | 通过加密钱包签名 @bankofai/agent-wallet GasFree授权 |
TronLinkMultiSigCapability(直接API模式)
| 功能 | 详细信息 |
|---|---|
| 权限查询 | REST调用 /multi/auth 用于所有者/活动权限数据 |
| 交易提交 | REST调用 /multi/transaction 带有签名的事务有效负载 |
| 交易列表 | REST调用 /multi/list 具有分页和状态过滤功能 |
| WebSocket | 实时 /multi/socket 挂起tx通知的连接 |
| 身份验证签名 | 自动生成的HmacSHA256 API签名(sign_version=v1) |
TronLink构建能力
| 功能 | 详细信息 |
|---|---|
| 构建命令 | 调用TronLink项目的 npm run build / build:prd:chrome / build:mv2 |
| 生成检测 | 检查输出目录 manifest.json |
| 超时 | 5分钟 |
TronLinkState快照功能
| 功能 | 详细信息 |
|---|---|
| 屏幕检测 | URL哈希匹配+密码输入回退 |
| 地址提取 | 正则表达式匹配 T[A-Za-z1-9]{33} |
| 余额提取 | 正则表达式匹配 [\d,.]+\s*TRX |
| 网络检测 | 对Mainnet/Nile/Shata/Testnet关键字进行DOM扫描 |
______________________________________________________________________
项目结构
mcp-server-tronlink/
├── src/
│ ├── index.ts # Entry: parse config, register capabilities, start server
│ ├── wallet.ts # Unified wallet entry (agent-wallet, encrypted-only, guided auto-create)
│ ├── wallet-tools.ts # MCP wallet management tools (list, create, switch)
│ ├── session-manager.ts # TronLinkSessionManager (full ISessionManager implementation)
│ ├── capabilities/
│ │ ├── build.ts # TronLinkBuildCapability (webpack build)
│ │ ├── state-snapshot.ts # TronLinkStateSnapshotCapability (UI state extraction)
│ │ ├── multisig.ts # TronLinkMultiSigCapability (multi-sig REST + WebSocket)
│ │ ├── on-chain.ts # TronLinkOnChainCapability (14 on-chain operations)
│ │ ├── gasfree.ts # TronLinkGasFreeCapability (gas-free transfers)
│ │ └── tron-crypto.ts # TRON crypto utils (address derivation, signing, Base58)
│ └── flows/
│ ├── index.ts # Flow registration entry (32 built-in recipes)
│ ├── import-wallet.ts # Import wallet flow (disabled — violates encrypted-only policy)
│ ├── switch-network.ts # Switch network / enable testnet
│ ├── transfer-trx.ts # TRX / TRC20 transfer flows
│ ├── multisig.ts # Multi-sig flows (6 recipes)
│ ├── onchain.ts # On-chain flows (11 recipes with pre-checks)
│ └── gasfree.ts # GasFree flows (3 recipes)
├── .env.example # Environment variable reference (documentation only)
├── package.json
├── tsconfig.json
└── README.md______________________________________________________________________
当前限制
- 仅限Chrome扩展程序:目前支持Chrome桌面TronLink扩展程序;移动支持计划
- DOM依赖关系:状态提取依赖于TronLink UI DOM结构;UI重构可能需要调整
- 无数据testid:TronLink扩展不使用数据testid属性;依赖于可访问性树和CSS选择器
- 推荐头部模式:Chrome扩展程序在无头模式下可能存在兼容性问题
______________________________________________________________________
需求
- Node.js >= 20
- 剧作家 >=1.49(带Chromium)-仅在剧作家模式下需要
- 内置TronLink扩展 (
dist/和manifest.json)--仅在剧作家模式下需要
______________________________________________________________________
许可证
麻省理工学院许可证版权所有(c)2026 TronLink
