AI 代理(MCP)
neurochain-mcp 是一个 Model Context Protocol 服务器。它让 AI 助手——Claude Code、Claude Desktop 或任何 MCP 客户端——读取链上数据,并在你设定的限制内对链进行操作。
AI 助手 ⇄ (MCP 经由 stdio) ⇄ neurochain-mcp ⇄ (HTTP) ⇄ gateway :3000 ⇄ 节点 :9933该服务器是仓库 neurochain-mcp/ 目录下的纯 Node.js 程序(无需构建步骤)。它只与 gateway 的 REST API 通信。
安全保障
- 写操作使用会话密钥签名,绝不使用钱包的主密钥。会话密钥由你的主密钥授予,带有作用范围、支出上限和有效期,每个验证者都会在共识中强制执行这些限制——参见账户抽象 → 会话密钥。
- 会话密钥不能管理 Sentinel 信任列表,也不能确认被暂扣的转账。如果 Sentinel 暂扣了一笔有风险的转账,只有你本人才能放行。
- 质押、委托和治理投票不向代理开放。
- 没有会话密钥时,服务器以只读模式运行。
配置
1. 安装
bash
cd neurochain-mcp
npm install2. 创建会话密钥和配置文件
在 Web 钱包中打开 Agent 面板,创建会话密钥——选择它可以转账的目标地址(或 *)、总支出上限以及有效的区块数——然后点击 Export config。你会得到:
json
{
"node_rpc": "http://localhost:3000",
"account": "neuro:<15 hex>.human",
"session_pk": "<会话公钥,hex>",
"sk_seed_hex": "<会话密钥 seed,hex>",
"scope": "*"
}| 字段 | 含义 |
|---|---|
node_rpc | gateway 的 URL(不是节点的 9933 端口)。钱包会填入当前页面自身的地址;如果 gateway 运行在别处,请修改 |
account | 代理所代表的地址 |
session_pk、sk_seed_hex | 会话密钥。两者都留空即为只读 |
scope | 仅供参考——真正生效的是链上的授权 |
把文件保存在仓库之外并妥善保管:sk_seed_hex 是机密。
3. 注册服务器
Claude Code:
bash
claude mcp add neurochain \
--env NEUROCHAIN_MCP_CONFIG=/absolute/path/to/neurochain-mcp.config.json \
-- node /absolute/path/to/neurochain-mcp/src/index.jsClaude Desktop(claude_desktop_config.json)或项目的 .mcp.json:
json
{
"mcpServers": {
"neurochain": {
"command": "node",
"args": ["/absolute/path/to/neurochain-mcp/src/index.js"],
"env": { "NEUROCHAIN_MCP_CONFIG": "/absolute/path/to/neurochain-mcp.config.json" }
}
}
}请使用绝对路径:客户端会从它自己的工作目录启动服务器。
工具
读取
| 工具 | 参数 | 返回 |
|---|---|---|
nc_get_account | address(默认:配置的账户) | 余额、nonce、交易数量 |
nc_get_txs | address、limit(1–200) | 交易历史 |
nc_gas_estimate | — | 基础费用和费用估算 |
nc_list_proposals | status、limit(1–100)、offset | 带计票结果的治理提案 |
nc_list_validators | — | 验证者及其质押和指标 |
nc_get_contract | address(.app) | 所有者、代码哈希、安全分数 |
nc_analyze_contract | bytecode_hex | VMGuardian 分析——风险、违规项 |
nc_get_session_grants | address | 账户的会话密钥,含上限和已花费金额 |
nc_get_held | address | 被 Sentinel 暂扣的转账 |
写入(需要会话密钥)
| 工具 | 参数 | 说明 |
|---|---|---|
nc_transfer | to、amount_nro(NRO,可带小数) | 如果被 Sentinel 暂扣,工具会说明它是会自动放行,还是需要你确认 |
nc_call_contract | to(.app)、function、args、value(uNRO,默认 0) | |
nc_deploy | bytecode_hex、name、description、template、init_args | 与任何部署一样经过 VMGuardian 关卡 |
每次写操作都会读取下一个 nonce,用会话密钥签名,并发送到 POST /api/v1/transactions。节点在每个验证者上检查授权;例如,超出上限的转账会返回:
Error: POST /api/v1/transactions failed: HTTP 401 — session spend cap exceeded已验证
在本地测试网络上:读取工具返回实时数据;使用上限为 5 NRO 的会话密钥执行 1 NRO 的 nc_transfer 得到确认,授权中记录为 spent: 1000000;随后一笔 10 NRO 的转账以上述错误被拒绝;未配置会话密钥时,写入工具直接拒绝,不做任何签名。
撤销
在钱包的 Agent 面板中撤销密钥,或用主密钥签名调用 POST /api/v1/session/revoke。从下一个区块起,用该密钥签名的一切操作都会被拒绝。