Tất cả bài viết
9 phút đọc

TON MCP: TONNode vs @ton/mcp chính thức, so sánh thẳng thắn

So sánh TON MCP: @ton/mcp khác TONNode ở đâu. Ví-agent lưu ký đối đầu MCP không lưu ký có cross-chain. Bảng đối chiếu và cách chọn cho đúng.

TON MCP@ton/mcpMCP không lưu kýcross-chain TONAI agent TONso sánh MCP

@ton/mcp đối đầu TONNode: so sánh thẳng thắn — và câu hỏi đầu tiên, ai giữ khóa?

Bài so sánh hai MCP server cho TON này không mở đầu bằng danh sách tính năng, mà bằng đúng một câu hỏi bảo mật. Hình dung thế này: bạn đã cho Claude hoặc Cursor truy cập TON. Agent đọc số dư, dựng swap, gọi các get-method. Mọi thứ chạy ngon — cho tới lúc cần ký một giao dịch. Rồi 3 giờ sáng, agent vì một cái prompt méo mó (hoặc vì một chỉ dẫn bị nhét vào từ web) quyết định “tối ưu danh mục” và tự tay ký giao dịch. Tiền đi rồi. Sáng hôm sau bạn mới biết.

Đây không phải chuyện dọa ma, mà là hệ quả trực tiếp của đúng một lựa chọn kiến trúc: agent tự ký bằng khóa của nó, hay chữ ký luôn thuộc về ví của người dùng? Chính tại điểm này, hai MCP server trưởng thành nhất cho TON tách làm hai hướng — @ton/mcp chính thức của TON Foundation và TONNode. Cả hai đều trao cho agent đôi tay để chạm vào blockchain. Ta sẽ mổ xẻ thẳng thắn, không dìm bên nào — với những bài toán khác nhau thì cả hai cách tiếp cận đều có lý do tồn tại.

Vì sao phải so sánh: hai cách tiếp cận khác nhau cho MCP trên TON

MCP (Model Context Protocol) là chuẩn để các AI agent (Claude, Cursor, ChatGPT/Codex, mọi MCP client) gọi tool. Với TON, điều đó có nghĩa: agent nhận được một bộ hàm kiểu get_balance hay build_swap_tx và tự gọi chúng ngay trong lúc trò chuyện, khi nào nó thấy cần.

Khác biệt giữa @ton/mcp và TONNode không nằm ở danh sách lệnh, mà ở triết lý. Ví von: @ton/mcp giống như đưa cho trợ lý một thẻ công ty có hạn mức — anh ta tự thanh toán, nhanh, tự chủ, nhưng cái thẻ nằm trong tay anh ta. TONNode là kiểu trợ lý soạn sẵn tờ ủy nhiệm chi rồi đặt lên bàn cho bạn ký: không có ví của bạn thì chẳng đồng nào đi đâu cả. Cả hai mô hình đều dùng được. Vấn đề là hợp với bài toán nào.

Nếu bạn muốn phần lý thuyết, có một bài riêng mổ xẻ MCP lưu ký đối đầu không lưu ký. Ở đây ta so sánh phần cụ thể.

@ton/mcp chính thức: ví-agent lưu ký có NFT và DNS

@ton/mcp là package chính thức của TON Foundation, và đó chính là điểm mạnh của nó: được đội ngũ của mạng lưới hỗ trợ, lộ trình phát triển dự đoán được, vị thế của một chuẩn tham chiếu.

Về kiến trúc, đây là một ví-agent lưu ký theo mô hình split-key:

  • operator key — nằm ở agent. Bằng khóa này, agent tự ký giao dịch, không cần bạn tham gia.
  • owner key — nằm ở người dùng, như lớp kiểm soát thứ hai đối với ví.

Những gì nó làm được ngay từ đầu:

  • đọc trạng thái mạng lưới, tài khoản, số dư;
  • gửi GRAM, jetton và NFT (agent tự ký);
  • swap qua DEX aggregator;
  • tạo và import ví-agent;
  • đọc NFT và DNS — thứ mà TONNode hiện chưa có, và đó là một lợi thế thật sự của package chính thức.

Chạy được ở local, qua HTTP hoặc serverless. Giới hạn nằm ngay trong thiết kế: chỉ TON, không có cross-chain.

Điểm cốt lõi ở đây là tính tự chủ. Agent tự tiêu tiền, không có con người trong vòng ký. Với các kịch bản kiểu “để agent tự trả phí thuê bao / gas / việc vặt”, đây đúng là thứ bạn cần. Nhưng chính sự tự chủ ấy cũng có nghĩa: khóa vận hành — thứ định đoạt dòng tiền — nằm ở phía agent. Tức là một cú prompt injection hay một lần model ảo giác đều có thể dẫn tới một khoản chi thật.

TONNode: MCP không lưu ký, cross-chain và tùy chọn hosted

TONNode là một MCP server hosted dành cho TON (website tonnode.io) với đúng 16 tool. Bất biến then chốt gói trong một câu:

Server không bao giờ ký, cũng không lưu giữ tiền lẫn khóa riêng. Các tool swap, cross-chain và ví đều trả về message TonConnect chưa ký. Ví của người dùng mới là bên đặt chữ ký.

Không tồn tại khoảnh khắc nào server có thể ôm tiền đi, đơn giản vì về mặt vật lý nó không có khóa. Ta đi qua từng nhóm.

Đọc dữ liệu (7+1)

Bao trọn phần việc hằng ngày:

get_masterchain_info — đầu masterchain
get_balance          — số dư GRAM
get_account_state    — trạng thái, cờ, giao dịch cuối
get_transactions     — lịch sử giao dịch
run_get_method       — bất kỳ get-method read-only nào của contract
get_jetton_balance   — số dư jetton/USDT (ví jetton được tính on-chain)
get_jetton_info      — metadata jetton: tên, symbol, decimals, tổng cung
parse_address        — chuyển đổi EQ/UQ/raw, offline

get_jetton_info trả về decimals — bạn cần chúng để quy đổi đơn vị raw: USDT có 6, phần lớn jetton có 9.

Swap (2)

Chạy qua giao thức Omniston — thanh khoản tổng hợp từ STON.fi và DeDust:

  • get_swap_quote — báo giá chắc chắn GRAM⇄jetton;
  • build_swap_tx — giao dịch chưa ký, sẵn sàng cho TonConnect.

Cross-chain (5)

Thứ mà package chính thức hoàn toàn không có. Escrow HTLC nguyên tử, trong đó TON luôn là chain nguồn:

  • get_crosschain_quote — báo giá;
  • build_crosschain_swap_tx — giao dịch escrow HTLC chưa ký + secret;
  • track_crosschain_swap — các pha của thương vụ trên cả hai mạng;
  • disclose_crosschain_secret — công bố secret để tất toán, sau khi đã kiểm tra độ sẵn sàng on-chain;
  • build_crosschain_refund — lấy lại tiền từ escrow nếu thương vụ bị treo.

Các mạng được hỗ trợ: Ethereum, Arbitrum, Base, BNB Chain, Polygon, Avalanche. TRON hiện chưa được hỗ trợ. Cách một thương vụ như vậy vận hành được trình bày trong bài về cross-chain đầu tiên cho agent trên TON.

Ví (1): generate_wallet tạo ví các phiên bản v3r2/v4/v5r1/highload_v3 và trả mnemonic, khóa cùng địa chỉ về cho người dùng — server không lưu chúng.

Thứ TONNode hiện chưa có: các tool NFT và DNS — chúng nằm trong roadmap. Nếu hôm nay bài toán của bạn là đọc bộ sưu tập NFT hay resolve domain .ton, đó là sân của package chính thức. Lưu ý thêm: TONNode cũng không có tool “gửi/chuyển” GRAM hay jetton trực tiếp. Toàn bộ các builder giao dịch chưa ký chỉ gồm build_swap_tx, build_crosschain_swap_txbuild_crosschain_refund — nghĩa là tiền chỉ dịch chuyển được trong khuôn khổ một cú swap, một thương vụ cross-chain hoặc một lần hoàn tiền từ escrow. Không có “send” tùy ý ở đây, và đó là chủ đích thiết kế.

Bảng so sánh: @ton/mcp đối đầu TONNode

Tiêu chí @ton/mcp chính thức TONNode
Ai đặt chữ ký Chính agent (operator key, split-key) Ví của người dùng (server không ký)
Mô hình Lưu ký Nghiêm ngặt không lưu ký
Chi tiêu tự chủ Không (theo chủ đích thiết kế)
Gửi trực tiếp GRAM/jetton Có, tự chủ Không có tool riêng; chuyển tiền chỉ nằm trong swap/cross-chain dưới dạng tx chưa ký
Swap DEX aggregator Omniston (STON.fi + DeDust)
Cross-chain Không (chỉ TON) Có, escrow HTLC sang 6 mạng
NFT / DNS Có (đọc) Trong roadmap
Tạo ví Tạo/import ví-agent v3r2/v4/v5r1/highload_v3, khóa thuộc về người dùng
Khởi chạy Local / HTTP / serverless Local (npx) + endpoint hosted
Vị thế Chính thức, TON Foundation Độc lập, open source (MIT)

Ngã rẽ then chốt: ai giữ khóa của agent

Mọi thứ còn lại chỉ là chi tiết. Lựa chọn thật sự nằm ở đúng một câu hỏi: bạn có sẵn sàng để agent tự ký giao dịch không?

@ton/mcp, operator key nằm trong tay agent — nghĩa là agent có thể tiêu tiền theo một cái prompt, không cần yếu tố thứ hai là chữ ký của con người. Điều đó rất mạnh về mặt tự chủ, nhưng cũng rủi ro khi gặp prompt injection hoặc khi model ảo giác: context bị nhiễm độc = tiền có khả năng bị tiêu thật.

Ở TONNode, chữ ký về mặt vật lý không thể xảy ra trên server. Kể cả khi agent “phát điên” và gọi build_swap_tx với những tham số vô lý, thứ nhiều nhất nó nhận được vẫn chỉ là một object giao dịch chưa ký. Chừng nào ví của người dùng chưa xác nhận, chẳng có gì nhúc nhích. Đây là một đảm bảo về kiến trúc, chứ không phải một lời hứa chính sách.

Không cách tiếp cận nào “tốt hơn” một cách chung chung — chúng nói về những mức độ tin tưởng khác nhau dành cho sự tự chủ của agent.

Khi nào chọn @ton/mcp chính thức, khi nào chọn TONNode

Hãy chọn @ton/mcp nếu:

  • bạn cần chi tiêu tự chủ — agent tự trả và tự ký, không có con người trong vòng lặp;
  • bạn làm việc nghiêm ngặt trong nội bộ TON, không cần cross-chain;
  • bạn cần NFT và DNS ngay hôm nay;
  • vị thế chính thức của package từ Foundation là điều quan trọng với bạn.

Hãy chọn TONNode nếu:

  • chỉ ví của người dùng mới được định đoạt dòng tiền, chứ không phải agent — pattern này được mổ xẻ trong bài về swap không lưu ký cho agent trên TON;
  • bạn cần cross-chain TON⇄EVM (Ethereum, Arbitrum, Base, BNB Chain, Polygon, Avalanche);
  • bạn cần swap qua thanh khoản tổng hợp của Omniston;
  • bạn cần một endpoint hosted với băng thông được đảm bảo, chứ không chỉ chạy local.

Đây không phải chuyện “hơn/kém”, mà là hai công cụ khác nhau. Hai cách tiếp cận cũng không loại trừ nhau: khá nhiều team giữ cả hai server trong config — bản chính thức cho NFT/DNS và các tác vụ tự chủ, TONNode cho swap không lưu ký và cross-chain.

Cách kết nối từng bên

Nếu đây là lần đầu bạn ghé qua, phần giới thiệu chung về MCP cho TON nằm ở hướng dẫn MCP cho TON.

TONNode chạy local — miễn phí, đủ bộ tool đọc

Package @tonnode/mcp là open source (MIT, có trên npm và GitHub tonnode/mcp), chạy theo giao thức ADNL gốc của TON, không qua lớp trung gian HTTP:

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

TONNode hosted — key riêng, băng thông được đảm bảo

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

Sau khi kết nối, bạn có thể giao việc cho agent bằng ngôn ngữ thường — nó sẽ tự chọn tool:

Kiểm tra số dư USDT trên ví EQ… của tôi bằng get_jetton_balance.
Sau đó lấy get_swap_quote để đổi 50 USDT sang GRAM
và dựng giao dịch bằng build_swap_tx.
Đừng gửi giao dịch — trả nó về cho tôi để ký trong ví.

Agent sẽ gọi get_jetton_balanceget_swap_quotebuild_swap_tx rồi trả về một message TonConnect chưa ký. Tiền chỉ dịch chuyển sau khi bạn xác nhận trong ví.

Một nhiệm vụ cross-chain nghe cũng tự nhiên y như vậy:

Dựng giao dịch đổi 100 GRAM từ TON sang USDC trên Base.
Cho get_crosschain_quote, rồi build_crosschain_swap_tx.
Lưu lại secret, theo dõi trạng thái qua track_crosschain_swap.

Trên mọi gói cước đều có đủ 16 tool — bạn chỉ trả tiền cho băng thông: Hobby — miễn phí vĩnh viễn, 60 request/phút; Pro — $29/tháng, 300 request/phút; Scale — $199/tháng, 1200 request/phút. Key Hobby được cấp ngay sau khi đăng nhập, không cần thẻ.

@ton/mcp chính thức

@ton/mcp được cài theo hướng dẫn của TON Foundation và chạy ở local, qua HTTP hoặc serverless. Trong lần cấu hình đầu tiên, một ví-agent kèm operator key sẽ được tạo mới hoặc import cho agent. Hãy tính tới mô hình lưu ký: cân nhắc trước các hạn mức và việc agent sẽ được chạm tới khoản tiền nào.

Kết luận

@ton/mcp là ví-agent lưu ký chính thức: split-key, chi tiêu tự chủ, NFT và DNS, chỉ TON. TONNode là server không lưu ký gồm 16 tool: server không bao giờ ký, bù lại có cross-chain sang 6 mạng và tùy chọn hosted. Khác biệt là thẳng thắn và nằm ở tầng kiến trúc — nó nói về việc bạn trao quyền ký cho ai. Ai đặt chữ ký, người đó quyết định hồ sơ rủi ro.

So sánh chi tiết theo từng tool nằm ở trang TONNode đối đầu MCP chính thức. Muốn thử ngay cách tiếp cận không lưu ký, bằng key Hobby miễn phí và không cần thẻ, thì vào đây: tonnode.io/dashboard?plan=hobby.

Cho agent của bạn quyền truy cập TON

16 công cụ MCP: đọc, swap phi lưu ký, cross-chain và ví. Gói miễn phí — 60 req/phút, không cần thẻ.