mcpField
G
guardian-mcp

guardian-mcp

本地服务
github.com/Odingard安全0今天更新

关于 guardian-mcp

guardian-mcp 是一个 MCP 服务,在 Agent 工具调用前通过 Guardian 进行授权检查。它支持等待人工审批、按策略拒绝、执行凭据,并可代理现有的 stdio MCP 服务。

主要功能

  1. 01以 ALLOW、ASK 或 DENY 控制调用
  2. 02将 ASK 调用挂起以等待人工审批
  3. 03领取已批准调用并执行
  4. 04获取机器可读的执行凭据
  5. 05代理现有 stdio MCP 服务

适用场景

  1. 01工具执行敏感操作前要求审批
  2. 02阻止 Guardian 拒绝或无法授权的调用
  3. 03为现有 stdio MCP 服务添加 Guardian 检查
  4. 04治理服务工具前查看建议模式

MCP 相关

该服务向 MCP 客户端提供 `guardian_invoke_tool`、`guardian_claim` 和 `guardian_receipt`。代理模式仅在 Guardian 决策后转发现有服务的工具;ASK 调用等待人工审批,DENY 调用不会转发。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"odingard-guardian": {
"command": "npx",
"args": [
"-y",
"@odingard/guardian-mcp"
],
"env": {
"GUARDIAN_BASE_URL": "<GUARDIAN_BASE_URL>",
"GUARDIAN_AGENT_CREDENTIAL": "<GUARDIAN_AGENT_CREDENTIAL>",
"GUARDIAN_CONNECTION_ID": "<GUARDIAN_CONNECTION_ID>",
"GUARDIAN_ADAPTER_ID": "<GUARDIAN_ADAPTER_ID>"
}
}
}
}
启动命令npx -y @odingard/guardian-mcp
需要配置的环境变量
GUARDIAN_BASE_URLGuardian control-plane base URL
GUARDIAN_AGENT_CREDENTIAL密钥Agent credential (gak_…)
GUARDIAN_CONNECTION_IDDefault tool connection id for invocations
GUARDIAN_ADAPTER_IDOptional adapter override

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

安装包
npm@odingard/guardian-mcp0.3.3

工具

3

收录的工具列表 · 更新于 今天

参数类型必填说明
purposestring否此操作的面向用户的原因。
toolNamestring是已注册的工具名称。
argumentsobject否工具运行时将使用的参数。
connectionIdstring否工具连接 ID。默认为 GUARDIAN_CONNECTION_ID。

详细介绍

@odingard/guardian-mcp

Guardian MCP 服务

MCP 服务会通过 Guardian 路由 Agent 的工具调用。Guardian 是面向自主 AI 的人类权限基础设施。每次工具调用在执行任何操作之前,都会获得确定性的 ALLOW / ASK / DENY 决策;DENY 表示操作永远不会执行,ASK 则会暂缓操作,直到人类批准。

安装

npm i -g @odingard/guardian-mcp

配置 MCP 客户端

{
  "mcpServers": {
    "guardian": {
      "command": "guardian-mcp",
      "env": {
        "GUARDIAN_BASE_URL": "https://guardian-api.odingard.com",
        "GUARDIAN_AGENT_CREDENTIAL": "gak_…",
        "GUARDIAN_CONNECTION_ID": "con_…"
      }
    }
  }
}

GUARDIAN_ADAPTER_ID 可用于覆盖工具适配器。

工具

工具功能
guardian_invoke_tool提议一次工具调用。ALLOW 会执行并返回回执;ASK 会返回一个等待人类批准的 requestId;DENY 会拒绝请求并提供原因代码。
guardian_claim根据 requestId 领取已批准的 ASK,执行调用并返回回执。
guardian_receipt获取某个请求的机器可读证据回执。

没有 Guardian 权限凭证,任何操作都不会执行——模型的输出只是提议,而非操作。

管理现有 MCP 服务:guardian-mcp proxy (0.3)

将 Guardian 部署在你已使用的任何 stdio MCP 服务前面,例如 WhatsApp、Stripe、Shopify、文件系统或数据库。客户端看到的上游服务工具保持不变,且每次调用都会先经过决策:

{
  "mcpServers": {
    "whatsapp-governed": {
      "command": "guardian-mcp",
      "args": ["proxy", "--", "npx", "-y", "your-whatsapp-mcp-server"],
      "env": {
        "GUARDIAN_BASE_URL": "https://guardian-api.odingard.com",
        "GUARDIAN_AGENT_CREDENTIAL": "gac1.…",
        "GUARDIAN_CONNECTION_ID": "con_…",
        "WHATSAPP_TOKEN": "…"
      }
    }
  }
}
决策处理方式
ALLOW调用会转发到上游服务,然后兑换权限凭证并记录回执。
ASK不会转发任何内容。确切的调用会通过 requestId 暂存;人类批准后,guardian_claim 会将该调用原样转发一次。
DENY永远不会转发任何内容。Guardian 无法访问时也一样。
  • 工具列表中会添加 guardian_claim 和 guardian_receipt。
  • 上游服务不会收到 GUARDIAN_* 设置,因此无法看到 Agent 凭证。
  • **决策门控:**允许的调用会先在上游执行,然后再兑换权限凭证。如果兑换时遭到拒绝,会将其报告为事件(localEffectRan: true),绝不会报告为成功。
  • **首次运行设置:**在 Guardian 控制台中,连接一个工具服务,并将每个上游工具添加为“My own code (record-only)”。然后为 Agent 授权这些工具。
    • 从 0.3.1 起,代理不会尝试自行注册工具。
    • GUARDIAN_AUTO_REGISTER=true 可重新启用此功能,但除非 Agent 的授权中固定了 mcp.install,否则会被拒绝。
    • Guardian 拒绝请求时,结果会说明需要修复什么。
  • 暂存的调用保存在代理进程中。重启代理会丢弃这些调用,且不会转发任何内容。

guardian-mcp --help 会显示用法。缺少设置时会显示一行指出缺少项的消息,而不是堆栈跟踪。

查看即将由你管控的内容:guardian-mcp tools

将服务置于代理后面之前,先列出它的工具以及每个工具建议采用的 Guardian 模式。此操作不需要 Guardian 凭据:

npx -y @odingard/guardian-mcp tools -- npx -y @modelcontextprotocol/server-filesystem ./data
Tool            Suggested     Why
read_file       Allow         server marks it read-only
write_file      Ask me first  "write" may change something
delete_branch   Ask me first  server marks it destructive
createIssue     Ask me first  "create" may change something  ⚠ name not accepted by Guardian

建议模式的生成方式:

  • 首先使用服务自身的 MCP 注解(readOnlyHint、destructiveHint)。
  • 否则根据工具的动词判断。get、list 和 search 建议设为 Allow;其他工具建议设为 Ask。

这些仅是建议:你需要在控制台中设置实际模式。违反 Guardian 命名规则的工具名称会被标记,因为对这些工具的每次调用都会被拒绝。添加 --json 以输出机器可读的结果。

许可证

Apache-2.0。规范开发在 Odingard Guardian monorepo 中进行。

评论

支持 Markdown

第一次接触 MCP?

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

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