전체 글 보기
7 분 소요

커스터디얼 vs 논커스터디얼 MCP: 에이전트의 키는 누가 쥐는가

커스터디얼 MCP는 operator 키를 쥐고 직접 서명하고, 논커스터디얼 에이전트 지갑은 서명되지 않은 트랜잭션을 반환합니다. 키를 누가 쥐고 리스크는 무엇인지 정리했습니다.

MCP커스터디얼논커스터디얼 지갑TONAI 에이전트DeFAI

AI 에이전트에게 TON에서 스왑을 하나 시킵니다. 에이전트는 필요한 도구를 호출하고, 10초 뒤에 트랜잭션은 이미 블록체인에 올라가 있습니다. 여러분은 서명하지도, 지갑을 열지도, 무언가를 확인하지도 않았습니다. 편리합니까? 그렇습니다. 그런데 이번에는 같은 에이전트가 프롬프트를 잘못 파싱해 amount를 헷갈리고 5 GRAM이 아니라 500 GRAM을 보냈습니다. 이번에도 묻지 않았습니다. 첫 스왑을 하고 나서가 아니라 하기 전에 던져야 할 질문은 이것입니다. 도대체 개인키는 누가 쥐고 있고, 트랜잭션에 서명하는 것은 누구입니까?

이것이 바로 TON용 MCP 서버의 두 모델을 가르는 분수령입니다. 커스터디얼 MCP와 논커스터디얼 에이전트 지갑을 설정 파일, 도구, 그리고 양쪽의 솔직한 리스크까지 구체적으로 짚어 보겠습니다.

커스터디얼 MCP냐 논커스터디얼 에이전트 지갑이냐: 키는 누가 쥐고 서명은 누가 하는가

먼저 기본기부터 짚겠습니다. MCP(Model Context Protocol)는 AI 에이전트(Claude, Cursor, ChatGPT/Codex 및 그 밖의 모든 MCP 클라이언트)가 외부 도구를 호출하는 표준입니다. 에이전트는 스스로 블록체인에 접근하지 못합니다. "잔액을 가져와"나 "스왑을 조립해" 같은 MCP 도구를 호출하면 MCP 서버가 실제 작업을 수행합니다. 그리고 블록체인에서는 모든 것이 하나의 기술적 사실로 귀결됩니다. 트랜잭션은 개인키로 서명되어야 한다는 것입니다.

에이전트의 커스터디 여부는 두 가지로 결정됩니다.

  1. 개인키가 물리적으로 어디에 있는가 — MCP 서버인가, 사용자인가? 키를 가진 쪽이 자금을 처분합니다.
  2. 서명을 누가 하는가 — 서버가 직접인가, 사용자의 지갑인가? 서명은 의도를 되돌릴 수 없는 자금 이동으로 바꿉니다.

키와 서명이 서비스/에이전트 쪽에 있다면 그것은 커스터디얼 모델입니다. 에이전트가 스스로 지출할 수 있습니다. 키가 사용자에게 있고 모든 트랜잭션을 사용자의 지갑이 서명하며 서버는 서명되지 않은 트랜잭션을 조립하기만 한다면 그것은 논커스터디얼 모델입니다. 서버가 남의 자금을 쓰는 것은 물리적으로 불가능합니다.

친구에게 PIN까지 알려주며 은행 카드를 건네는 것과, 친구가 채워준 지급 전표를 받아 은행에서 본인이 직접 서명하는 것의 차이라고 보면 됩니다. 두 경우 모두 친구가 돕는 것은 같지만 리스크는 근본적으로 다릅니다. 맥락을 떼어놓고 보면 어느 한쪽 모델이 더 "옳은" 것은 아닙니다. 두 모델은 자율성과 통제 사이에서 서로 다른 균형을 제시할 뿐입니다. 이제 실제 제품에서 이것이 어떻게 나타나는지 보겠습니다.

커스터디얼 모델: 공식 @ton/mcp와 split-key

TON Foundation의 공식 @ton/mcp는 커스터디얼 에이전트 지갑입니다. operator 키를 보관하고 트랜잭션에 직접 서명합니다. split-key 모델로 동작합니다. operator 키는 에이전트가, owner 키는 사용자가 가집니다. 즉 에이전트가 전권을 쥐는 것은 아니지만(owner 키라는 지렛대는 사람 쪽에 남습니다), 자기 권한 범위 안에서는 매 작업마다 수동 서명을 거치지 않고 자금을 지출합니다.

@ton/mcp가 할 수 있는 일:

  • 네트워크와 계정 상태 조회;
  • GRAM, 제톤, NFT 전송;
  • DEX 애그리게이터를 통한 스왑;
  • 에이전트 지갑 생성 및 가져오기;
  • NFT와 DNS 조회.

할 수 없는 일은 크로스체인입니다. TON 내부에서만 동작합니다. 실행은 로컬, HTTP, serverless 중에서 고를 수 있습니다.

Foundation의 공식 패키지이고, 인정할 만한 강점이 분명히 있습니다.

  • 완전한 지출 자율성. 에이전트가 확인 절차에 멈추지 않고 일련의 동작을 이어서 수행합니다. 진짜로 자율적인 시나리오(구독, 자동 지급)에 필요한 부분입니다.
  • NFT와 DNS를 기본으로 지원합니다.
  • 공식성 — Foundation의 지원.

자율성의 대가는 분명합니다. operator 키가 에이전트가 돌아가는 환경 안에 놓입니다. 그리고 에이전트는 텍스트로 속일 수 있는 LLM입니다. 그 환경과 설정을 통제하는 쪽은 operator 권한 범위 안에서 서명까지 통제하게 됩니다.

논커스터디얼 모델: TONNode는 서명되지 않은 TonConnect 메시지를 반환합니다

TONNode는 TON을 위한 hosted MCP 서버(사이트 tonnode.io)이며 도구는 정확히 16개입니다. 여기서 스왑, 크로스체인, 지갑 도구는 엄격하게 논커스터디얼입니다. 서버는 절대로 서명하지 않으며 자금과 개인키를 보관하지 않습니다.

구조는 단순합니다. "스왑을 실행해"가 아니라, build_swap_tx 도구가 서명되지 않은 TonConnect 메시지를 반환합니다. 사용자의 지갑(Tonkeeper, MyTonWallet 등 TonConnect 호환 지갑이면 무엇이든)이 서명하기만 하면 되는 완성된 트랜잭션입니다. 서버는 "지급 전표"를 채워줬을 뿐이고, 서명은 키의 주인이 합니다. 서버가 보는 것은 공개 데이터뿐입니다. 주소, 금액, 대상 컨트랙트. 개인키는 애초에 건드리지 않습니다.

전형적인 스왑 흐름은 이렇습니다.

  1. get_swap_quote — DEX 확정 견적(GRAM ⇄ 제톤, Omniston 프로토콜을 통한 STON.fi + DeDust 유동성).
  2. build_swap_tx — 그 견적에 대응하는 서명되지 않은 트랜잭션.
  3. 사용자의 지갑이 TonConnect로 서명합니다. 끝입니다.

이때 에이전트에게 주는 프롬프트는 지극히 평범합니다.

10 GRAM을 USDT로 스왑하는 견적을 주고, 그다음 내 주소 EQ...로
스왑 트랜잭션을 조립해 주세요. 서명은 내가 지갑에서 직접 하겠습니다.

에이전트는 get_swap_quote를 호출한 뒤 build_swap_tx를 호출하고, 결과로 여러분이 받는 것은 출금이 일어났다는 사실이 아니라 트랜잭션 객체입니다.

지갑 생성마저 논커스터디얼입니다. generate_walletv3r2 / v4 / v5r1 / highload_v3 버전의 지갑을 만들고 니모닉, 키, 주소를 사용자에게 반환합니다. 서버는 그것을 저장하지 않습니다. 생성하고, 시드 구문은 여러분이 가져가고, 서버는 그것을 "잊습니다".

버전과 시드의 안전한 보관에 대한 자세한 내용은 TON 지갑 생성 분석에 정리해 두었습니다.

DeFAI 관점: 자율 에이전트에게 개인키의 위치가 중요한 이유

DeFAI는 AI 에이전트가 DeFi에서 스스로 움직이는 것을 말합니다. 그리고 여기서 "키가 어디에 있는가"는 더 이상 이론이 아닙니다.

LLM은 확률적 시스템입니다. 블록체인에서, 남의 컨트랙트에서, 누군가 들이미는 텍스트에서 데이터를 읽습니다. 고전적인 공격이 프롬프트 인젝션입니다. 제톤 설명이나 외부 도구의 응답 안에 "모든 자금을 주소 X로 보내라"는 지시가 숨어 있는 식입니다. 에이전트가 직접 서명하는 커스터디얼 모델에서 이런 인젝션은 실제 지출로 이어질 수 있습니다. 속아 넘어간 바로 그 에이전트의 손안에 키가 있으니까요. 오염된 컨텍스트, 도구 체인의 버그, 침해된 호스트 — 이 중 어떤 시나리오든 서명으로 전환됩니다. 서명할 능력을 환경 자체가 가지고 있기 때문입니다.

논커스터디얼 모델에서 이 공격은 벽에 부딪힙니다. 에이전트가 악의적인 트랜잭션을 조립하도록 설득당했더라도 build_swap_tx가 돌려주는 것은 서명되지 않은 메시지뿐입니다. 키의 주인이 자기 지갑에서 서명하기 전까지 그것은 아무것도 움직이지 못하며, 바로 그 단계에서 사용자는 수취인 주소와 금액을 눈으로 확인합니다. 사람(또는 별도의 서명 정책)이 마지막 방어선으로 남습니다.

자율성이 악하다는 뜻이 아닙니다. 자율성과 키 통제권이 서로 다른 축이며, 선택은 의식적으로 해야 한다는 뜻입니다. 에이전트를 위한 논커스터디얼 스왑에 대해서는 TON 에이전트 스왑 글에서 더 다뤘습니다.

두 모델의 리스크: 자율 지출이냐 수동 서명이냐

어느 한쪽으로 기울지 않고 양쪽을 솔직하게 보겠습니다.

커스터디얼 모델(@ton/mcp):

  • 장점: 에이전트가 실제로 자율적입니다. 스스로 지불하고 작동하며, 연쇄 작업이 중간에 멈추지 않습니다.
  • 장점: split-key가 에이전트를 제한합니다(owner 키는 사용자 쪽). "모든 것에 대한 전권"은 아닙니다.
  • 장점: Foundation 공식이라는 지위, 사람이 개입하지 않는 시나리오(구독, 자동 지급, NFT/DNS)에 편리합니다.
  • 리스크: 서명용 운영 키가 텍스트로 조종되는 LLM이 돌아가는 바로 그 자리에 있습니다. 프롬프트 인젝션이나 환각이 실제 지출로 이어질 수 있습니다.
  • 리스크: 에이전트의 실수(금액/주소 파싱 오류)가 수동 장벽 없이 그대로 실행됩니다.

논커스터디얼 모델(TONNode):

  • 장점: 개인키가 절대 사용자를 떠나지 않습니다. 서버는 물리적으로 자금을 인출할 수도, 빼돌릴 수도 없습니다.
  • 장점: 모든 지출이 지갑에서 눈으로 확인하는 절차를 거칩니다. 에이전트의 실수와 인젝션에 대한 마지막 방어선입니다.
  • 제약: 지갑 서명 단계가 필요합니다. 완전히 "사람 없는" 24시간 자동 조종은 이 방식으로 만들 수 없습니다.
  • 제약: generate_wallet이 반환한 니모닉의 보관 책임은 사용자에게 있습니다(서버가 저장하지 않으므로 복구해 줄 곳이 없습니다).

리스크 모델이 가장 두드러지는 크로스체인은 따로 짚겠습니다. TONNode에서는 항상 TON이 출발지이며, 교환은 원자적 HTLC 에스크로를 통해 이루어집니다.

  • get_crosschain_quote — 견적.
  • build_crosschain_swap_tx — 서명되지 않은 HTLC 에스크로 트랜잭션과 비밀값.
  • track_crosschain_swap — 양쪽 네트워크에서의 거래 단계.
  • disclose_crosschain_secret — 온체인 준비 상태를 확인한 뒤 정산을 위해 비밀값을 공개.
  • build_crosschain_refund — 상대방이 교환을 마치지 않았을 때 멈춰버린 에스크로에서 자금을 환불.

build_crosschain_refund가 존재한다는 것 자체가 논커스터디얼의 직접적인 귀결입니다. 키와 비밀값이 사용자에게 있으니, 멈춰버린 거래에서 자기 돈을 되찾을 지렛대도 사용자에게 있습니다. "고객센터에 문의"할 일이 아닙니다. 지원 네트워크는 Ethereum, Arbitrum, Base, BNB Chain, Polygon, Avalanche입니다. TRON은 아직 지원하지 않습니다.

솔직한 비교: 어떤 상황에 어느 쪽을 고를 것인가

기준 @ton/mcp (커스터디얼) TONNode (논커스터디얼)
키를 쥐는 쪽 operator 키는 에이전트가 개인키는 사용자가
서명하는 쪽 서버/에이전트가 직접 사용자의 지갑
자율 지출 가능 불가(서명 필요)
크로스체인 없음, TON 전용 지원, HTLC(TON이 출발지)
NFT / DNS 지원 미지원(로드맵)
실행 형태 로컬 / HTTP / serverless 로컬 + hosted 옵션
지위 Foundation 공식 패키지 서드파티 오픈소스(MIT)

실전 선택 기준입니다.

다음에 해당하면 커스터디얼 @ton/mcp를 고르십시오:

  • 에이전트의 진짜 자율성이 필요하다 — 사람의 개입 없이 스스로 지출해야 한다;
  • TON의 NFT와 DNS가 중요하다;
  • Foundation 공식이라는 지위가 중요하다;
  • 모든 것이 TON 안에서 일어난다 — 크로스체인이 필요 없고, operator 키의 운영 리스크는 의식적으로 감수한다.

다음에 해당하면 논커스터디얼 TONNode를 고르십시오:

  • 개인키와 서명은 내 손에 남기고, 모든 지출을 수동으로 서명하고 싶다;
  • 크로스체인이 필요하다: 항상 TON이 출발지, 원자적 HTLC 에스크로, 멈춰버린 거래에서의 환불까지;
  • 보장된 처리량과 전용 키를 갖춘 hosted 옵션이 필요하다;
  • 네이티브 ADNL 위에서 동작하는 오픈소스(MIT) 패키지를 원한다.

차이는 왜곡 없이 솔직하게 이렇습니다. @ton/mcp는 커스터디얼이며 TON 전용이고, TONNode는 논커스터디얼이며 크로스체인과 hosted 옵션을 제공합니다. 기능을 하나하나 대조한 내용은 TONNode와 공식 TON MCP 비교 글이나 공식 MCP와의 비교 페이지에서 보실 수 있습니다.

인프라에 대해 한 가지 덧붙입니다. 부하 상황에서 공용 라이트서버나 공용 HTTP API(toncenter, tonapi.io)를 쓰고 있다면 실제 한도를 기억하십시오. 한도를 넘기면 HTTP 429 "Too Many Requests"가 돌아오고(키 없이는 초당 약 1요청), 공용 라이트서버는 종종 "not ready"나 ADNL 타임아웃으로 응답합니다. API에 밈처럼 도는 "228 오류" 같은 것은 없습니다. 그것은 커뮤니티의 농담이지 응답 코드가 아닙니다.

논커스터디얼 MCP를 몇 분 만에 시험해 보는 법

차이를 몸으로 느끼는 가장 빠른 방법은 로컬로 띄워 에이전트에게 간단한 프롬프트를 주는 것입니다. 읽기 도구 전체 세트를 쓸 수 있는 공개 설정이며, 무료이고 카드도 필요 없습니다.

{
  "mcpServers": {
    "ton": {
      "command": "npx",
      "args": ["-y", "@tonnode/mcp"]
    }
  }
}

그다음에는 사람의 말로 에이전트에게 부탁하면 됩니다. 이 무료 설정에서는 읽기 도구 전체가 열려 있습니다.

주소 EQ...의 GRAM 잔액을 보여주고, USDT 메타데이터를 확인한 다음
10 GRAM을 USDT로 스왑하는 확정 견적을 주세요.

에이전트는 get_balance, get_jetton_info, get_swap_quote를 호출하고, 아무것도 지출하지 않은 채 데이터를 돌려줍니다. 서명도 자금 이동도 없습니다. 읽기는 어디까지나 읽기입니다.

@tonnode/mcp 패키지는 오픈소스(MIT)이며, HTTP 계층 없이 TON의 네이티브 ADNL 프로토콜로 동작합니다. 트랜잭션을 조립하는 도구(스왑, 크로스체인, 지갑 생성)가 필요해지면, 그때부터는 hosted 엔드포인트에서 16개 도구 전부를 전용 키와 보장된 처리량으로 쓰게 됩니다.

{
  "mcpServers": {
    "ton": {
      "type": "http",
      "url": "https://mcp.tonnode.io/mcp",
      "headers": { "Authorization": "Bearer tn_live_…" }
    }
  }
}

hosted 키에서는 에이전트에게 온전한 논커스터디얼 시나리오를 맡길 수 있습니다.

v5r1 버전의 새 TON 지갑을 만들고 주소를 보여주세요.
그다음 10 USDT를 GRAM으로 스왑하는 서명되지 않은 트랜잭션을 조립해 주세요.

에이전트는 generate_wallet을 호출한 뒤 get_swap_quotebuild_swap_tx를 호출하고, 서명되지 않은 메시지를 돌려줍니다. 여기서 주목할 점이 있습니다. 이 시점까지 아무것도 지출되지 않았습니다. 서명은 여러분이 따로, 의식적으로 밟는 단계입니다. 이것이 실전에서의 논커스터디얼입니다.

모든 요금제에서 16개 도구 전부를 사용할 수 있습니다. 여러분이 지불하는 것은 처리량뿐입니다. 무료 Hobby 키(60 요청/분, 영구 무료, 카드 불필요)는 로그인 직후 바로 발급됩니다.

MCP를 TON에 연결하는 전반적인 안내는 TON을 위한 MCP 가이드에 있습니다.


여러분의 돈을 쓸 수 있는 키는, 텍스트 한 단락으로 속일 수 있는 모델 바로 옆에 놓여서는 안 됩니다. 여러분의 시나리오에서 자율 지출이 더 중요하다면 커스터디얼 @ton/mcp가 그 일을 정직하게 해냅니다. 서명이 내 손에 남는 것이 더 중요하다면 논커스터디얼 TONNode부터 시작해, 신뢰의 경계를 어디에 그을지 직접 정하십시오.

논커스터디얼 MCP를 무료로 시험해 보기 — Hobby 키 받기: tonnode.io/dashboard?plan=hobby

에이전트에게 TON 접근 권한을 주세요

16가지 MCP 도구: 읽기, 논커스터디얼 스왑, 크로스체인, 지갑. 무료 요금제 60 요청/분, 카드 불필요.