本教程将带您了解如何开发一个与 Monad 测试网交互的 MCP 服务器。通过这个服务器,您可以轻松查询 Monad 测试网上的 MON 代币余额。
模型上下文协议(Model Context Protocol,简称 MCP)是一套标准接口,它让 AI 模型能够与外部工具和服务进行无缝对接。
在本教程中,我们将开发一个 MCP 服务器,让 Claude Desktop 客户端能够直接查询 Monad 测试网,实时获取账户的 MON 代币余额。
- Node.js(v16 或以上版本)
- 包管理工具(
npm或yarn) - Claude Desktop 客户端
- 克隆项目代码
git clone https://github.com/monad-developers/monad-mcp-tutorial.git- 安装项目依赖:
npm install
项目中的 src/index.ts 文件已经包含了 Monad 测试网的基本配置。
// 初始化 MCP 服务器
const server = new McpServer({
name: "monad-testnet",
version: "0.0.1",
// 定义服务器支持的功能列表
capabilities: ["get-mon-balance"]
});首先,我们来看一下 get-mon-balance 功能的基本框架:
server.tool(
// 功能标识符
"get-mon-balance",
// 功能说明
"查询 Monad 测试网地址的 MON 代币余额",
// 参数定义
{
address: z.string().describe("需要查询的 Monad 测试网地址"),
},
// 功能实现
async ({ address }) => {
// 余额查询逻辑
}
);接下来,让我们完善余额查询的具体实现:
server.tool(
// 功能标识符
"get-mon-balance",
// 功能说明
"查询 Monad 测试网地址的 MON 代币余额",
// 参数定义
{
address: z.string().describe("需要查询的 Monad 测试网地址"),
},
// 功能实现
async ({ address }) => {
try {
// 调用接口查询余额
const balance = await publicClient.getBalance({
address: address as `0x${string}`,
});
// 返回格式化的查询结果
return {
content: [
{
type: "text",
text: `地址 ${address} 的 MON 余额为:${formatUnits(balance, 18)} MON`,
},
],
};
} catch (error) {
// 错误处理
return {
content: [
{
type: "text",
text: `查询地址 ${address} 的余额失败:${
error instanceof Error ? error.message : String(error)
}`,
},
],
};
}
}
);async function main() {
// 配置标准输入输出作为通信通道
const transport = new StdioServerTransport();
// 建立服务器连接
await server.connect(transport);
console.error("Monad 测试网 MCP 服务器已启动");
}npm run build现在,您的 MCP 服务器已经准备就绪!
- 启动 Claude Desktop
- 进入设置界面
Claude > 设置 > 开发者选项
- 编辑配置文件
打开 claude_desktop_config.json
- 添加服务器配置并保存
{
"mcpServers": {
...
"monad-mcp": {
"command": "node",
"args": [
"/<项目路径>/build/index.js"
]
}
}
}- 重启 Claude Desktop
效果展示



