TON连接MCP服务器
一个生产就绪的MCP(模型上下文协议)服务器,使AI代理能够通过TON Connect协议与TON钱包进行交互。用户可以连接他们的钱包,并对代理发起的交易进行签名。
🚀 快速入门指南 -3分钟后开始跑步!
特性
- 🔌 钱包连接:通过TON Connect协议连接TON钱包
- 💸 交易签名:启动用户在钱包中批准的交易
- ✍️ 数据签名:对任意数据(文本、二进制或单元格格式)进行签名
- 📊 钱包状态:检查连接状态和钱包信息
- 🔄 会话管理:每次会话钱包连接
可用工具
list_wallets
获取可连接的所有可用TON钱包的列表。
connect_wallet
启动钱包连接。返回用户应在钱包中打开的通用链接。
参数:
wallet_name(可选):要连接的钱包名称bridge_url(可选):钱包的桥接URL
退货: 连接链接和说明
get_wallet_status
检查钱包是否已连接并获取钱包信息。
退货: 连接状态、地址、链和钱包名称
send_transaction
创建交易请求。用户需要在其连接的钱包中批准它。
参数:
to:收件人地址(用户友好格式)amount:以纳吨为单位的量(1吨=1000000000纳吨)payload(可选):事务有效载荷为base64valid_until(可选):事务过期时间戳(Unix秒)
退货: 交易BOC和状态
sign_data
请求数据签名。用户需要在其连接的钱包中批准它。
参数:
type:数据类型(text,binary,或cell)text(如果类型为,则需要text):要签名的文本bytes(如果类型为,则需要binary):Base64编码字节cell(如果类型为,则需要cell):Base64编码银行卡schema(如果类型为,则需要cell):TL-B架构network(可选):-239对于主网,-3用于测试网
退货: 签名、地址和时间戳
快速开始
30秒后添加到光标:
- 打开光标设置
- 首选 特性 → 模型上下文协议
- 点击 添加服务器 并粘贴:
{
"command": "npx",
"args": ["-y", "ton-connect-mcp"]
}就是这样! 🎉 需要时,Cursor将自动启动服务器。
- 默认情况下使用Palette的清单(https://app.palette.finance/tonconnect-manifest.json)
- 将会话存储在内存中
- 无需手动管理服务器
适用于克劳德桌面
添加到 claude_desktop_config.json:
{
"mcpServers": {
"ton-connect": {
"command": "npx",
"args": ["-y", "ton-connect-mcp"]
}
}
}VS代码
设置→ 扩展→ GitHub Copilot→ MCP服务器:
{
"command": "npx",
"args": ["-y", "ton-connect-mcp"]
}可选配置
在MCP客户端启动之前设置环境变量:
海关舱单 (可选):
export TONCONNECT_MANIFEST_URL="https://your-app.com/tonconnect-manifest.json"然后重新启动MCP客户端(Cursor/Claude等)
安装开发
如果你想修改代码:
git clone https://github.com/ilyaqznetsow/ton-connect-mcp.git
cd ton-connect-mcp
npm install
npm run build配置
所有配置均为 可选的!服务器使用合理的默认值即可开箱即用。
环境变量
TONCONNECT_MANIFEST_URL (可选):
# Default: https://app.palette.finance/tonconnect-manifest.json
export TONCONNECT_MANIFEST_URL="https://your-app.com/tonconnect-manifest.json"端口 (可选):
# Default: 3000
export PORT=8080Redis URL (可选):
# Only for persistent storage across restarts
export REDIS_URL="redis://localhost:6379"
# or for production:
export REDIS_URL="redis://user:password@redis-host:6379"默认行为:服务器使用Palette的清单和内存存储-非常适合个人使用Cursor/Claude!
TON连接清单
您的清单必须是:
- 可通过HTTPS公开访问
- 遵循TON Connect官方清单格式:
{
"url": "https://your-app.com",
"name": "Your App Name",
"iconUrl": "https://your-app.com/icon.png",
"termsOfUseUrl": "https://your-app.com/terms",
"privacyPolicyUrl": "https://your-app.com/privacy"
}运作原理
MCP客户端(光标/克劳德/VS代码)自动:
- 下载软件包
npx - 需要时启动服务器
- 通过stdio(标准输入/输出)连接
- 完成后停止
你不需要手动启动或停止任何东西!
可用工具
钱包管理
- list_wallets -获取所有可用的TON Connect钱包
- connect_wallet -连接到特定的钱包(Tonkeeper、MyTonWallet等)
- disconnect_wallet -断开当前钱包
- get_wallt_status -检查连接状态和钱包信息
交易
- send_transaction -发送带有可选有效载荷的TON
- 带有注释的简单传输 - 自定义智能合约调用 - 使用state_init进行合约部署 - 原始base64 BOC有效载荷
有效载荷建设者(中银大厦)
- build_sett_transfer_payload -构建码头(代币)转移有效载荷
- build_nft_transfer_payload -构建NFT传输有效载荷
- 签名 -身份验证证明签名
🎯 包括中银大厦:服务器包括 @ton/ton 用于构建事务有效负载的库。无需外部工具!测试
在您的AI助手中尝试以下操作:
基本钱包操作
- “我可以连接哪些TON钱包?”
- “连接我的Tonkeeper钱包”
- “我的钱包地址是什么?”
简单转账
- “向EQD发送0.1吨…并评论‘你好,吨!’”
- “向UQA发送1吨…”
高级交易
- “建造一个码头转移有效载荷,向EQD发送10 USDT……”
- “构建NFT传输有效负载以发送给UQA…”
- “使用此base64有效载荷发送事务:te6c…”
- “部署具有此state_init:te6c的合约…”
故障排除
“服务器启动错误:EADDRINUSE”或“端口3000”
这意味着您缓存了旧的HTTP版本。修复:
# Clear npm cache and reinstall
npm cache clean --force
npm uninstall -g ton-connect-mcp
npm install -g ton-connect-mcp@latest
# Or use npx with latest
# In Cursor config, use:
{
"command": "npx",
"args": ["-y", "ton-connect-mcp@latest"]
}游标看不到服务器
- 完全重新启动游标
- 检查设置→ 特性→ 模型上下文协议
- 验证配置是否正确
- 尝试删除并重新添加服务器
交易有效载荷
带注释的简单传输
使用 comment 参数-它会自动编码:
{
to: "EQD...",
amount: "100000000", // 0.1 TON
comment: "Payment for services"
}Jetton(代币)转账
首先构建有效载荷,然后发送:
// Step 1: Build payload
build_jetton_transfer_payload({
recipient_address: "EQD...", // Where jettons go
jetton_amount: "1000000", // Amount (with decimals)
forward_payload: "Payment" // Optional comment
})
// Returns base64 BOC payload
// Step 2: Send transaction
send_transaction({
to: "EQC...", // YOUR jetton wallet address
amount: "50000000", // Gas: 0.05 TON
payload: "" // The base64 BOC
})自定义智能合约调用
提供原始base64 BOC有效载荷:
{
to: "EQA...", // Contract address
amount: "10000000", // 0.01 TON
payload: "te6c..." // Your custom BOC
}合同部署
包含state_init:
{
to: "EQB...", // New contract address
amount: "100000000", // Initial balance
state_init: "te6c...", // Contract code + data
payload: "te6c..." // Optional init message
}实现细节
- 运输:stdio(标准输入/输出)-由MCP客户端自动管理
- 存储:内存中(非常适合个人使用)
- 协议:Real TON Connect SDK-无模拟
- 会话:每个流程实例一个会话
- 清单:调色板财务(默认)
- 依赖项:MCP SDK、TON Connect SDK、@TON/TON(用于BOC大楼)、Zod
- 有效载荷支持:
- 注释(自动编码) - 杰顿转移(符合TEP-74标准) - NFT传输(符合TEP-62标准) - 自定义BOC有效载荷 - 合约部署的状态初始化
为什么选择stdio?
- 自动启动:MCP客户端自动启动服务器
- 自动停止:服务器在不需要时停止
- 无端口:无端口冲突或防火墙问题
- 简单:没有HTTP服务器,没有手动管理
- 非常适合AI助手:游标、克劳德、VS代码处理一切
用法示例
- 列出可用钱包:
Agent: Use list_wallets tool
Result: Returns actual wallets from TON Connect registry (Tonkeeper, MyTonWallet, etc.)- 连接钱包:
Agent: Use connect_wallet tool with wallet_name="Tonkeeper"
Result: Returns a real TON Connect universal link
User: Opens the link in their Tonkeeper app and approves connection- 检查连接状态:
Agent: Use get_wallet_status tool
Result: Shows actual wallet address, chain, and public key- 发送交易:
Agent: Use send_transaction tool with to="EQD...", amount="1000000000"
Result: User approves in their wallet, returns actual transaction BOC
User: Approves transaction in wallet- 签名数据:
Agent: Use sign_data tool with type="text", text="Hello TON"
User: Approves signing in wallet建筑
服务器遵循SOLID原则:
- 单一责任:每个模块都有一个明确的目的
- storage.ts:存储抽象 - wallet-manager.ts:钱包连接管理 - index.ts:MCP服务器和工具
- 打开/关闭:可通过工具注册进行扩展
- 利斯科夫替补:使用TON Connect SDK接口
- 接口隔离:明确区分关注点
- 依赖倒置:取决于抽象(IStorage)
KISS原则:简单、直接的实现,无需过度工程。
许可证
麻省理工学院
