关于 mcp-growi
mcp-growi 是供 AI Agent 和自动化机器人在 Arbitrum 上与 GrowiHFVault 交互的 MCP 服务。它提供读取工具和受限制的交易工具,用于金库存取款,并明确提示模型可发起钱包签名。
主要功能
- 01在 Arbitrum 上交互 GrowiHFVault
- 02签名并广播交易
- 03限制为四类合约调用
- 04校验授权对象与交易金额
- 05版本检查门控所有工具
适用场景
- 01检查 GrowiHFVault
- 02向金库存入 USDC
- 03从金库提取资产
- 04通过 MCP 客户端执行获准的金库交易
MCP 相关
向 MCP 客户端提供 GrowiHFVault 读取操作及 execute_transaction 工具。交易工具使用本地配置的钱包签名并广播交易。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
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 交互
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。