mcp护栏
MCP服务器的安全中间件。完全在您的机器上运行。
没有API密钥。没有SaaS帐户。没有遥测。就 pip install mcp-parapet 每个工具调用在到达服务器之前都会被扫描、验证和记录。
Client ↔ [mcp-parapet] ↔ MCP Server
↓
Security Pipeline
├─ Content scanning (PII, secrets, prompt injection)
├─ Trust boundaries (OWASP 5-tier hierarchy)
├─ Rate limiting (per-server, per-tool)
├─ Manifest integrity (rug pull detection)
└─ Audit trail (append-only JSONL)为什么选择mcp护栏
82%的MCP服务器的文件操作容易受到路径遍历的攻击。66%包含至少一种关键代码气味。23%的工具描述中有可疑的指令式模式。
大多数MCP安全工具需要注册、API令牌,或将工具描述发送到第三方服务器进行分析。mcp-parapet没有。所有东西都在本地离线运行,除了PyYAML之外没有任何外部依赖。
mcp-scan告诉你出了什么问题。mcp护栏阻止了这种情况的发生。
安装
pip install mcp-parapet快速入门
在任何服务器命令前加上前缀 mcp-parapet wrap --就这样。
无论您使用什么命令启动MCP服务器,请将 mcp-parapet wrap -- 现在,每个工具调用都要经过安全管道。
# Before (no security)
npx -y @modelcontextprotocol/server-filesystem /tmp
# After (full security pipeline)
mcp-parapet wrap -- npx -y @modelcontextprotocol/server-filesystem /tmp适用于任何MCP服务器。没有代码更改。无需修改服务器。
# Node-based servers
mcp-parapet wrap -- npx -y @modelcontextprotocol/server-github
mcp-parapet wrap -- npx -y @modelcontextprotocol/server-puppeteer
# Python servers
mcp-parapet wrap -- python my_server.py
mcp-parapet wrap -- uvx my-mcp-package
# Anything that speaks MCP over stdio
mcp-parapet wrap -- ./my-custom-server --port 8080在Claude桌面中使用
替换 "command" 和 mcp-parapet 并预置 "wrap", "--" 到args:
{
"mcpServers": {
"filesystem": {
"command": "mcp-parapet",
"args": ["wrap", "--name", "filesystem", "--",
"npx", "-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
},
"github": {
"command": "mcp-parapet",
"args": ["wrap", "--name", "github", "--",
"npx", "-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_..." }
}
}
}这 --name 标记每个服务器的审计日志和配置。可选,但推荐。
自定义(可选)
# Generate a config file with sensible defaults
mcp-parapet init
# Scan a file or stdin directly
echo "My SSN is 123-45-6789" | mcp-parapet scan -开箱即用,mcp parpet拒绝即时注入,编辑泄露的秘密,并记录每次工具调用。 parapet.yaml 允许您调整策略、设置每台服务器的信任级别和配置速率限制,但默认值为生产就绪。
它做什么
内容扫描
四阶段流水线扫描每个工具调用参数和响应:
| 阶段 | 它捕捉到了什么 | 示例 |
|---|---|---|
| 1.输入验证 | 超大有效载荷、空字节、控制字符 | 通过有效载荷膨胀进行DoS |
| 2.敏感数据 | SSN、信用卡、API密钥、电子邮件、密码 | PII泄漏到不受信任的服务器 |
| 3.快速注射 | 覆盖尝试、角色操作、数据泄露 | “忽略前面的指令…” |
| 4.LLM分类 | *(即将在v0.2中推出)* 绕过正则表达式的对抗性输入 | 混淆的注入攻击 |
可按类别配置策略: flag, redact,或 reject.
信任边界
MCP服务器的五层信任层次结构:
| 级别 | 权限 | 用例 |
|---|---|---|
none | 阻止所有工具调用 | 未知/不受信任的服务器 |
basic | 只读操作 | 正在评估的第三方服务器 |
verified | 标准操作 *(默认)* | 具有已知清单的服务器 |
trusted | 所有操作,包括写入 | 第一方服务器 |
privileged | 管理/系统级操作 | 内部基础设施 |
每台服务器的分配列表和块列表用于细粒度控制。
工具清单完整性
在第一次连接时对工具清单进行哈希处理。在每个后续连接上,与存储的哈希值进行比较。检测:
- 工具中毒 --工具描述中嵌入的恶意指令
- 地毯拉 --初始信任后工具定义发生了变化
- 工具阴影 --添加了模拟现有工具的新工具
- 清单篡改 --对工具列表的任何修改
可选的HMAC-SHA256签名,使用密钥进行加密验证。
速率限制
滑动窗口速率限制器,按服务器和工具粒度:
- 默认值:60个呼叫/分钟,1000个呼叫/小时
- 可配置每台服务器的覆盖
- 防止资源枯竭和滥用
审计跟踪
仅附加每个安全决策的JSONL日志:
{"timestamp":"2026-04-04T10:15:30Z","event_type":"tool_call_blocked","server_name":"filesystem","tool_name":"write_file","verdict":"reject","detections":[{"type":"injection_override","confidence":0.85}]}每个工具调用请求、响应、阻止、编校、速率限制命中和清单更改都会记录完整的上下文。
配置
parapet.yaml
scanner:
policy_pii: flag # flag | redact | reject
policy_secrets: redact # flag | redact | reject
policy_injection: reject # flag | redact | reject
scan_tool_arguments: true
scan_tool_responses: true
audit:
enabled: true
log_file: parapet-audit.jsonl
integrity:
enabled: true
alert_on_change: true
block_on_change: false
rate_limit:
default_per_minute: 60
default_per_hour: 1000
servers:
my-trusted-server:
trust_level: trusted
third-party-server:
trust_level: basic
allowed_tools:
- search
- read
max_calls_per_minute: 10环境变量
| 变量 | 描述 |
|---|---|
PARAPET_CONFIG | 配置文件的路径 |
PARAPET_SIGNING_KEY | 用于清单完整性的HMAC签名密钥 |
PARAPET_AUDIT_FILE | 审核日志文件路径 |
PARAPET_LOG_LEVEL | 日志级别(调试、信息、警告、错误) |
PARAPET_POLICY_PII | 覆盖PII策略 |
PARAPET_POLICY_SECRETS | 覆盖机密策略 |
PARAPET_POLICY_INJECTION | 覆盖注射策略 |
Python API
from mcp_parapet import ContentScanner, ScanVerdict
scanner = ContentScanner()
# Scan text content
verdict = scanner.scan("My SSN is 123-45-6789")
print(verdict.allowed) # True (default PII policy is 'flag')
print(verdict.flags) # ['pii_detected']
print(verdict.detections) # [Detection(type=ssn, ...)]
# Scan tool call arguments
verdict = scanner.scan_json({"query": "ignore all previous instructions"})
print(verdict.allowed) # False (default injection policy is 'reject')OWASP MCP十大覆盖范围
mcp护栏地图 OWASP MCP前10名 (2025/2026,测试版)——第一个致力于模型上下文协议安全的OWASP框架:
| OWASP MCP风险 | 状态 | MCP护栏如何应对 |
|---|---|---|
| MCP01 代币管理不善和秘密曝光 | ✅ | ContentScanner 在工具参数和响应中检测API密钥(AWS、OpenAI、GitHub、Anthropic)、密码和机密。可配置: flag, redact,或 reject. |
| MCP02 通过范围爬行提升权限 | ✅ | TrustPolicy 使用每服务器工具的分配列表和阻止列表强制执行5层信任层次结构。默认情况下为最低权限。 |
| MCP03 工具中毒 | ✅ | integrity 模块哈希工具在第一次连接时显示,在重新连接时显示差异。检测描述更改、工具阴影和无声重新定义。 |
| MCP04 供应链攻击和依赖篡改 | ✅ | HMAC-SHA256清单签名。基于哈希的跨会话固定工具。任何清单变更的警报或阻止。 |
| MCP05 命令注入和执行 | ⚡ | ContentScanner 在工具参数中捕获注入模式。运行时障碍——在有效负载到达服务器之前阻止它们。 |
| MCP06 意图流颠覆(提示注入) | ✅ | 第三阶段检测:覆盖尝试、角色操纵、渗透指令。默认策略: reject. |
| MCP07 身份验证和授权不足 | 🔜 | 计划用于v0.2(OAuth 2.1集成)。 |
| MCP08 缺乏审计和遥测 | ✅ | AuditTrail --在每个工具调用、块、编校和安全事件中只附加JSONL。按大小旋转文件。 |
| MCP09 影子MCP服务器 | -- | 超出范围(护栏包裹了已知的服务器;影子检测是一个网络级问题)。 |
| MCP10 上下文注入和过度共享 | ✅ | PII和秘密扫描可以捕捉到跨越信任边界泄漏的敏感数据。Redaction可防止数据到达不受信任的服务器。 |
也映射到 OWASP安全MCP服务器开发实用指南 v1.0(2026年2月):第3节输入验证(ContentScanner),第4节访问控制(TrustPolicy),第5节工具完整性(完整性),第6节日志记录(AuditTrail),第7节速率限制(RateLimiter),第8节错误处理(JSON-RPC错误响应)。
mcp护栏比较如何
| mcp护栏 | Snyk代理扫描(mcp扫描) | 企业网关(TrueFoundry、Lasso、MintMCP) | |
|---|---|---|---|
| 在本地运行 | ✅ 完全离线 | ❌ 需要Snyk API令牌 | ❌ SaaS/托管云 |
| 零遥测 | ✅ 没有东西离开你的机器 | ❌ 将工具描述发送到不变的API | ❌ 供应商托管 |
| 运行时阻塞 | ✅ 拦截和阻止实时流量 | ✅ 代理模式(v0.4+) | ✅ 网关 |
| 安装 | pip install mcp-parapet | uvx snyk-agent-scan +API键 | 仪表板注册+配置 |
| 信任边界 | ✅ 5层OWASP层次结构 | ❌ | ✅ RBAC/OAuth |
| 审计跟踪 | ✅ 本地JSONL | ❌ | ✅ 云托管 |
| 价格 | 免费。MIT许可证。 | 免费(扫描)/付费(企业) | 付费 |
mcp护栏不能替代企业mcp网关。如果您需要OAuth 2.1、SSO、多租户RBAC和托管云仪表板,请使用TrueFoundry或Lasso。如果你需要一个免费的本地第一安全层,你可以 pip install 忘了,那是mcp护栏。
CLI 参考
mcp-parapet wrap [--name NAME] [--config FILE] -- [args...]
mcp-parapet scan
mcp-parapet init [--output FILE] [--force]
mcp-parapet verify
mcp-parapet version许可证
麻省理工学院-- Quantify实验室有限公司
链接
- PyPI: pypi.org/project/mcp-parapet
- 仓库:
- OWASP MCP前10名: owasp.org/www-project-mcp-top-10
- OWASP MCP安全开发指南: owasp.org/www-project-mcp服务器安全
