mcpField
M
mcp-growi

mcp-growi

本地服务
github.com/Growi-DeFi金融数据023 周前更新

关于 mcp-growi

mcp-growi 是供 AI Agent 和自动化机器人在 Arbitrum 上与 GrowiHFVault 交互的 MCP 服务。它提供读取工具和受限制的交易工具,用于金库存取款,并明确提示模型可发起钱包签名。

主要功能

  1. 01在 Arbitrum 上交互 GrowiHFVault
  2. 02签名并广播交易
  3. 03限制为四类合约调用
  4. 04校验授权对象与交易金额
  5. 05版本检查门控所有工具

适用场景

  1. 01检查 GrowiHFVault
  2. 02向金库存入 USDC
  3. 03从金库提取资产
  4. 04通过 MCP 客户端执行获准的金库交易

MCP 相关

向 MCP 客户端提供 GrowiHFVault 读取操作及 execute_transaction 工具。交易工具使用本地配置的钱包签名并广播交易。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"growi-defi-mcp-growi": {
"command": "npx",
"args": [
"-y",
"mcp-growi"
]
}
}
}
启动命令npx -y mcp-growi

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-growi0.2.0

工具

11

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

mcp-growi

面向 Growi Finance 的 MCP(Model Context Protocol)服务 — 使 AI Agent 和自主机器人能够通过编程方式与 Arbitrum 上的 GrowiHFVault 智能合约交互。

安全

配置密钥库或私钥前,请先阅读本文。

mcp-growi 提供 execute_transaction,可使用本地配置的钱包对 Arbitrum 交易进行签名并广播。在任何 MCP 客户端(Claude Desktop、Claude Code 等)中,大模型对签署的内容拥有完全控制权 — 模型会根据你的提示词 以及 它能够访问的其他任何内容发起每次工具调用。

这使 MCP 成为一个“困惑代理”:如果不可信内容到达模型 — 例如由其他工具获取的网页、会话中打开的文档,或由攻击者控制的同级 MCP 服务 — 其中的提示注入载荷就可能指示模型清空已配置的钱包。

建议
  • 不要在能够访问不可信内容的会话中配置 KEYSTORE_PATH 或 PRIVATE_KEY。 如果同一客户端具有浏览工具、文档读取工具或任何其他 MCP 服务,请默认将该会话视为已被攻破。
  • 使用专用的“机器人”钱包。 创建一个全新的 Ethereum 地址,专供 mcp-growi 使用,并且只存入你打算用于存款的金额。切勿重复使用你的主托管钱包。
  • 尽量减少用于 Gas 的 ETH。 几美元就足够了 — 机器人钱包中持有超过下一次操作所需金额的 ETH 没有任何好处。
  • 运行 mcp-growi@latest。 发布安全更新时,内置版本检查会阻止所有操作,直到你完成升级。固定使用旧版本会使这一机制失效。
此服务确实实施的防护

此服务有自己的防护措施,可应对最直接的清空钱包途径,但无法阻止所有形式的滥用:

  • 允许列表。 execute_transaction 仅对四组 (contract, selector) 配对签署调用 — USDC.approve、GWHF.approve、vault.deposit、vault.withdraw。调用 USDC.transfer(attacker, balance) 的提示注入载荷会在签名前被拒绝。
  • 解码后验证。 仅当 approve 调用的 spender 是 GrowiHFVault 地址时才会接受。deposit 和 withdraw 的金额必须大于零。
  • 版本门禁。 如果无法通过 npm 注册表验证本地 MCP 版本,或本地版本与最新发布版本不一致,所有读写工具都会拒绝运行。

这些防护措施能阻止简单的攻击,但无法让密钥库在任意会话中都安全。请将其视为热钱包,而非托管钱包。

合约详情

字段值
网络Arbitrum One
合约0x928ed672e6eabb7a565c5eb9aac15e3cf6a18388
Vault 代币GWHF
存款代币USDC

该合约已在 Arbiscan 上验证 — 你可以在此查看源代码和 ABI: https://arbiscan.io/address/0x928ed672e6eabb7a565c5eb9aac15e3cf6a18388#code

此软件包中包含 ABI(src/contract/abi.ts),因此运行时无需进行外部调用。

项目结构

src/
├── index.ts               # Server entrypoint + npm version check
├── contract/              # On-chain interaction layer (viem)
│   ├── abi.ts             # GrowiHFVault + ERC20 ABIs
│   ├── client.ts          # Arbitrum public client + contract/token/HL addresses
│   └── index.ts
├── locks/
│   └── lock-period.ts     # Arbitrum deposit lock + Hyperliquid 24h withdraw lockup
└── tools/                 # MCP tool definitions
    ├── read.ts            # Read-only on-chain queries
    ├── write.ts           # Transaction prep + signing (keystore/privkey)
    └── index.ts

设置 — Claude Desktop / Claude Code

将以下内容添加到 Claude MCP 配置文件(claude_desktop_config.json 或 .mcp.json)中:

{
  "mcpServers": {
    "growi": {
      "command": "npx",
      "args": ["-y", "mcp-growi@latest"],
      "env": {
        "KEYSTORE_PATH": "/path/to/your/wallet.json",
        "KEYSTORE_PASSPHRASE": "your_passphrase"
      }
    }
  }
}

重要: 请使用 mcp-growi@latest(而不只是 mcp-growi),确保每次 Claude 启动时 MCP 都会自动更新。如果版本过旧,或无法访问 npm 注册表,所有工具(读写)都会被阻止,直到验证成功。

替代方案 — 直接使用私钥(安全性较低):

"env": { "PRIVATE_KEY": "0x..." }

可选 — 自定义 RPC 端点:

"env": { "RPC_URL": "https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY" }

保存后重启 Claude Desktop/Code。版本检查通过后即可使用这些工具 — 如果调用返回版本阻止错误,请参阅上面的“安全”部分。

设置 — 开发(从源代码)

npm install
npm run build
npm start

技术栈

  • TypeScript + Node.js
  • @modelcontextprotocol/sdk — MCP 服务实现
  • viem — Ethereum/Arbitrum RPC 交互

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。