MCP-Watchdog 目前处于测试版状态,不适合用于生产环境。 此工具:
请自行承担风险,仅在开发/测试环境中使用。不要依赖此工具对生产系统中的关键安全监控。
MCP-Watchdog 是一个轻量级的安全监控工具,它捕获并分析 Claude Desktop 和 MCP 服务器之间的通信,实现实时异常模式检测,无需复杂的策略定义。
虽然存在多种 MCP 流量监控工具,但大多数依赖于预定义策略和基于关键词的敏感信息监控。然而,“敏感信息”的定义在不同行业和组织之间差异很大,使得通用检测规则不足。
传统的数据防泄漏(DLP)方法需要:
MCP-Watchdog 采取了不同的方法:它不依赖预定义规则,而是从合法用户的学习正常使用模式,并根据行为偏差检测异常。这是首次尝试将异常检测应用于 MCP 流量。
# 克隆仓库
git clone https://github.com/yourusername/MCP-Watchdog.git
cd MCP-Watchdog
# 安装依赖
pip install -r requirements.txt
MCP-Watchdog 使用基于主题的异常检测方法。检测器从合法使用中学习正常的主题模式,并将主要包含新/未知主题的请求标记为异常。它使用简单的词袋方法,具有可配置的灵敏度,需要少量训练数据(10-20个会话)来建立基线。
MCP-Watchdog 通过拦截 Claude Desktop 和 MCP 服务器之间的通信来工作。它通过插入一个透明代理 (mcp_proxy.py) 来实现这一点:
setup_proxy.py 脚本会自动修改您的 Claude Desktop 配置,使其通过代理路由流量:
之前(原始配置):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
之后(带有 MCP-Watchdog 代理):
{
"mcpServers": {
"filesystem": {
"command": "python",
"args": [
"C:\\path\\to\\MCP-Watchdog\\mcp_proxy.py",
"filesystem",
"npx",
"-y",
"@modelcontextprotocol/server-filesystem"
]
}
}
}
# 标准设置
python setup_proxy.py
# 带管理员权限设置(如果出现权限错误)
python setup_proxy.py --admin
# 从备份恢复原始配置
python setup_proxy.py --restore
# 移除代理配置(重置到原始)
python setup_proxy.py --reset
%APPDATA%\Claude\claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.backup以管理员权限运行:
python setup_proxy.py --admin
</details>
<details>
<summary><b>❌ “Claude Desktop 看起来正在运行”</b></summary>
Claude.exe 进程claude_desktop_config.jsontype mcp_proxy_minimal.logpython --version要完全移除 MCP-Watchdog 并恢复原始配置:
# 选项 1:重置配置
python setup_proxy.py --reset
# 选项 2:从备份恢复
python setup_proxy.py --restore
</details>
如果自动设置失败,您可以手动编辑配置:
%APPDATA%\Claude\claude_desktop_config.json"command": "npx" 更改为 "command": "python"["C:\\path\\to\\mcp_proxy.py", "server_name", "npx"]python setup_proxy.py
这将:
⚠️ 重要:配置期间必须关闭 Claude Desktop
重要:在构建基线之前,您需要收集正常使用的数据。
重启 Claude Desktop 后配置代理
正常使用 Claude 几个会话:
验证数据收集:
# 检查是否捕获了数据
dir mcp_captured_data\
# 查看代理日志
type mcp_proxy_minimal.log | more
您应该看到类似会话目录:
session_20250723_143022_filesystem/
session_20250723_145512_brave-search/
session_20250723_150234_memory/
实时捕获监控(可选):
# 实时查看捕获的数据
python realtime_monitor.py --capture-only
一旦收集了足够的数据(建议至少 10-20 个会话):
python baseline_builder.py
这将分析所有捕获的会话并创建正常行为的基线。
python realtime_monitor.py
现在系统将实时监控并针对异常活动发出警报。
为了获得最佳基线质量:
⚠️ 注意:基线质量直接影响检测准确性。更多多样性和代表性的数据会导致更好的异常检测。
[14:23:45] ✅ → API-post-search: 客户支持指南...
============================================================
🔴 检测到异常 - 高严重性
============================================================
时间: 2025-07-23 14:23:46
工具: API-post-search
查询: 数据库密码重置
置信度: 100.0%
新主题: 数据库, 密码, 重置
预期: 客户, 支持, 服务
============================================================
MCP-Watchdog/
├── 🔌 mcp_proxy.py # 通信拦截器
├── 🧠 mcp_anomaly_detector.py # 基于机器学习的检测引擎
├── 📊 mcp_baseline_builder.py # 模式学习工具
├── 👁️ realtime_monitor.py # 实时监控界面
├── ⚙️ setup_proxy.py # 自动配置脚本
├── 📂 mcp_captured_data/ # 会话日志
│ └── session_*/ # 单个会话
│ ├── requests.jsonl # 捕获的请求
│ └── responses.jsonl # 捕获的响应
├── 📄 mcp_proxy_minimal.log # 代理操作日志
├── 🔐 mcp_baseline.pkl # 训练好的基线模型
└── 📋 anomaly_log_*.json # 检测到的异常
# 更严格的检测
detector = SimpleTopicAnomalyDetector(sensitivity=0.9)
# 更宽松
detector = SimpleTopicAnomalyDetector(sensitivity=0.5)
python setup_proxy.pytype mcp_proxy_minimal.logmcp_captured_data 目录是否存在python mcp_baseline_builder.pytaskkill /F /IM python.exemcp_captured_data 目录MCP-Watchdog 目前使用一种简单的基于主题的异常检测方法,识别 MCP 请求中的不寻常词汇。虽然对于基本监控有效,但这种方法存在局限性。
欢迎贡献!请注意,这是一个测试版项目:
请打开一个议题讨论重大更改。
MIT 许可
发现错误?有问题?请 打开一个议题。