关于 scopeblind-mcp
scopeblind-mcp 的 README 介绍了 `protect-mcp`,这是用于控制和观察 MCP 工具调用的本地 stdio 代理,适合希望为现有服务添加逐工具策略和可审计决策记录的团队;仓库说明开发已转至 ScopeBlind/scopeblind-gateway。
主要功能
- 01影子模式记录并放行工具调用
- 02逐工具阻止和速率限制策略
- 03最低层级策略检查
- 04可选 Ed25519 签名回执
- 05结构化决策日志
- 06离线验证回执
适用场景
- 01执行策略前先观察工具调用
- 02阻止或限制指定 MCP 工具的调用频率
- 03为审计记录可验证的决策
- 04代理现有的 stdio MCP 服务
MCP 相关
该网关位于 MCP 客户端与现有 stdio MCP 服务之间,拦截 `tools/call` 请求并透传其他 MCP 消息。影子模式会记录并放行调用;配置策略后可执行逐工具规则。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要扫描的 API 端点 URL(例如 https://api.example.com/v1/signup) |
详细介绍
⚠️ 此仓库已迁移。 活跃开发现已在 ScopeBlind/scopeblind-gateway 继续。
此个人分支可能落后于规范仓库。请使用组织仓库提交问题、拉取请求并获取最新代码。
protect-mcp
MCP 服务的安全网关。默认以影子模式记录日志,支持逐工具策略、可选的本地 Ed25519 回执,以及便于验证的审计输出。
当前 CLI 路径: 将任意 stdio MCP 服务包装为透明代理。在影子模式下,它会记录每个 tools/call 请求,并允许所有请求通过。添加策略文件即可执行逐工具规则。运行 protect-mcp init 以生成本地签名密钥和配置,这样网关也能生成签名回执。
快速开始
# Wrap an existing OpenClaw / MCP config into a usable pack
npx @scopeblind/passport wrap --runtime openclaw --config ./openclaw.json --policy email-safe
# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js
# Generate keys + config template for local signing
npx protect-mcp init
# Shadow mode with local signing enabled
npx protect-mcp --policy protect-mcp.json -- node my-server.js
# Enforce mode
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# Export an offline-verifiable audit bundle
npx protect-mcp bundle --output audit.json
功能说明
protect-mcp 作为 stdio 代理,位于 MCP 客户端和服务之间:
MCP Client ←stdin/stdout→ protect-mcp ←stdin/stdout→ your MCP server
它会拦截 tools/call JSON-RPC 请求,并:
- 影子模式(默认):记录每次工具调用,并允许所有请求通过
- 强制模式:应用逐工具策略规则,例如
block、rate_limit和min_tier - 可选的本地签名:配置签名后,会在结构化日志旁生成 Ed25519 签名回执
所有其他 MCP 消息(initialize、tools/list、通知)都会透明传递。
当前提供的功能
- 逐工具策略——阻止破坏性工具、限制高成本工具的调用频率,并附加最低层级要求
- 结构化决策日志——每项决策都会通过
stderr输出,并带有[PROTECT_MCP] - 可选的本地签名回执——使用包含
signing.key_path的策略运行时生成,保存到.protect-mcp-receipts.jsonl,并可通过http://127.0.0.1:9876/receipts访问 - 离线验证——使用
npx @veritasacta/verify验证回执或数据包 - 无需账户——本地密钥、本地策略、本地进程
当前功能边界
在部署或向用户介绍前,请注意以下重要事项:
- 直接使用
npx protect-mcp -- ...时不会自动签名。 该路径会以影子模式记录决策。要启用本地签名,请运行npx protect-mcp init,然后使用生成的策略文件启动网关。 - 基于层级的策略检查已可用,但默认 CLI/stdio 路径尚未接入清单准入。 除非主机集成通过编程方式调用准入 API,否则 CLI 会将会话层级默认为
unknown。 - 凭证配置目前会验证基于环境变量的凭证引用,并在日志/回执中记录凭证标签。 向任意 stdio 工具注入通用的逐调用凭证,需要适配器支持;默认代理路径不会执行此操作。
- 外部 PDP 适配器和审计数据包辅助工具已作为导出工具提供。 它们尚未完全接入默认 CLI 路径。
策略文件
{
"default_tier": "unknown",
"tools": {
"dangerous_tool": { "block": true },
"admin_tool": { "min_tier": "signed-known", "rate_limit": "5/hour" },
"read_tool": { "require": "any", "rate_limit": "100/hour" },
"*": { "rate_limit": "500/hour" }
},
"signing": {
"key_path": "./keys/gateway.json",
"issuer": "protect-mcp",
"enabled": true
},
"credentials": {
"internal_api": {
"inject": "env",
"name": "INTERNAL_API_KEY",
"value_env": "INTERNAL_API_KEY"
}
}
}
策略规则
| 字段 | 值 | 描述 |
|---|---|---|
block | true | 明确阻止此工具 |
require | "any"、"none" | 基本访问要求 |
min_tier | "unknown"、"signed-known"、"evidenced"、"privileged" | 主机设置准入状态时所需的最低层级 |
rate_limit | "N/unit" | 速率限制(例如 "5/hour"、"100/day") |
工具名称必须完全匹配,"*" 可用作通配回退。
MCP 客户端配置
Claude Desktop
添加到 claude_desktop_config.json:
{
"mcpServers": {
"my-protected-server": {
"command": "npx",
"args": [
"-y", "protect-mcp",
"--policy", "/path/to/protect-mcp.json",
"--enforce",
"--", "node", "my-server.js"
]
}
}
}
Cursor / VS Code
使用相同模式——将服务命令替换为用于包装该服务的 protect-mcp。
CLI 选项
protect-mcp [options] -- <command> [args...]
protect-mcp init
Commands:
init Generate Ed25519 keypair + config template
status Show decision stats and local passport identity
digest Generate a local human-readable summary
receipts Show recent persisted signed receipts
bundle Export an offline-verifiable audit bundle
Options:
--policy <path> Policy/config JSON file
--slug <slug> Service identifier for logs/receipts
--enforce Enable enforcement mode (default: shadow)
--verbose Enable debug logging
--help Show help
编程接口
该库还提供了尚未接入默认 CLI 路径的基础功能:
import {
ProtectGateway,
loadPolicy,
evaluateTier,
meetsMinTier,
resolveCredential,
initSigning,
signDecision,
queryExternalPDP,
buildDecisionContext,
createAuditBundle,
} from 'protect-mcp';
如果要添加以下功能,请使用这些接口:
- 在会话开始前进行清单准入
- 外部 PDP(OPA、Cerbos 或通用 HTTP webhook)
- 自定义的凭证代理集成
- 围绕自有回执存储导出审计数据包
决策日志与回执
每次工具调用都会向 stderr 输出结构化 JSON:
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"observe_mode","policy_digest":"none","mode":"shadow","timestamp":1710000000}
配置签名后,随后会生成签名回执:
[PROTECT_MCP_RECEIPT] {"v":2,"type":"decision_receipt","algorithm":"ed25519","kid":"...","issuer":"protect-mcp","issued_at":"2026-03-22T00:00:00Z","payload":{"tool":"read_file","decision":"allow","policy_digest":"...","mode":"shadow","request_id":"..."},"signature":"..."}
使用 CLI 验证:npx @veritasacta/verify receipt.json
在浏览器中验证:scopeblind.com/verify
审计包
此软件包导出了一个用于生成自包含审计包的辅助函数:
{
"format": "scopeblind:audit-bundle",
"version": 1,
"tenant": "my-service",
"receipts": ["..."],
"verification": {
"algorithm": "ed25519",
"signing_keys": ["..."]
}
}
使用 createAuditBundle() 处理你自行收集的签名回执。
理念
- 先采用影子模式。 在执行任何管控之前,先了解 Agent 在做什么。
- 回执胜过仅限仪表板的日志。 签名产物应可独立验证。
- 严格限定声明范围。 默认的 CLI 路径目前尚未实现长期架构将支持的所有功能。
- 基于现有身份验证机制构建。 无需为了增加管控和证据而彻底替换现有技术栈。
以事件为锚点的策略包
与 protect-mcp 一起发布 — 每个策略包都能防范真实攻击:
| 策略 | 事件 | OWASP 类别 |
|---|---|---|
clinejection.json | CVE-2025-6514:MCP OAuth 代理劫持(437K 个环境) | A01、A03 |
terraform-destroy.json | 自主 Terraform Agent 摧毁生产环境 | A05、A06 |
github-mcp-hijack.json | 通过精心构造的 GitHub issue 实施提示词注入 | A01、A02、A03 |
data-exfiltration.json | Agent 通过滥用出站工具窃取数据 | A02、A04 |
financial-safe.json | 未经授权的金融交易 | A05、A06 |
npx protect-mcp --policy node_modules/protect-mcp/policies/clinejection.json -- node server.js
完整的 OWASP Agentic Top 10 映射:scopeblind.com/docs/owasp
BYOPE:外部策略引擎
支持 OPA、Cerbos、Cedar(AWS AgentCore)和通用 HTTP 端点:
{
"policy_engine": "hybrid",
"external": {
"endpoint": "http://localhost:8181/v1/data/mcp/allow",
"format": "cedar",
"timeout_ms": 200,
"fallback": "deny"
}
}
标准与知识产权
- IETF Internet-Draft:draft-farley-acta-signed-receipts-00 — 用于机器对机器访问控制的签名决策回执
- 专利状态:4 项澳大利亚临时专利正在申请中(2025-2026),涵盖可配置披露的决策回执、工具调用网关、Agent 清单和可移植身份
- 验证:采用 MIT 许可证 —
npx @veritasacta/verify --self-test
许可证
MIT — 可免费使用、修改、分发和改编,不受限制。
scopeblind.com · npm · GitHub · IETF Draft
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。