mcpField
A
AgentGuard

AgentGuard

本地服务
agentguard.app其他0今天更新

关于 AgentGuard

AgentGuard 是一款 MCP 服务,让 AI Agent 通过受链上规则约束的金库发起 NEAR 付款。它提供付款控制、地址检查,并可对策略或文本扫描标记的交易交由所有者审核。

主要功能

  1. 01通过金库申请 NEAR 付款
  2. 02在链上执行付款限额和审批规则
  3. 03根据风险信号检查地址
  4. 04查看付款状态和历史
  5. 05扫描付款文本中的提示词注入
  6. 06通过金库购买 Sentinel 检查

适用场景

  1. 01让 Agent 向获准收款方付款
  2. 02要求所有者审批触发策略的付款
  3. 03转账前检查收款地址
  4. 04付款文本被标记时暂缓请求

MCP 相关

它提供金库付款、地址检查、余额、策略、付款状态与历史记录等工具,也支持可选的 Sentinel 检查。Agent 密钥只能申请付款,金库合约负责执行支出规则。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"zaxcoraider-agentguard": {
"command": "npx",
"args": [
"-y",
"@zaxcoraider/agentguard-mcp"
],
"env": {
"AGENTGUARD_VAULT": "<AGENTGUARD_VAULT>",
"NEAR_NETWORK": "<NEAR_NETWORK>",
"AGENTGUARD_AGENT_KEY": "<AGENTGUARD_AGENT_KEY>",
"AGENTGUARD_KEY_FILE": "<AGENTGUARD_KEY_FILE>",
"NEAR_RPC_URL": "<NEAR_RPC_URL>",
"SENTINEL_URL": "<SENTINEL_URL>"
}
}
}
}
启动命令npx -y @zaxcoraider/agentguard-mcp
需要配置的环境变量
AGENTGUARD_VAULTYour AgentGuard vault account, e.g. my-agent.agentguard.testnet
NEAR_NETWORKtestnet (default) or mainnet
AGENTGUARD_AGENT_KEY密钥The agent's ed25519 function-call key; without it the server is read-only
AGENTGUARD_KEY_FILE密钥Path to a key file to read instead of AGENTGUARD_AGENT_KEY
NEAR_RPC_URLOverride the NEAR RPC endpoint
SENTINEL_URLWhere to buy Sentinel's paid check

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

安装包
npm@zaxcoraider/agentguard-mcp0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

AgentGuard MCP 服务

让任何 MCP Agent(Claude Code、Claude Desktop、Codex 等)都能通过 AgentGuard vault 在 NEAR 上付款。Agent 只持有一个函数调用密钥,用来请求 vault 付款。vault 合约会在链上决定:paid、pending(等待人工所有者处理)或 blocked。即使 Agent 遭到提示词注入并请求任意付款,合约仍会拒绝。

工具

工具功能
agentguard_pay请求 vault 向 recipient 支付 amount_near。返回 paid / pending / blocked、原因和交易链接。将发票 / 邮件 / 页面作为 source_text 传入:如果其中显示了提示词注入手法,就会请求 vault 暂缓付款,供所有者审核(flagged_for_review)
agentguard_check_address“向此地址付款安全吗?”检查共享诈骗登记表、账户是否存在、是否为合约、是否在允许列表中、是否有相似名称,以及(提供 source_text 时)对付款请求文本进行提示词注入扫描。返回 allow / warn / block + 原因
agentguard_balance余额、可用余额、过去 24 小时的支出、已支付 / 已拦截 / 待处理的数量
agentguard_policy单笔付款上限、24 小时限额、审批门槛、允许列表、登记表、锁定状态
agentguard_payment_status按 ID 查询一笔付款(例如所有者是否已批准)
agentguard_history最近的付款请求,包括已拦截的请求
agentguard_sentinel_check通过 HTTP 402 购买 Sentinel 的付费检查:通过你的 vault 支付价格(适用你的规则;绝不超过 max_price_near,默认值为 0.02),使用 X-PAYMENT 重试,并返回检查结果 + 交易。设置 SENTINEL_URL

设置

cd packages/mcp
npm install
npm run build

配置(环境变量):

变量默认值含义
AGENTGUARD_VAULT(必填)你的 vault,例如 demo2.agentguard.testnet
NEAR_NETWORKtestnettestnet 或 mainnet
AGENTGUARD_AGENT_KEY从文件读取Agent 的 ed25519:... 函数调用密钥
AGENTGUARD_KEY_FILE~/.near-credentials/<network>/<vault>.json如果未设置上方变量,则从此处读取密钥(由 scripts/gen-agent-key.mjs 创建)
NEAR_RPC_URLFastNEAR 公共 RPC覆盖 RPC 端点
SENTINEL_URLhttps://sentinel.agentguard.appagentguard_sentinel_check 购买检查的地址(本地 Sentinel 可设置为 http://localhost:3000)

没有密钥时,服务仍会运行,但只能读取。

Claude Code
claude mcp add agentguard -e AGENTGUARD_VAULT=demo2.agentguard.testnet -- npx -y @zaxcoraider/agentguard-mcp

已发布到 npm,包名为 @zaxcoraider/agentguard-mcp。也可以从克隆的仓库运行:-- node /absolute/path/to/packages/mcp/dist/index.js。

然后向 Claude 提问:“检查向 agentguard-evil.testnet 付款是否安全,然后向 agentguard-shop.testnet 支付 0.05 NEAR 买咖啡。”

任意 MCP 客户端(JSON 配置)
{
  "mcpServers": {
    "agentguard": {
      "command": "npx",
      "args": ["-y", "@zaxcoraider/agentguard-mcp"],
      "env": { "AGENTGUARD_VAULT": "demo2.agentguard.testnet", "NEAR_NETWORK": "testnet" }
    }
  }
}

获取你自己的 vault(testnet,约 2 分钟)

需要 near CLI 和一个 testnet 账户(YOU.testnet)。以下每一步都在 testnet 上运行过(vault 为 guide-test.agentguard.testnet,参见 docs/TESTNET-RESULTS.md §9)。

1. 创建 vault,使用工厂创建。1 NEAR 会存入 vault(仍归你所有)。vault 创建时不含完整访问密钥:

near contract call-function as-transaction agentguard.testnet create_vault json-args '{
  "name": "my-agent",
  "policy": {"max_per_payment": "500000000000000000000000", "daily_limit": "1000000000000000000000000",
             "approval_threshold": "200000000000000000000000", "unknown_recipient": "require_approval",
             "pending_ttl_ns": "86400000000000"},
  "allowlist": ["agentguard-shop.testnet"]
}' prepaid-gas '100 Tgas' attached-deposit '1 NEAR' sign-as YOU.testnet network-config testnet sign-with-keychain send

这意味着单笔付款上限为 0.5 NEAR,每日上限为 1 NEAR,超过 0.2 NEAR 需要你批准,向陌生人付款则需要等待你批准(金额以 yoctoNEAR 为单位,1 NEAR = 10^24)。

**2. 创建 Agent 的密钥。**密钥会保存到 ~/.near-credentials/testnet/my-agent.agentguard.testnet.json;只会打印公钥:

node scripts/gen-agent-key.mjs my-agent.agentguard.testnet     # from the repo root

**3. 将该密钥交给 vault。**它只能调用 request_payment:

near contract call-function as-transaction my-agent.agentguard.testnet add_agent \
  json-args '{"public_key": "ed25519:<printed key>", "label": "my-agent"}' \
  prepaid-gas '30 Tgas' attached-deposit '1 yoctoNEAR' sign-as YOU.testnet network-config testnet sign-with-keychain send

4. 将 MCP 服务指向该 vault(AGENTGUARD_VAULT=my-agent.agentguard.testnet,参见“设置”),然后让你的 Agent 付款。测试运行结果:

agentguard_pay agentguard-shop.testnet 0.1  -> paid
agentguard_pay agentguard-user.testnet 0.1  -> pending, unknown_recipient (approve or deny it as the owner)

作为所有者,附带 1 yoctoNEAR 即可执行:approve {"id": "1"} / deny {"id": "1"}、add_to_allowlist、set_policy、withdraw、set_paused 和 lock_rules(此操作不可逆;执行后任何人都无法放宽 vault 的规则,包括你自己)。参见 contracts/vault。

不使用 Agent 试用

npm test                       # 24 unit tests: scoring, lookalikes, prompt-injection scan, NEAR amount math, HTTP 402 payment checks
npx tsx scripts/live-demo.ts   # starts the server over stdio and calls every tool on testnet

live-demo.ts 需要 demo2.agentguard.testnet 的 Agent 密钥才能付款。没有该密钥时,只读工具仍可使用,而 agentguard_pay 会返回密钥缺失的错误。

预期结果(记录于 2026-11-03):

agentguard_check_address agentguard-evil.testnet -> block: flagged in the shared AgentGuard registry: ...
agentguard_check_address agentguard-sh0p.testnet -> block: does not exist; looks like trusted account agentguard-shop.testnet
agentguard_pay agentguard-shop.testnet 0.05     -> paid
agentguard_pay agentguard-evil.testnet 0.2      -> blocked, recipient_flagged
agentguard_pay agentguard-shop.testnet 5        -> blocked, over_per_payment_limit

Agent 无法做什么

NEAR 本身将该密钥限制为只能对金库调用 request_payment。它无法转账 NEAR、调用所有者方法(withdraw、set_policy、approve、...)、附加存款、调用其他合约、添加密钥、部署代码或删除账户。测试网验证:scripts/prove-agent-key.sh(12/12 次均被拒绝),以及仓库根目录中的 docs/TESTNET-RESULTS.md。

agentguard_check_address 是给 Agent 的建议。真正生效的规则由金库合约执行,无论 Agent 如何决定。

提示词注入扫描(src/inject.ts)

将请求付款的文本(source_text)传给 agentguard_pay 或 agentguard_check_address。系统会扫描已知的欺骗手法,不涉及模型:

信号严重程度
不可见字符:零宽字符、方向覆盖字符、Unicode“标签”字符(隐藏文本会被解码并作为 hidden_text 返回)恶意
“忽略你之前的指令”、“新指令:”、“你现在是……”恶意
“不要告诉所有者”、“未经批准”、“绕过限额/允许列表”恶意
伪造的角色标记:<system>、[SYSTEM]、<|im_start|>恶意
针对 AI 的文本(“如果你是 AI 助手……”)、隐藏的 HTML/CSS、“我们的收款地址已变更”、文本中的其他 NEAR 账户、较长的编码数据块可疑

处理方式:check_address 会将恶意内容判定为 block,将可疑内容判定为 warn。agentguard_pay(也会扫描备注)会将任何命中项连同 force_review 一起发送给金库,因此合约会暂扣款项,等待所有者处理,而不是付款。扫描只会让限制更严格。它基于启发式规则,可能被绕过;扫描结果干净并不能证明安全,最终仍由金库规则决定。实时运行:TESTNET-RESULTS §14(scripts/injection-demo.mts:同一家商店、同类金额,干净的发票会付款,而被污染的发票会被暂扣)。

评论

支持 Markdown

第一次接触 MCP?

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

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