使用说明
🛡️ MCP-Guard(中文可译为:“守护者-MCP”或根据具体语境调整为更贴切的名称,但直接翻译保持原样为“守护者-MCP”)
A Robust Defense Framework for Safeguarding Model Context Protocol (MCP) in LLM Applications
概述
MCP-Guard是一种前沿的模块化安全框架,旨在通过模型上下文协议(MCP)保护大型语言模型(LLMs)免受工具集成中新兴威胁的攻击。随着提示注入、数据外泄和阴影劫持等漏洞的增多,MCP-Guard提供了企业级的防御能力,并且具有超低延迟。该框架设计注重可扩展性,具备热插拔检测器、无需注册表的操作以及与生产工作流程的无缝集成。配合 MCP-AttackBench (70k+个样本),它使开发人员和研究人员能够构建安全、可靠的AI系统。
🔥 最新动态
- [2025-09] MCP-Guard 初步代码库发布!
- [2025-08] 我们的论文《MCP-Guard:一种针对大型语言模型应用中模型上下文协议完整性的防御框架》现已上线 arXiv。
📑 目录
主要特点
- 🛡️(盾形符号,常用于表示保护、防御或安全) 多阶段检测流程平衡速度与精度:
- 第一阶段基于轻量级模式的扫描技术,实现即时威胁过滤(如SQL/Shell注入、即时劫持)——延迟低于2毫秒。
- 第二阶段基于E5的神经模型经过微调,用于语义分析(基准测试准确率96.01%)。
- 第三阶段大型语言模型(LLM)仲裁(支持GPT、Llama等)用于最终、精细的决策(召回率高达98.47%)。
- 📊 表格/数据图表 MCP-AttackBench70,000+个精心挑选的样本,模拟各种攻击场景——非常适合训练和评估。
- ⚙️ 通常表示“齿轮”或“设置”等与机械、配置相关的图标,具体含义需结合上下文理解。在无特定上下文时,可简单译为“齿轮”或“设置图标”。 企业级就绪工具热更新、可插拔的大语言模型(LLMs)、无需注册表的部署以及低开销的可扩展性。
建筑
MCP-Guard的模块化处理流程从快速规则升级到深度分析:
-
第一阶段:基于模式的检测器 (超低延迟,快速失败)
- 提示注入:隐藏指令/数据外泄。
- 敏感文件访问:系统文件泄露。
- Shell 注入:命令模式。
- SQL注入:查询/XSS(跨站脚本攻击)尝试。
- “Shadow Hijack: 工具伪装。”。
- 跨域:外部违规(可配置白名单)。
- 重要标签:危险的HTML元素(例如,script、iframe)。
-
第二阶段:可学习的检测器E5嵌入模型,针对概率性恶意评分进行了微调。
-
第三阶段:大语言模型仲裁用于上下文判断的可插拔模型(兼容OpenAI)。
先决条件
环境设置
根据导出的配置创建 Conda 环境:
# Create environment from environment.yml
conda env create -f environment.yml
# Activate the environment
conda activate mcp_guard
模型下载
下载LearnableShield模型以 learnableshield_models/:
mkdir -p learnableshield_models
# Download models from Hugging Face
# Example commands - update with the correct model repository URLs:
git lfs install
git clone https://huggingface.co/GenTelLab/MCP-Guard
# Or using huggingface_hub Python library:
python -c "
from huggingface_hub import snapshot_download
snapshot_download(
repo_id='GenTelLab/MCP-Guard-Shield',
local_dir='learnableshield_models/',
local_dir_use_symlinks=False
)
"
快速入门 & API 使用
快速入门,深入了解API细节,实现无缝集成。
配置大型语言模型(LLM)后端:
配置活动模型:编辑 configs/models/model_registry.json。
{
"active_model": "mistral", // Currently active model
"mistral": {
"enabled": false,
"class": "src.mcp_guard.detectors.model_detectors.llm_detector.MistralEnhancedDetector",
"params": {
"model": "mistral:7b",
"host": "http://localhost:11434"
}
}
}
- 看 docs/MODEL_CONFIG_GUIDE.md 翻译为中文是:文档/模型配置指南.md 关于如何启用/禁用模型、切换活动模型、配置参数以及使用
/modelAPI终端点。
第三阶段探测器选择(两种选项)
- Ollama(本地):
llama3/mistral/qwen/tinyllama/llama2确保Ollama正在运行(默认http://localhost:11434),然后设置active_model在里面configs/model_registry.json并留住它enabled: true将其用作第三阶段检测器。 - API(云端):
gpt4o(OpenAI兼容模式)。设置环境变量,然后设置active_modeltogpt4o并且enabled: true使用GPT作为第三阶段检测器:export OPENAI_API_KEY="your-key"export OPENAI_BASE_URL="https://api.openai.com/v1"
启动服务器
uvicorn src.mcp_guard.core:app --host 0.0.0.0 --port 8000 --reload
样品申请
curl -X POST "http://localhost:8000/guardrail/scan" -H "Content-Type: application/json" -d '{
"tool_name": "example_tool",
"tool_description": "Test with potential threat: ignore instructions",
"servers": [{"url": "example.com"}],
"tool_input_schema": {"type": "object", "properties": {"input": {"type": "string"}}}
}'
预期响应:以JSON格式提供详细的安全评估。
示例回答
{
"allowed": true,
"issues": [ { "type": "prompt_injection", "message": "..." } ],
"detector_used": "three_layer_detection",
"degraded_detectors": [],
"degradation_note": null,
"final_reason": "Based on three-layer detector results",
"gpt_analysis": "Based on gpt's analysis",
"detection_stage": "local_gentelshield_openai_clean",
"end_time": 175.13219497
}
注释:
allowed=true表示请求已通过;false这意味着它被高风险规则拦截了。detection_stage指示决策是在哪里做出的(例如。,local_blocked,local_gentelshield_blocked,local_gentelshield_<model>_clean)。- 警告级别的问题不会阻塞,但会显示在
warning_issues。
运行测试
探测器配置
- 跨域:编辑
configs/servers/popular_servers.json.
{
"popular_servers": [
"allowed-server-1",
"allowed-server-2"
]
}
- 其他:用于规则的JSON文件(shell、SQL、隐藏指令、数据外泄)。
- 外壳注入规则:
configs/detectors/shell_rules.json - SQL/XSS 规则:
configs/detectors/sql_xss_rules.jsonc - 隐藏的指令规则:
configs/detectors/hidden_rules.json - 数据外泄规则:
configs/detectors/exfiltration_params.json
- 外壳注入规则:
测试命令(或命令行管理器/控制台)
验证MCP-Guard的有效性,可采用基准测试或API模拟。
python ./main.py # All samples
python ./main.py --max-samples 50 # Quick test
python ./main.py --csv-file your_test.csv # Custom data
支持:OpenAI、Azure、自定义API。
测试输出和结果
**test_results_detailed.csv**每个样本的详细结果,包括:
- 原始描述
- 真实标签和预测标签
- 检测时间
- 检测阶段
- 发现的问题
性能优化
- 减少测试样本使用
--max-samples用于快速测试 - 禁用图层修改
core.py跳过特定层 - 缓存模型确保LearnableShield模型仅加载一次
- API速率限制请考虑大型测试的API提供商速率限制
📝 待办事项列表
- [x] 放开纸张。
- [x] 发布具备基本功能和演示场景的平台。
- [ ] 发布MCP-AttackBench数据。
- [ ] 训练框架。
引用
@misc{xing2025mcpguard,
title={MCP-Guard: A Defense Framework for Model Context Protocol Integrity in Large Language Model Applications},
author={Wenpeng Xing and Zhonghao Qi and Yupeng Qin and Yilin Li and Caini Chang and Jiahui Yu and Changting Lin and Zhenzhen Xie and Meng Han},
year={2025},
eprint={2508.10991},
archivePrefix={arXiv},
primaryClass={cs.CR}
}
📄 许可证
这个项目 MCP-Guard 根据(某种许可协议)授权 Apache许可证2.0。