TON MCP 크로스체인: 에이전트가 네트워크 간 가치를 옮기는 첫 MCP
TONNode는 AI 에이전트가 TON을 읽는 데 그치지 않고 논커스터디얼 스왑과 6개 EVM 네트워크로의 크로스체인 스왑까지 실행하는 첫 MCP입니다. TON 위의 DeFAI 에이전트.
TON 위의 DeFAI 에이전트: 블록체인을 읽는 것만으로는 부족한 이유
여러분의 AI 에이전트는 TON에 관한 질문에 답할 수 있습니다. 지갑 잔액, 컨트랙트 상태, 트랜잭션 내역까지 모두 다룹니다. 사용자가 이렇게 입력합니다. "TON에 USDT 500개가 있는데 Base에서 포지션을 잡고 싶습니다." 그리고 에이전트는 거기서 멈춥니다. 전부 보이지만 아무것도 할 수 없습니다. "블록체인을 읽는다"와 "가치를 옮긴다" 사이에는 평범한 read-only MCP가 뛰어넘지 못하는 간극이 있습니다. 읽기만 하는 에이전트는 채팅창이 달린 대시보드일 뿐입니다. DeFAI(DeFi + AI)는 에이전트가 가치를 바라보는 데 그치지 않고 실제로 옮기기 시작하는 지점에서 출발합니다.
두 번째 벽은 신뢰입니다. 대부분의 "에이전트용 스마트 지갑"은 커스터디얼입니다. 에이전트가 무언가를 보내려면 누군가는 키를 쥐고 서명해야 하기 때문입니다. 자율 봇에게 이는 개인키나 operator 키가 여러분이 통제하지 못하는 곳에 놓인다는 뜻입니다. 남의 돈을 다루는 프로덕션에서 이는 받아들일 수 없습니다.
TONNode는 TON을 위한 hosted MCP 서버(사이트 tonnode.io)이며, 정확히 16개 도구를 갖추고 있습니다. 읽기, 스왑, 크로스체인, 지갑 생성입니다. 핵심은 이것입니다. 스왑과 크로스체인, 지갑 도구는 엄격하게 논커스터디얼입니다. 서버는 절대로 서명하지 않으며 자금과 개인키를 보관하지 않습니다. 서버가 돌려주는 것은 서명되지 않은 TonConnect 메시지이고, 서명은 사용자의 지갑이 합니다. 이것이 바로 키 통제권을 타협하지 않는 TON MCP 크로스체인입니다.
에이전트의 행동이 안전하려면 두 가지가 필요합니다.
- 에이전트는 트랜잭션을 준비하지만 서명하지는 않습니다. 서명은 TonConnect를 통해 사용자의 지갑이 합니다. 서버는 키에 손대지 않습니다.
- 에이전트는 하나의 네트워크를 넘어서도 동작할 수 있어야 합니다. 크립토의 가치는 여러 네트워크에 동시에 살아 있고, "TON만"으로는 과제의 절반밖에 풀지 못합니다.
TONNode는 둘 다 해냅니다. 아래에서는 이 도구들로 실제 DeFAI 에이전트를 조립하는 방법을 살펴봅니다.
논커스터디얼 스왑: Omniston을 통한 get_swap_quote와 build_swap_tx
TONNode의 스왑은 책임이 분리된 두 개의 도구로 이뤄집니다. 먼저 견적, 그다음 조립입니다.
get_swap_quote— Omniston 프로토콜을 통한 GRAM⇄제톤 교환의 확정 견적입니다. Omniston은 STON.fi와 DeDust의 유동성을 집계합니다. 즉 에이전트는 어느 쪽이 유리한지 추측하는 대신 두 대형 DEX 중 더 나은 가격을 한 번에 받습니다.build_swap_tx— TonConnect에 바로 넘길 수 있는 서명되지 않은 스왑 트랜잭션을 조립합니다. 바로 이 단계가 논커스터디얼의 본질입니다. 서버는 메시지를 돌려줄 뿐, 서명은 사용자의 지갑이 합니다.
비유는 간단합니다. get_swap_quote는 환전소의 가격표입니다. build_swap_tx는 여러분이 직접 읽고 직접 서명하는, 다 작성된 전표입니다. 창구 직원(서버)은 여러분의 지갑에 손을 대지 않습니다.
에이전트와의 대화에서는 이렇게 보입니다.
사용자: GRAM 100개를 USDT로 바꿔주세요, 확정 전에 환율도 보여주세요
에이전트 → get_swap_quote (GRAM → USDT, 100)
에이전트: 약 X USDT를 환율 Y로 받게 됩니다 (Omniston 경로). 트랜잭션을 조립할까요?
사용자: 네
에이전트 → build_swap_tx
에이전트: 준비됐습니다, 지갑에서 서명해 주세요 ↓ (TonConnect)
금액을 정확히 다루려면 반드시 알아야 할 디테일이 하나 있습니다. 제톤은 raw 단위로 저장되며, 환산은 decimals에 달려 있습니다. USDT는 decimals = 6이고, 대부분의 제톤은 9입니다. 잔액이나 금액을 보여주기 전에 에이전트는 get_jetton_info(제톤 메타데이터: 이름, 심볼, decimals, 발행량)와 get_jetton_balance(제톤 잔액, 제톤 지갑은 온체인에서 계산됩니다)를 호출해야 합니다. 그러지 않으면 에이전트는 사용자에게 "50" 대신 "50000000"을 보여주게 됩니다.
어느 단계에서도 키는 사용자의 기기를 떠나지 않습니다. 이 구조에 대한 더 자세한 설명은 에이전트를 위한 논커스터디얼 스왑 분석에 있습니다.
TON을 위한 MCP 크로스체인: 원자적 HTLC 에스크로와 6개 EVM 네트워크로 가는 길
이제 TON용 MCP 중 다른 어디에도 없는 것을 볼 차례입니다. 커스터디 브리지 없이 TON에서 EVM 네트워크로 크로스체인 스왑을 하는 기능입니다. TONNode는 이를 원자적 HTLC 에스크로(Hashed TimeLock Contract)로 구현합니다.
동작 방식은 자물쇠 두 개가 달린 금고를 통한 거래와 비슷합니다.
- 자금이 하나의 시크릿 해시 아래 양쪽 네트워크의 에스크로 컨트랙트에 잠깁니다.
- 시크릿이 공개되기 전까지 돈은 어디로도 움직이지 않습니다.
- 시크릿 공개는 양쪽을 동시에 잠금 해제합니다. 거래는 통째로 성사되거나 아예 성사되지 않습니다. "돈은 나갔는데 되돌아오지 않는" 중간 상태는 여기에 없습니다.
- 상대방이 멈춰 있다면, 타임아웃에 따라 자금은 소유자에게 반환됩니다.
지원되는 네트워크는 정확히 다음과 같으며, 출발지는 언제나 TON입니다.
- Ethereum
- Arbitrum
- Base
- BNB Chain
- Polygon
- Avalanche
TRON은 아직 지원되지 않습니다. 에이전트가 불가능한 것을 약속하지 않도록, 이 점을 사용자에게 솔직하게 말하는 것이 중요합니다.
여기서 논커스터디얼의 핵심은 이것입니다. build_crosschain_swap_tx는 서명되지 않은 HTLC 에스크로 트랜잭션과 시크릿을 함께 돌려줍니다. 시크릿은 서버가 아니라 사용자/에이전트에게 남습니다. 시크릿 공개는 온체인 준비 상태를 확인한 뒤에 밟는 별도의 명시적 단계입니다. 메커니즘 전체에 대한 분석은 TON → Ethereum 크로스체인 스왑 글에 있습니다.
크로스체인 도구 다섯 개: 견적, 조립, 추적, 공개, 환불
크로스체인 거래는 버튼 하나가 아니라 상태 기계입니다. 각 상태마다 대응하는 도구가 있습니다.
get_crosschain_quote— 크로스체인 교환 견적입니다. 사용자가 목적지 네트워크에서 얼마를 받는지, 수수료는 얼마인지, 경로는 어떻게 되는지를 알려줍니다.build_crosschain_swap_tx— 서명되지 않은 HTLC 에스크로 트랜잭션 + 시크릿입니다. 트랜잭션은 사용자의 지갑이 서명하고, 시크릿은 사용자에게 남습니다.track_crosschain_swap— 양쪽 네트워크에서의 거래 단계입니다. TON 쪽 에스크로에 잠겼는지, EVM 쪽에 맞물리는 잠금이 생겼는지, 시크릿이 공개됐는지, 정산이 끝났는지를 확인합니다.disclose_crosschain_secret— 정산을 위해 시크릿을 공개하되, 온체인 준비 상태를 확인한 뒤에만 수행합니다. 시크릿을 너무 일찍 공개해 거래에 대한 통제를 잃는 일을 막아주는 안전장치입니다.build_crosschain_refund— 거래가 멈추고 타임아웃이 발동한 경우, 에스크로에서 자금을 되돌려받는 트랜잭션을 조립합니다.
거래의 전체 생애주기
견적부터 정산 또는 환불까지, 에이전트가 실제로 돌리는 흐름은 이렇게 생겼습니다.
get_crosschain_quote → TON → Base 견적
build_crosschain_swap_tx → 서명되지 않은 HTLC 에스크로 tx + 시크릿
(사용자가 자기 지갑으로 에스크로에 서명)
track_crosschain_swap → 반대편이 준비되기를 기다림
disclose_crosschain_secret → 시크릿 공개, 정산 진행
── 멈췄다면 ──
build_crosschain_refund → 에스크로에서 환불
한 가지 눈여겨볼 점이 있습니다. 환불은 옆에 덧붙인 기능이 아니라 설계에 내장되어 있습니다. 자율 에이전트에게 이 구조를 안전하게 만들어 주는 것이 바로 build_crosschain_refund입니다. 무언가 잘못되더라도 자금은 갇히지 않습니다. 결정론적인 반환 경로가 있기 때문입니다. 이 다섯 개가 "무서운 브리지"를 예측 가능한 단계별 프로세스로 바꿔 놓습니다.
TONNode의 해자는 무엇인가: 논커스터디얼 + 크로스체인 + hosted
공식 패키지와 솔직하게 비교해 봅시다. TON Foundation의 @ton/mcp는 split-key 방식의 커스터디얼 에이전트 지갑입니다. operator 키는 에이전트가, owner 키는 사용자가 보유하며, 에이전트가 직접 서명합니다. 할 수 있는 일이 많습니다. 읽기, GRAM/제톤/NFT 전송, DEX 애그리게이터를 통한 스왑, NFT와 DNS 작업, 에이전트 지갑 생성과 임포트까지 가능하고, 무엇보다 공식 패키지입니다. 이는 분명한 강점이고 깎아내릴 이유가 없습니다.
다만 두 가지 제약은 본질적입니다.
- 커스터디얼입니다. operator 키가 에이전트에게 있으므로 에이전트가 자율적으로 지출할 수 있습니다. 어떤 시나리오에서는 편리하지만, 다른 시나리오에서는 받아들일 수 없는 리스크입니다.
- TON 전용입니다. 크로스체인이 없습니다.
TONNode는 세 축에서 다릅니다.
공식 @ton/mcp |
TONNode | |
|---|---|---|
| 키 모델 | 커스터디얼 (split-key, 직접 서명) | 논커스터디얼 (서명되지 않은 TonConnect 메시지 반환) |
| 크로스체인 | 없음, TON 전용 | TON → 6개 EVM 네트워크, 원자적 HTLC |
| 배포 | 로컬 / HTTP / serverless | 로컬(npx) 및 hosted 엔드포인트 |
논커스터디얼은 체크박스가 아니라 아키텍처적인 해자입니다. 서버는 절대로 서명하지 않으며 자금과 개인키를 보관하지 않습니다. generate_wallet(v3r2 / v4 / v5r1 / highload_v3 버전의 새 TON 지갑을 생성)조차 니모닉과 키를 사용자에게 넘길 뿐, 서버는 이를 저장하지 않습니다. 두 접근 방식의 상세한 비교는 커스터디 vs 논커스터디얼 MCP 자료에 있습니다.
혼동을 막기 위한 작은 용어 정리를 덧붙입니다. GRAM은 이름이 바뀐 Toncoin입니다(2026년 6월 변경). 네트워크 자체는 여전히 TON이라고 부릅니다.
연결 방법과 나만의 DeFAI 에이전트 조립하기
카드도 가입도 없이 무료로, 로컬에서 시작할 수 있습니다. @tonnode/mcp 패키지는 오픈소스(MIT)이며, HTTP 중간 계층 없이 TON의 네이티브 ADNL 프로토콜로 동작합니다.
로컬 설정과 hosted 설정
로컬 설정(퍼블릭 세트, 전체 읽기 기능) — MCP 클라이언트 설정에 이것만 추가하면 됩니다.
{
"mcpServers": {
"ton": { "command": "npx", "args": ["-y", "@tonnode/mcp"] }
}
}
hosted 엔드포인트(보장된 처리량, 전용 키):
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
이 설정은 모든 MCP 클라이언트에 적용됩니다. Claude, Cursor, ChatGPT/Codex 모두 해당합니다.
DeFAI 에이전트의 골격
TONNode 도구로 만드는 DeFAI 에이전트의 골격입니다. "다른 네트워크에서 포지션을 잡는" 전형적인 흐름을 보여줍니다.
사용자가 무엇을 가지고 있는지 확인:
get_balance → GRAM 잔액
get_jetton_info → 제톤의 decimals (USDT = 6, 보통은 9)
get_jetton_balance → USDT/제톤 잔액 (지갑은 온체인에서 계산)
사용자가 TON 내부에서 교환을 원할 때:
get_swap_quote → build_swap_tx → 지갑에서 서명
사용자가 Base/Ethereum/… 으로 가치를 내보내려 할 때:
get_crosschain_quote
→ build_crosschain_swap_tx (서명, 시크릿은 사용자가 보관)
→ track_crosschain_swap (준비 상태 대기)
→ disclose_crosschain_secret (정산)
→ build_crosschain_refund (멈췄을 경우)
그다음부터는 모든 것이 시스템 프롬프트에 달려 있습니다. 호출 라우팅은 클라이언트가 알아서 합니다.
당신은 TON을 위한 DeFAI 어시스턴트입니다. 규칙:
1. 제톤 금액을 다루기 전에 반드시 get_jetton_info(decimals)와
get_jetton_balance를 호출하십시오.
2. 스왑: 먼저 get_swap_quote로 환율을 보여준 다음 build_swap_tx.
절대로 개인키를 요구하지 마십시오 — 트랜잭션은 TonConnect를 통해
사용자의 지갑이 서명합니다.
3. 크로스체인: get_crosschain_quote → build_crosschain_swap_tx →
track_crosschain_swap → disclose_crosschain_secret.
출발지는 언제나 TON, 목적지는 6개 EVM 네트워크 중 하나
(Ethereum, Arbitrum, Base, BNB Chain, Polygon, Avalanche).
TRON은 지원되지 않습니다.
4. 거래가 멈추면 build_crosschain_refund를 제안하십시오.
트레이딩 에이전트를 단계별로 조립하는 방법은 따로 다룹니다 — TON 트레이딩 에이전트 만들기.
요금제
모든 요금제에서 16개 도구 전부를 사용할 수 있으며, 비용은 처리량에 대해서만 지불합니다.
- Hobby — 영구 무료, 분당 60 요청
- Pro — 월 $29, 분당 300 요청
- Scale — 월 $199, 분당 1200 요청
무료 Hobby 키는 로그인 직후 카드 없이 바로 발급됩니다. Pro/Scale 결제는 TonConnect를 통해 TON 네트워크의 GRAM이나 USDT로 하거나, Telegram의 xRocket 계정을 통해 BTC/ETH/SOL 등으로 할 수 있습니다. 결제가 정산되면 키는 자동으로 발급됩니다.
read-only MCP는 에이전트를 관찰자로 만듭니다. 논커스터디얼 스왑과 크로스체인은 에이전트를 실행자로 만듭니다. 그것도 사용자에게서 키를 빼앗지 않은 채로 말입니다. TON을 읽을 줄 아는 곳은 많습니다. 하지만 키를 넘기지 않고 TON의 가치를 여섯 개 EVM 네트워크로 옮길 수 있는 곳은 아직 TONNode뿐입니다. 이것이 TON 위의 DeFAI입니다. 에이전트가 가치를 옮기고, 통제권은 소유자에게 남습니다.
무료 Hobby 키를 받아 첫 에이전트를 지금 바로 연결하십시오 → tonnode.io/dashboard?plan=hobby
이어서 볼 자료: 전체 도구 목록은 tonnode.io/mcp, 한도와 요금제는 tonnode.io/pricing.