区块链交互工具

MCP Moni是一个集成Monad测试网的MCP服务器,提供代币余额查询、转账、NFT创建、代币交换和自然语言请求等功能,专为与Claude Desktop无缝集成设计。

  • by deseti
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 deseti/MCP-MONI

使用说明

MCP莫尼

注: 所有操作和查询都在Monad测试网上执行。

MCP Moni是与Monad测试网集成的MCP(模型上下文协议)服务器。它提供了用于检查MON和其他令牌余额、转移令牌、包装/解包MON、查询块和交易、NFT功能和自然语言请求的工具。专为与Claude Desktop无缝集成而设计。

项目概述

MCP Moni利用模型上下文协议使像Claude这样的人工智能助手能够直接与Monad区块链交互。这允许区块链操作的对话界面,而不需要用户编写代码或理解复杂的区块链交互。

什么是模型上下文协议(MCP)?

模型上下文协议是一种标准,允许AI模型访问外部工具和数据源。MCP Moni实现了此协议,为AI助手提供区块链功能。

什么是Monad?

Monad是一个高性能的第1层区块链,旨在提高可扩展性和效率。测试网环境允许开发人员在不使用真实资产的情况下尝试区块链功能。

主要特点

  • 余额检查:检查任何地址的MON和其他代币余额
  • 代币投资组合:查看任何地址的全面代币持有情况
  • 代币转移:使用简单命令(指令和直接执行)转移令牌
  • 包装/拆包:在原生MON和包装MON(WMON)之间转换
  • 区块链探索:查询最新区块和交易详情
  • NFT创建:在Magic Eden(Monad测试网)上创建和启动NFT系列
  • NFT图像生成:根据文本描述生成NFT艺术品
  • 代币交换:使用集成的DEX功能在不同令牌之间进行交换
  • 标桩:质押MON以获得aprMON代币(流动质押)
  • 自然语言接口:使用简单的自然语言命令执行区块链操作

可用工具

工具名称 描述
获取mon余额 获取Monad测试网上某个地址的mon余额
获取令牌余额 获取Monad测试网上某个地址的特定令牌余额
获取代币组合 获取Monad测试网上某个地址的所有代币余额
转移令牌 获取如何在Monad测试网上转移令牌的说明
获取最新区块 从Monad测试网获取最新的区块
获取交易 在Monad测试网上获取交易的详细信息
执行转账 使用配置的测试钱包在Monad测试网上执行实际的代币转账
执行包装 将本机MON包装为WMON(包装MON)令牌
执行unwrap 将WMON(已包装的MON)解包回本机MON令牌
deputy 将本地MON存入WMON(warp)(wrap的别名)
撤回 将WMON撤回到MON(解包)(解包的别名)
获取天然气价格 在Monad测试网上获取当前天然气价格
生成nft图像 根据文本描述生成nft图像
创建nft集合 在Magic Eden(Monad Testnet)上创建并启动nft集合
获取交换报价 获取Monad测试网上交换代币的报价
execute-swap 使用配置的交换路由器在Monad测试网上执行令牌交换
执行质押 质押MON以获得aprMON代币(流动质押)
execute unstake 请求将aprMON的unstake还原为MON(启动unstake过程)
获取待处理的提款 获取aprMON取消提款的待处理提款请求列表
执行索赔 从已完成的aprMON取消索赔请求中索赔MON
自然语言请求 处理自然语言请求,如“warp 0.01 MON”或“unwrap 0.02 WMON”

技术细节

建筑

MCP Moni是用TypeScript构建的,集成了几个关键组件:

  • MCP服务器:处理AI助手和区块链工具之间的通信
  • Viem 图书 馆:提供底层以太坊/Monad区块链交互
  • Monad SDK:连接到Monad测试网进行区块链操作
  • 代币标准:支持ERC-20代币和NFT标准(ERC-721/ERC-1155)

安全考虑

  • 所有操作仅在Monad测试网上执行
  • 私钥存储在本地 .env 文件,从未传输
  • 只应使用测试钱包(切勿使用带有实物资产的生产钱包)
  • 事务签名发生在本地,而不是远程服务器上

详细功能说明

代币交换

MCP Moni提供完整的去中心化交易所(DEX)体验:

  • 在执行掉期交易之前获取报价
  • 支持多个令牌对
  • 可配置的滑动公差
  • 通过交换路由器合约直接执行
  • 对具有复杂路径的令牌对的特殊处理

NFT创建工作流

使用MCP Moni创建NFT包括:

  1. 从文本描述生成NFT艺术品
  2. 配置收集参数(名称、符号、版税等)
  3. 设置铸造参数(价格、供应限制、日期)
  4. 将集合部署到Monad测试网
  5. 管理创建的集合

液体打桩系统

打桩系统允许:

  • 质押本地MON以获得aprMON代币
  • 通过时间锁机制将aprMON释放回MON
  • 查看待处理的提款请求
  • 在拆借期结束后申请MON

工具使用示例

检查MON余额

{
  "name": "get-mon-balance",
  "arguments": { "address": "<address>" }
}

答复:

Balance for <address>: 0 MON

查看代币组合

{
  "name": "get-token-portfolio",
  "arguments": { "address": "<address>" }
}

答复:

Portfolio for <address> (Popular tokens):
- MON: 10.96 (decimals: 18)
- USDC: 0.86 (decimals: 6)
- ...

转账令牌(仅限说明)

{
  "name": "transfer-token",
  "arguments": {
    "from": "<from_address>",
    "to": "<to_address>",
    "amount": "0.1",
    "token": "MON"
  }
}

答复:

Transfer Instructions for MON

To transfer 0.1 MON from <from_address> to <to_address>, you'll need to:
1. Connect your wallet (containing address <from_address>)
2. Send a transaction with the following parameters:
   - To: <to_address>
   - Value: 0.1 MON
   - Gas Limit: Auto (or ~21000)

Please note: This tool provides instructions only. The actual transfer needs to be executed by you using a wallet that controls the sender address.
Alternatively, you can use the 'execute-transfer' tool with your private key (only use test wallets, never your main wallet) to execute the transfer directly.

转账令牌(直接执行)

{
  "name": "execute-transfer",
  "arguments": {
    "to": "<to_address>",
    "amount": "0.1",
    "token": "MON"
  }
}

答复:

✅ Transfer Successful!

0.1 MON has been sent to address:
<to_address>

Transaction Details:
- From: <from_address>
- Hash: <tx_hash>

[View Transaction on Monad Explorer](https://testnet.monadexplorer.com/tx/<tx_hash>)

令牌交换示例

{
  "name": "get-swap-quote",
  "arguments": {
    "fromToken": "MON",
    "toToken": "USDC",
    "amount": "1.0"
  }
}

答复:

## Swap Quote: MON to USDC

- Input: 1.0 MON
- Expected Output: 3.45 USDC
- Rate: 1 MON ≈ 3.450000 USDC

To execute this swap, use the `execute-swap` tool with the same parameters.

Note: Actual swap values may vary slightly due to price movements and slippage.

执行交换

{
  "name": "execute-swap",
  "arguments": {
    "fromToken": "MON",
    "toToken": "USDC",
    "amount": "1.0",
    "slippage": 2.0
  }
}

答复:

## ✅ Swap Executed Successfully

Your 1.0 MON has been successfully swapped to approximately 3.45 USDC. The transaction is complete and has been confirmed on the blockchain.

### Transaction Details
- From: <wallet_address>
- Transaction Hash: <tx_hash>
- Block Number: 13845721
- Swapped: 1.0 MON ➡️ 3.45 USDC

### [🔍 View Transaction on Monad Explorer](https://testnet.monadexplorer.com/tx/<tx_hash>)

You can now use your USDC tokens for other operations on Monad testnet.

打桩示例

{
  "name": "execute-stake",
  "arguments": {
    "amount": "5.0"
  }
}

答复:

## ✅ Staking Successful

Your 5.0 MON has been successfully staked and you received 4.98 aprMON. The transaction is complete and has been confirmed on the blockchain.

### Transaction Details
- From: <wallet_address>
- Transaction Hash: <tx_hash>
- Block Number: 13846982
- Staked: 5.0 MON ➡️ 4.98 aprMON

### [🔍 View Transaction on Monad Explorer](https://testnet.monadexplorer.com/tx/<tx_hash>)

Your aprMON represents your staked MON and can be unstaked when needed.

将MON包裹到WMON

{
  "name": "execute-wrap",
  "arguments": { "amount": "0.2" }
}

答复:

✅ Successfully wrapped 0.2 MON to WMON.

Transaction Hash: <tx_hash>

Block Number: <block_number>

[View on Explorer](https://testnet.monadexplorer.com/tx/<tx_hash>)

自然语言请求

{
  "name": "natural-language-request",
  "arguments": { "request": "warp 0.2 MON to WMON" }
}

答复:

✅ Successfully wrapped 0.2 MON to WMON.

Transaction Hash: <tx_hash>

Block Number: <block_number>

[View on Explorer](https://testnet.monadexplorer.com/tx/<tx_hash>)

NFT:创建收藏和生成图像

{
  "name": "create-nft-collection",
  "arguments": { "name": "MyNFT", "symbol": "MYN", "image": "<base64>", "artType": "SAME_ARTWORK", ... }
}

答复:

NFT Collection created on Magic Eden (Monad Testnet)...
{
  "name": "generate-nft-image",
  "arguments": { "description": "A cute pixel cat", "style": "pixel art" }
}

答复:

[Base64 image data or image URL]

安装和运行MCP监视器

  1. 克隆此存储库
git clone https://github.com/deseti/mcp-moni.git
cd mcp-moni
  1. 安装依赖项
npm install
  1. 创建一个 .env 使用测试钱包私钥在项目根目录中创建文件:
TEST_WALLET_PRIVATE_KEY=your_test_wallet_private_key_here
  1. 构建项目
npm run build
  1. 运行MCP服务器
node build/index.js

与Claude Desktop集成

  1. 打开克劳德桌面
  2. 前往“设置”>“开发人员”
  3. 编辑 claude_desktop_config.json 并添加:
{
  "mcpServers": {
    "mcp-moni": {
      "command": "node",
      "args": ["/<path-to-project>/build/index.js"]
    }
  }
}
  1. 重新启动克劳德桌面
  2. 在Claude中,键入“@mcp-moni”以激活mcp服务器

Claude桌面配置说明

这 claude_desktop_config.json 该文件用于配置外部工具和服务器,以便Claude Desktop与之交互。对于MCP Moni,配置结构如下:

{
  "mcpServers": {
    "mcp-moni": {
      "command": "node",
      "args": ["your project directory/index.js"]
    }
  }
}
  • mcpServers:本节定义了Claude可以与之交互的所有模型上下文协议服务器
  • mcp莫尼:这是您将用于激活服务器的标识符(在Claude中使用“@mcp-moni”)
  • 命令:要运行的可执行文件(在本例中为Node.js)
  • 参数:传递给命令的参数,该参数应指向您构建的MCP Moni服务器文件

在Windows上,文件通常位于: C:\Users\<YourUsername>\AppData\Roaming\Claude\claude_desktop_config.json

在macOS上,文件通常位于: ~/Library/Application Support/Claude/claude_desktop_config.json

配置后,Claude Desktop将能够启动并与您的MCP Moni服务器通信,使Claude能够与Monad区块链交互。

配置选项

MCP Moni服务器可以使用以下环境变量进行配置:

  • TEST_WALLET_PRIVATE_KEY:测试钱包的私钥(交易需要)
  • RPC_URL:Monad测试网的自定义RPC URL(可选,默认为公共端点)
  • CHAIN_ID:Monad网络的链ID(可选,默认为testnet)

故障排除

常见问题和解决方案:

  • 连接错误:确保Monad测试网RPC可访问
  • 交易失败:检查您的测试钱包是否有足够的MON用于加油
  • 缺少私钥:确保您的.env文件正确配置了测试钱包密钥
  • 未找到工具:确保Claude Desktop配置指向正确的构建路径

未来发展

计划的功能和改进:

  • 与更多令牌和DeFi协议集成
  • 支持其他NFT市场
  • 增强的分析和可视化工具
  • 多钱包管理功能
  • 跨链运营

贡献

欢迎投稿!请随时提交拉取请求。

备注

  • “要与Moni MCP和钱包交互,您可以将私钥添加到.env文件中。但是,请注意:仅使用测试网钱包,出于安全原因,切勿使用主钱包。
  • 使用测试钱包实现直接执行功能(切勿使用主钱包!)。
  • 对于NFT创建,图像必须进行base64编码。

资源

联系