跳至主要內容
本頁面使用機器翻譯自英語,可能包含錯誤或不清楚的語言。如需最準確的信息,請參閱英文原文。由於更新頻繁,部分內容可能與英文原文有出入。請加入我們在 Crowdin 上的努力,幫助我們改進本頁面的翻譯。 (Crowdin translation page, Contributing guide)

模型上下文通訊協定 (MCP)

概述

Kaia Agent Kit 整合了多種流行的 AI 框架,讓您可以使用偏好的開發工具建立具備區塊鏈功能的代理程式。 在本指南中,您將學習如何使用 Model Context Protocol (MCP) 伺服器建立 AI Agent,該伺服器使用 Kaia Agent Kit 進行 onchain 動作,並使用 Claude Desktop 等 MCP 主機。

先決條件

開始使用

在本指南中,我們將使用 Kaia Agent Kit + MCP 主機 (Claude Desktop),建立一個使用 MCP 伺服器的 AI 代理,並具備上鏈功能,可以:

  • 發送原生代幣、可替代代幣 (FT) 和 NFT。
  • 檢查原生代幣、FT 和 NFT 的餘額。
  • 擷取區塊鏈資料 Kaiascan API 可擷取網路摘要、Kaia 的價格、地址的代幣餘額等。

瞭解 AI 代理堆疊

在深入瞭解程式碼之前,讓我們先瞭解關鍵技術:

**什麼是 MCP?

MCP 是一個通用且開放的標準,可讓 AI 系統與資料來源和外部工具互動,進而提供所需的資料。 MCP 核心採用用戶端伺服器架構,主機應用程式可連線至數個伺服器。 一方面,MCP 伺服器可作為閘道,揭露特定功能:例如透過標準化的 Model Context Protocol 進行區塊鏈互動;另一方面,我們將在本指南中使用的 MCP 主機 (例如 Claude Desktop),可作為希望透過 MCP 存取資料的工具。

此外,MCP 伺服器負責處理來自用戶端、主機的傳入要求,並傳回適當的回應資料。 在這種情況下,它們使用 MCP 通訊協定,以標準通道 (stdio、HTTP 或套接字) 與 LLM 進行通訊,並傳回結構佳的輸出。 MCP 通訊協定的設計具有擴充性,允許開發人員隨時新增 工具資源提示

在本指南中,我們將在 MCP 伺服器工具中加入 onchain 功能,以便使用 Kaia Agent Kit 與 Kaia 區塊鏈互動。

Kaia 代理套件

另一方面,Kaia Agent Kit 是一種工具,可將上鏈工具插入 AI 代理,讓它們與 Kaia 區塊鏈進行無縫互動。 這將使代理能夠自主執行鏈上動作、獲取鏈上資訊、驗證交易。

專案設定

  1. 建立新的專案目錄:

mkdir kaia-agentkit-mcp-example
cd kaia-agentkit-mcp-example

  1. 初始化 Node.js 專案:

pnpm init

  1. 安裝相依性:

pnpm add @kaiachain/kaia-agent-kit @goat-sdk/adapter-model-context-protocol @goat-sdk/wallet-viem @modelcontextprotocol/sdk dotenv viem


pnpm add -D @types/node typescript

  1. 更新您的 package.json,加入 "type":"module "屬性和下列建立腳本

{
"type": "module",
"bin": {
"kaia-mcp": "./build/index.js"
},
"scripts": {
"build": "tsc && chmod 755 build/index.js"
},
"files": [
"build"
],
}

  1. 在專案根目錄建立 tsconfig.json:

{
"compilerOptions": {
"target": "ES2022",
"module": "Node16",
"moduleResolution": "Node16",
"outDir": "./build",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}

建立您的伺服器

1. 建立包含 index.ts 的 src 資料夾

複製並貼上以下程式碼到您的 src/index.ts 檔案:


/*
Imports all the necessary libraries for:
MCP server communication
Blockchain interaction
Connecting MCP to blockchain tools
Specific Kaia blockchain functionality using Kaia Agent Kit
*/
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
import { http, createWalletClient } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { kairos } from "viem/chains";
import { Kaia, PackagesEnum } from '@kaiachain/kaia-agent-kit';
import { getOnChainTools } from "@goat-sdk/adapter-model-context-protocol";
import { viem } from "@goat-sdk/wallet-viem";
// 1. Create the wallet client
const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`);
const walletClient = createWalletClient({
account: account,
transport: http(process.env.RPC_PROVIDER_URL),
chain: kairos,
});
// 2. Get the onchain tools for the wallet
const toolsPromise = getOnChainTools({
wallet: viem(walletClient),
plugins: [Kaia({KAIA_KAIASCAN_API_KEY: process.env.KAIASCAN_API_KEY, packages: []})]
});
// 3. Create and configure the server
const server = new Server(
{
name: "kaia-mcp",
version: "1.0.0",
},
{
capabilities: {
tools: {},
},
},
);
/*
This section lists two handlers:
List Tools Handler: Responds with all available blockchain tools when an AI asks what tools are available
Call Tool Handler: Executes a specific blockchain tool when requested, passing the appropriate arguments and handling any errors
*/
server.setRequestHandler(ListToolsRequestSchema, async () => {
const { listOfTools } = await toolsPromise;
return {
tools: listOfTools(),
};
});
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { toolHandler } = await toolsPromise;
try {
return toolHandler(request.params.name, request.params.arguments);
} catch (error) {
throw new Error(`Tool ${request.params.name} failed: ${error}`);
}
});
// 4. Start the server
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("KAIA MCP Server running on stdio");
}
main().catch((error) => {
console.error("Fatal error in main():", error);
process.exit(1);
});

上面這段程式碼建立了一個模型上下文通訊協定 (Model Context Protocol, MCP) 伺服器,讓 AI 系統可以透過設定一個錢包用戶端、透過適配器和 Kaia Agent Kit 擷取區塊鏈工具,以及透過標準輸入/輸出通訊通道處理列出可用工具和執行區塊鏈作業的請求,與 Kaia 區塊鏈進行互動。

2. 建立專案

請務必使用以下指令建立您的伺服器:


pnpm build

這會產生 build/ 目錄,其中包含編譯好的 index.js 檔案,這是讓伺服器連線的關鍵。

3. 設定 Claude 桌面

我們需要為您要使用的 MCP 伺服器設定 Claude for Desktop。 若要執行此動作,請以文字編輯器開啟您的 Claude for Desktop App 設定,位於 ~/Library/Application Support/Claude/claude_desktop_config.json

執行下列指令開啟您的 claude_desktop_config.json 檔案:


code ~/Library/Application\ Support/Claude/claude_desktop_config.json

然後,您會在 mcpServers 金鑰中加入您的伺服器。 在這種情況下,我們會如下所示加入我們的 kaia-agent 伺服器:


{
"mcpServers": {
"kaia-agent": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/PARENT/model-context-protocol/build/index.js"],
"env": {
"WALLET_PRIVATE_KEY": "PASTE_PRIVATE_KEY",
"RPC_PROVIDER_URL": "PASTE_RPC_PROVIDER_URL",
"KAIASCAN_API_KEY": "PASTE_KAIASCAN_API_KEY"
}
}
}
}

  • wallet-private-key 改為您的錢包私人密碼鑰匙。
  • rpc-provider-url 改為您的 RPC 提供者網址。
  • kaiascan-api-key 替換為您的 Kaiascan API 金鑰
  • /absolute-path-to 改為專案目錄的絕對路徑 (例如:/Users/username/ai-agent/mcp/kaia-agentkit-mcp-example/build/index.js)。

儲存檔案,並重新啟動 Claude Desktop。 您的 MCP 伺服器工具現在應該可以在 Claude Desktop 中使用。

使用 Claude for Desktop 測試您的伺服器

現在您可以與您的 AI 代理互動,在 Kaia 上執行 onchain 動作:


What is the current Kaia balance of 0x75Bc50a5664657c869Edc0E058d192EeEfD570eb on kairos? Please answer in KAIA and its total value in USD.
Check Kaia current price ?
Send test KAIA to this address: 0x75Bc50a5664657c869Edc0E058d192EeEfD570eb

輸出

其他資源

讓這個頁面變得更好