MCP服务器Tron
一个全面的模型上下文协议(MCP)服务器,为TRON网络提供区块链服务。该服务器使AI代理能够通过工具和AI引导的TRX、TRC20代币和智能合约提示,通过统一的界面与TRON区块链进行交互。
目录
概述
MCP TRON服务器利用模型上下文协议为AI代理提供区块链服务。它完全支持TRON生态系统,使用 tronweb.
关键能力:
- 区块链数据:读取区块、交易和链参数(能量/带宽成本)。
- 智能合约:与任何TRON智能合约交互(读/写)。
- 代币:转移TRX和TRC20代币;检查余额。
- 地址管理:在十六进制(0x…)和Base58(T…)格式之间转换。
- 钱包集成:代理钱包管理的文件备份钱包。
- 多网络:无缝支持主网、尼罗河和沙斯塔。
- 动态访问控制:写功能强大的工具保持注册;
--readonly隐藏它们,如果没有可用的钱包,依赖钱包的处理程序在执行时会失败。
特性
区块链数据访问
- TRON网络支持:主网、尼罗河、沙斯塔。
- 链信息:块编号、链ID、RPC端点。
- 块数据:通过数字或哈希访问。
- 交易详情:详细信息,包括资源使用情况(能源/带宽)。
- 资源成本:查询能源和带宽价格的当前链参数。
代币服务
- 本地TRX:检查余额和转账。
- TRC20代币:
- 检查余额。 - 转移代币。 - 获取令牌元数据(名称、符号、小数)。
地址服务
- 格式转换:在十六进制之间转换(
41...或0x...)Base58(T...)格式。 - 验证:验证TRON上的地址是否有效。
智能合约交互
- 阅读合同:呼叫
view和pure功能。 - 撰写合同:执行状态更改功能。
- ABI提取:自动从区块链中获取经过验证的合约的ABI。
治理与建议
- 超级代表:列出、投票、创建/更新证人、管理经纪业务。
- 提案:列出、查看、创建、批准和删除治理建议。
- 奖励:查询并提取SR投票奖励。
事件和数据查询
- 合同事件:按交易、合约地址或区块号查询事件。
- 账户数据:交易历史、TRC20转账、内部交易、代币余额(通过TronGrid)。
- 合同数据:合约交易历史、内部交易、代币持有者列表。
- 孟普尔:查看待处理交易和池大小。
- 节点信息:列出连接的节点并查询节点详细信息。
质押和资源委托(质押2.0)
- 标桩:冻结/解冻TRX以获取能量或带宽。
- 授权:将资源委派和取消委派给其他帐户。
- 查询:可用解冻计数、可提取金额、委托详情。
钱包和安全
- 代理钱包:通过文件备份钱包存储
agent-walletSDK。 - HD钱包:支持BIP-44导出路径
m/44'/195'/0'/0/{index}. - 签署:签署任意消息和交易。
支持的网络
- 主网:
mainnet(默认) - 尼罗河测试网:
nile - 沙斯塔测试网:
shasta
先决条件
- 20.0.0或更高
- 可选: TronGridneneneba API密钥 以避免主网上的速率限制。
安装
# Clone the repository
git clone https://github.com/BofAI/mcp-server-tron.git
cd mcp-server-tron
# Install dependencies
npm install配置
环境变量
关键安全说明:为了您的安全, 永不 将私钥或助记符直接保存在MCP配置JSON文件中(如 claude_desktop_config.json 或 mcp.json).有关钱包设置,请按照以下步骤操作 agent-wallet的文件支持配置和支持的SDK AGENT_WALLET_* 设置;仅将环境变量用于非秘密操作设置,如 TRONGRID_API_KEY.
网络配置
TRONGRID_API_KEY:(可选)您的TronGridneneneba API密钥。
- 为什么:TRON主网RPC有严格的速率限制。当 TRONGRID_API_KEY 设置为(且非空),服务器使用 https://api.trongrid.io 作为默认RPC主机。 - 后备方案:何时 TRONGRID_API_KEY 未设置,服务器使用 https://hptg.bankofai.io 作为默认RPC主机 mainnet. - 用法:
export TRONGRID_API_KEY=""钱包配置
钱包通过以下方式管理 agent-wallet 文件备份配置。此存储库不再读取或映射旧版本 TRON_PRIVATE_KEY / TRON_MNEMONIC / TRON_ACCOUNT_INDEX 钱包变量。
先决条件:安装和配置 代理人钱包
看agent-wallet对于钱包文件格式、本地设置和支持的SDKAGENT_WALLET_*设置。
服务器配置
服务器在端口上运行 3001 默认情况下为HTTP模式。
用法
本地运行
# Start in stdio mode (for MCP clients like Claude Desktop/Cursor)
npm start
# Start in readonly mode (disables write tools)
npm start -- --readonly
# Start in stateless HTTP mode (Streamable HTTP)
npm run start:http码头工人
塑造形象:
docker build -t mcp-server-tron:test .运行装载了本地日志的容器:
docker run -d \
--name mcp-tron \
-p 3001:3001 \
-e MCP_HOST=0.0.0.0 \
-e MCP_PORT=3001 \
-e MCP_LOG_DIR=/app/logs \
-v "$(pwd)/logs:/app/logs" \
mcp-server-tron:testDocker日志被写入挂载的 logs/ 目录,并按日期命名,例如:
logs/mcp-server-tron-2026-03-18-combined.loglogs/mcp-server-tron-2026-03-18-error.log
测试
该项目包括一个全面的测试套件,包括单元测试和集成测试(使用Nile测试网)。
# Run all tests
npm test
# Unit tests (mocked services, no network)
npx vitest tests/core/tools.test.ts # All MCP tools registration & handlers
npx vitest tests/core/services/contracts.test.ts # Contract services
npx vitest tests/core/services/account-resource.test.ts # Account resource services
npx vitest tests/core/services/staking.test.ts # Staking services
# Integration tests (real Nile RPC; write-operation coverage is skipped unless wallet support is explicitly enabled)
npx vitest tests/core/tools_integration.test.ts # Full tool flow on Nile
npx vitest tests/core/services/multicall.test.ts # Multicall integration
npx vitest tests/core/services/services.test.ts # Services integration- 单元测试 使用模拟,不需要网络或钱包。
- 集成测试 (
tools_integration.test.ts)称尼罗河RPC;大多数情况是只读的。默认情况下,依赖钱包的处理程序在运行时失败时执行,而写入成功路径需要明确的钱包夹具或等效设置。
客户端配置
选项A:快速入门(推荐)
通过stdio传输直接从npm运行最新版本。
克劳德代码:
claude mcp add mcp-server-tron -- npx -y @bankofai/mcp-server-tron光标 (.cursor/mcp.json):
{
"mcpServers": {
"mcp-server-tron": {
"command": "npx",
"args": ["-y", "@bankofai/mcp-server-tron"],
"env": {
"TRONGRID_API_KEY": "YOUR_KEY_HERE"
}
}
}
}选项B:官方托管服务器(远程)
连接到官方托管服务器 https://tron-mcp-server.bankofai.io无需安装,只读模式,无状态HTTP。
克劳德代码:
claude mcp add -transport http mcp-server-tron https://tron-mcp-server.bankofai.io/mcp光标 (.cursor/mcp.json):
{
"mcpServers": {
"mcp-server-tron": {
"url": "https://tron-mcp-server.bankofai.io/mcp"
}
}
}API 参考
工具
钱包和地址
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_wallet_address | 获取配置的钱包地址(Base58和十六进制)。 | - |
list_wallets | 列出所有带有ID和地址的可用钱包。 | - |
select_wallet | 在运行时切换活动钱包(代理钱包模式)。 | walletId |
convert_address | 在Hex和Base58格式之间转换。 | address |
网络与资源
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_chain_info | 获取当前区块链ID | network |
get_chain_parameters | 获取当前的能源和带宽成本。 | network |
get_energy_prices | 查询历史能源单价。 | network |
get_bandwidth_prices | 查询历史带宽单价。 | network |
get_burn_trx | 查询从费用中消耗的TRX总数。 | network |
get_supported_networks | 列出可用网络。 | - |
区块和交易
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_block | 按数字或哈希值获取块。 | blockIdentifier, network |
get_latest_block | 获取最新区块。 | network |
get_transaction | 通过哈希获取交易详细信息。 | txHash, network |
get_transaction_info | 获取收据/信息,包括资源使用情况。 | txHash, network |
get_block_by_num | 按块高度查询块。 | num, network |
get_block_by_id | 按块ID(哈希)查询块。 | value, network |
get_block_by_latest_num | 获取最新的N个块(固化)。 | num, network |
get_block_by_limit_next | 获取范围\[startNum,endNum)内的块 | startNum, endNum, network |
get_now_block | 获取当前最新的区块信息。 | network |
get_transaction_by_id | 按txID查询交易状态/内容。 | value, network |
get_transaction_info_by_id | 按txID查询交易回单。 | value, network |
get_transaction_info_by_block_num | 获取一个区块中所有交易的收据。 | num, network |
get_approved_list | 查询签署交易的账户列表。 | transaction, network |
get_block_balance | 在一个块中获取所有余额更改操作。 | hash, number, network |
广播与交易大楼(写作)
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
create_transaction | 创建未签名的TRX转账交易。 | ownerAddress, toAddress, amount, network |
broadcast_transaction | 将签名的交易JSON对象广播到TRON网络 | transaction, network |
broadcast_hex | 广播已签名的protobuf编码的事务十六进制字符串 | transaction, network |
余额
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_balance | 获取地址的TRX余额。 | address, network |
get_token_balance | 获取地址的TRC20令牌余额。 | address, tokenAddress, network |
转账(写)
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
transfer_trx | 将TRX(本机)发送到一个地址。 | to, amount, network |
transfer_trc20 | 将TRC20令牌发送到一个地址。 | tokenAddress, to, amount, network |
智能合约
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
read_contract | 呼叫只读(view/pure)功能。 | contractAddress, functionName, args, network |
get_contract | 从链中获取原始合约元数据(ABI、字节码)。 | contractAddress, network |
get_contract_info | 获取ABI、函数列表和原始元数据。 | contractAddress, network |
fetch_contract_abi | 获取已验证合约的ABI条目数组。 | contractAddress, network |
multicall | 在一个批处理中执行多个读取调用。 | calls, network |
write_contract | 执行状态更改合同功能。 | contractAddress, functionName, args, value, network |
deploy_contract | 使用ABI和字节码部署智能合约。 | abi, bytecode, args, network |
estimate_energy | 估算合同通话的能耗。 | address, functionName, abi, network |
update_contract_setting | 更新consume_user_resource_percent(仅限创建者)。 | contractAddress, consumeUserResourcePercent, network |
update_energy_limit | 更新originEnergyLimit(仅限创建者)。 | contractAddress, originEnergyLimit, network |
clear_abi | 清除链上ABI元数据(仅限创建者)。 | contractAddress, network |
账户管理
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_account | 获取完整的帐户信息(余额、资源、权限等)。 | address, network |
get_account_balance | 在特定区块高度获得TRX余额。 | address, blockHash, blockNumber, network |
generate_account | 离线生成新的TRON密钥对。 | - |
validate_address | 验证TRON地址并检测格式。 | address |
get_account_net | 获取帐户的带宽信息。 | address, network |
get_account_resource | 获取能源、带宽和授权详细信息。 | address, network |
get_delegated_resource | 查询两个账户之间的委托资源(Stake 2.0)。 | fromAddress, toAddress, network |
get_delegated_resource_index | 查询委托索引(谁委托/从该账户委托)。 | address, network |
create_account | 激活链上的新帐户(需要带宽)。 | address, network |
update_account | 设置帐户名(只能设置一次)。 | accountName, network |
account_permission_update | 更新多重签名权限。 | ownerPermission, activePermissions, network |
质押(质押2.0)
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
freeze_balance_v2 | 冻结TRX以获取资源(带宽/能量)。 | amount, resource, network |
unfreeze_balance_v2 | 解冻TRX以释放资源。 | amount, resource, network |
withdraw_expire_unfreeze | 将过期未冻结的余额提取回可用状态。 | network |
cancel_all_unfreeze_v2 | 重新质押待解冻;撤回过期的。 | network |
get_available_unfreeze_count | 获取剩余的拆堆操作配额(最大32)。 | address, network |
get_can_withdraw_unfreeze_amount | 在时间戳处解冻可提取的TRX。 | address, timestampMs, network |
账户资源(Stake 2.0委托)
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
delegate_resource | 将BANDWIDTH/EENERGY委派到另一个地址。 | receiverAddress, amount, resource, network |
undelegate_resource | 撤销委托的资源。 | receiverAddress, amount, resource, network |
get_can_delegated_max_size | 获取地址的最大可授权金额。 | address, resource, network |
get_delegated_resource_v2 | 获取两个地址之间的委派详细信息。 | fromAddress, toAddress, network |
get_delegated_resource_account_index_v2 | 获取谁被委派到某个地址/从某个地址委派。 | address, network |
治理(超级代表)
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
list_witnesses | 获取网络上所有超级代表的完整列表 | network |
get_paginated_witnesses | 获取当前活动超级代表的分页列表。 | offset, limit, network |
get_next_maintenance_time | 获取下一次SR维护(投票计数)时间。 | network |
get_reward | 获得一个地址的无人认领的SR投票奖励。 | address, network |
get_brokerage | 获得SR经纪比率(与选民分享奖励)。 | address, network |
create_witness | 申请成为超级代表候选人。 | url, network |
update_witness | 更新超级代表URL | url, network |
vote_witness | 用冻结的TRX投票给超级代表。 | votes, network |
withdraw_balance | 提取累积的SR区块奖励。 | network |
update_brokerage | 更新SR经纪比率。 | brokerage, network |
提案
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
list_proposals | 列出所有网络治理建议。 | network |
get_proposal | 按ID获取特定提案的详细信息 | proposalId, network |
create_proposal | 创建新的治理提案(仅限SR)。 | parameters, network |
approve_proposal | 批准或撤销提案(仅限SR)。 | proposalId, hasApproval, network |
delete_proposal | 删除提案(仅限创建者)。 | proposalId, network |
事件
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_events_by_transaction_id | 获取特定事务发出的所有事件。 | transactionId, onlyConfirmed, network |
get_events_by_contract_address | 获取特定合约发出的事件。 | contractAddress, eventName, network |
get_events_by_block_number | 获取特定块中发出的所有事件。 | blockNumber, network |
get_events_of_latest_block | 获取最新区块的所有事件。 | network |
账户数据(TronGrid)
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_account_info | 从TronGrid获取帐户摘要 | address, network |
get_account_transactions | 获取帐户的交易历史记录。 | address, limit, network |
get_account_trc20_transactions | 获取帐户的TRC20转账历史记录。 | address, limit, network |
get_account_internal_transactions | 获取帐户的内部交易历史记录。 | address, limit, network |
get_account_trc20_balances | 获取账户的所有TRC20代币余额。 | address, network |
合同数据(TronGrid)
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_contract_transactions | 获取合约的交易历史记录。 | contractAddress, limit, network |
get_contract_internal_transactions | 获取合同的内部交易。 | contractAddress, limit, network |
get_trc20_token_holders | 获取TRC20代币的持有者列表。 | contractAddress, limit, network |
孟普尔
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
get_pending_transactions | 获取挂起池(mempool)中的事务ID。 | network |
get_transaction_from_pending | 从待处理池中获取特定交易。 | txId, network |
get_pending_size | 获取待处理事务池的当前大小。 | network |
节点
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
list_nodes | 列出网络上所有连接的节点地址 | network |
get_node_info | 获取有关已连接完整节点的详细信息。 | network |
签名与安全
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
sign_message | 使用配置的钱包签署消息。 | message |
提示
prepare_transfer:准备TRX/TRC20转账的互动指南。interact_with_contract:与智能合约交互的分步指南。diagnose_transaction:分析交易哈希的状态和错误。explain_tron_concept:用例子解释TRON区块链概念。analyze_wallet:钱包资产综合报告。check_network_status:关于网络健康和资源成本的报告。
安全注意事项
- 私钥和助记词:将钱包材料放在里面
agent-wallet文件备份配置,而不是纯文本MCP配置文件。此存储库不再映射旧版本TRON_*钱包变量;使用AGENT_WALLET_*仅当遵循agent-walletSDK文档。 - 共享计算机:请注意,其他用户可以通过以下方式看到普通环境变量
/proc或系统监控工具。 - 测试网:在主网上执行操作之前,始终在尼罗河或沙斯塔进行测试。
- 审批:通过以下方式批准代币津贴时请谨慎
write_contract只批准必要的。
项目结构
mcp-server-tron/
├── src/
│ ├── core/
│ │ ├── chains.ts # Network definitions
│ │ ├── tools/ # MCP Tool definitions (split by category)
│ │ ├── prompts.ts # MCP Prompt definitions
│ │ └── services/ # Business logic (TronWeb integration)
│ │ ├── wallet.ts # Wallet management
│ │ ├── transfer.ts # Transfer logic
│ │ ├── contracts.ts # Contract logic
│ │ ├── address.ts # Address conversion
│ │ └── ...
│ ├── server/ # HTTP/Stdio server setup
│ └── index.ts # Entry point
├── tests/ # Unit tests
└── package.json许可证
麻省理工学院
