Web3 新手系列:MCP 一句話完成交易!

概述

MCP(Model-Context Protocol)是 Anthropic 推出的一種開放協議,它為大語言模型提供了一種標準化的方式來安全地訪問外部工具、數據源和服務。與傳統的插件系統不同,MCP 采用客戶端-服務器架構,通過標準化的協議接口實現模型與外部系統的無縫集成。

MCP 的核心優勢

標準化接口: MCP 定義了統一的協議規範,避免了每個應用都需要開發自己的集成方案的問題。

安全性: 通過嚴格的權限控製和沙箱機製,確保外部工具的安全訪問。

可擴展性: 支持豐富的工具類型,從簡單的 API 調用到復雜的數據處理流程。

互操作性: 任何支持 MCP 的客戶端都可以使用兼容的服務,實現了真正的跨平臺兼容。

Web3 + MCP 的應用場景

在 Web3 領域,MCP 可以為大語言模型提供豐富的區塊鏈交互能力:

● 資產查詢: 查詢各種代幣余額、交易歷史

● 鏈上操作: 發送交易、部署合約、調用智能合約

● DeFi 集成: 與 DEX、借貸協議、流動性挖礦等 DeFi 應用交互

● 跨鏈操作: 支持多鏈資產管理和跨鏈轉賬

● NFT 管理: 查詢、轉移、交易 NFT 資產

本文將通過 nodejs+typescript 構建一個簡單的 Web3 MCP 服務,帶你解析 MCP 的工作原理和最佳實踐。

一、創建工程

  1. 創建項目文件夾並初始化項目
mkdir web3-mcp-project
cd web3-mcp-project
npm init -y
  1. 安裝必須的包
npm install @modelcontextprotocol/sdk ethers
  1. 添加 typescript的 配置,按個人需要進行修改
{
  "compilerOptions": {
    "target": "es2020",
    "module": "es2020",
    "moduleResolution": "node",
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "strict": true,
    "skipLibCheck": true,
    "outDir": "build",
    "rootDir": "src",
    "allowJs": true,
    "checkJs": false,
    "resolveJsonModule": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "build"]
}
  1. 修改 package.json 的配置
"type": "module",
"bin": {
  "web3-mcp": "./build/index.js"
},
"scripts": {
  "build": "tsc && chmod +x build/index.js"
},

二、編寫 server

通過 server.tool 快速創建工具,這裏以 sepolia 測試網的 getBalance 為例我們寫一個工具

  1. 首先我們需要註冊zan的賬號,開通節點服務,獲rpcUrl,然後實例化一個 provider
import { JsonRpcProvider } from 'ethers';

const NETWORK = {
  name: "Sepolia",
  rpc: 'https://api.zan.top/node/v1/eth/sepolia/YOUR_API_KEY',
  chainId: 11_155_111,
  currencySymbol: "SepoliaETH",
  explorer: "https://sepolia.etherscan.io"
  },
}

const provider = new JsonRpcProvider(NETWORK.rpc)
  1. 寫工具邏輯
export function registerEvmTools(server: McpServer) {
  server.tool(
    "getEvmBalance",
    "Get native token balance for an EVM address on any supported network",
    {
      address: z.string().describe("EVM account address"),
    },
    async ({ address }) => {
      try {
        const balance = await provider.getBalance(address);
        const formattedBalance = formatEther(balance);
  
        return {
          content: [
            {
              type: "text",
              text: `Balance on ${NETWORK.name}:\n${formattedBalance} ${NETWORK.currencySymbol}`,
            },
          ],
        };
      } catch (err) {
        const error = err as Error;
        return {
          content: [
            {
              type: "text",
              text: `Failed to retrieve balance: ${error.message}`,
            },
          ],
        };
      }
    }
  );
}
  1. 啟動服務並添加錯誤處理
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { registerEvmTools } from "./utils.ts";

const server = new McpServer({
  name: "web3-rpc",
  version: "1.0.0",
});
registerEvmTools(server);

async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
}

main().catch((err: unknown) => {
  const error = err as Error;
  console.error("Fatal error in main():", error.message);
  process.exit(1);
});

到此一個最小的 mcp 服務已經編寫完成

三、調試服務

到這一步,需要我們打包出 js 產物,然後執行modelcontextprotocol/inspector,就可以調試啦

npm run build

npx @modelcontextprotocol/inspector node build/index.js

四、完善邏輯並在 Cursor 中引用

完善更多的邏輯和方法,比如:支持多個 evm 網絡、查詢 gas、發送交易、查詢代幣信息以及代幣交易等一些常用的方法,打包後在 Cursor 中引用,Cursor 是一款全新的智能 IDE,無縫集成了 AI 技術。Cursor 基於 VSCode 構建,易於上手,並能大幅提升您的工作效率。同時它也是一個支持 MCP 集成的應用程序。

{
  "mcpServers": {
    "web3-rpc": {
      "command": "node",
      "args": [
        "/Users/wutian/Documents/demoCode/web3-mcp/build/index.js"
      ]
    }
  }
}

五、使用

然後你就可以在 chat 裏愉快的使用啦~(chat 是 Cursor 的 AI 助手,它位於側邊欄,可通過自然語言與代碼庫進行交互。)

比如 「查詢下這個地址 0xE21E97Ad8B527acb90F0b148EfaFbA46625382cE 在 sepolia 上的余額」:

再比如 「給這個地址 0x2c1d9ef7ccede70d77e6038701cd63138dd920a0 轉 0.1ETH」:


六、寫在最後

留給我們的想象空間還很大,本文已經講解了整體流程,那我們後邊還可以做哪些事情呢,比如支持多種鏈(Bitcoin、Solana、Tron),再比如我們接入跨鏈,在 chat 裏說把我這個鏈的 USDT,換成另一個鏈的?Web3 和 MCP 的結合為我們開啟了一個充滿可能性的新世界。無論是 DeFi 協議集成、NFT 市場操作,還是復雜的跨鏈資產管理,這些都可以通過簡單的對話來實現。

感興趣的小夥伴快來試試吧!

關於 ZAN

ZAN 是螞蟻數科旗下 Web3 科技品牌,致力於 Web3 應用優化--降低成本、增強安全和提升效能,圍繞 Web3 應用全生命週期,提供可靠、穩定安全、客製化的產品和服務。依托 AntChain OpenLabs 的 TrustBase 開源開放技術體系,ZAN 擁有 Web3 領域獨特的優勢和創新能力,為 Web3 社群的區塊鏈應用開發、企業和開發者的 Web3 應用提供了全面的技術產品和服務,其中包括節點服務(ZAN Node Service)zk 加速(ZAN PowerZebra)身分驗證eKYC(ZAN Identity)以及智慧合約稽核(ZAN Smart Contract Review)等。

聯絡我們

WebsiteXDiscordTelegram