MCPeeker:MCP检测与注册平台
版本: 1.0.0 状态: 生产就绪 许可证: 麻省理工学院(MIT)
概述
MCPeeker是一个针对模型上下文协议(MCP)服务器的全面检测与管理平台。它为组织内的所有MCP实例提供多层检测、评分、关联分析以及生命周期管理。
主要特点
- 多层检测终端(文件+进程)、网络(Zeek/Suricata)、网关(LLM分析)
- 加权评分具有可配置阈值的智能评分算法
- 注册表管理自助注册,需管理员审批的工作流程
- SOC分析师调查协作反馈与调查跟踪
- 基于人工智能的分类Claude 3.5 Sonnet 用于上下文感知分析
- 可观测性实时仪表板、指标和透明度功能
建筑学
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Scanner │────▶│ NATS │────▶│ Correlator │
│ (Go) │ │ JetStream │ │ (Go) │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
│ ▼
┌──────────────┐ ┌─────────────┐
│ Judge │ │ ClickHouse │
│ (Python) │ │ (Analytics)│
└──────────────┘ └─────────────┘
│
┌──────────────────┐ │
│ Registry API │◀───────┘
│ (FastAPI) │
└──────────────────┘
│
▼
┌──────────────────┐
│ React Frontend │
│ (TypeScript) │
└──────────────────┘快速入门
先决条件
- Docker 和 Docker Compose
- Go 1.21+(或“Go 1.21及以上版本”)
- Python 3.11及以上版本
- Node.js 18及以上版本
- Kubernetes 集群(用于生产环境部署)
本地开发
# 1. Clone repository
git clone https://github.com/ozlabs/mcpeeker.git
cd mcpeeker
# 2. Start infrastructure services
cd infrastructure/docker
docker-compose up -d
# 3. Start backend services
# Terminal 1: Scanner
cd backend/scanner
go run cmd/scanner/main.go
# Terminal 2: Correlator
cd backend/correlator
go run cmd/correlator/main.go
# Terminal 3: Judge
cd backend/judge
pip install -r requirements.txt
export ANTHROPIC_API_KEY=your_key_here
uvicorn src.api.main:app --reload
# Terminal 4: Registry API
cd backend/registry-api
pip install -r requirements.txt
alembic upgrade head
uvicorn src.main:app --reload
# 4. Start frontend
cd frontend
npm install
npm run dev
# Access UI at http://localhost:5173生产部署
# Deploy to Kubernetes using Helm
helm install mcpeeker infrastructure/helm/mcpeeker \
--set global.domain=mcpeeker.example.com \
--set judge.anthropic_api_key=$ANTHROPIC_API_KEY \
--set nats.replicas=3 \
--set clickhouse.shards=2配置
全局配置
见 infrastructure/configs/global.yaml 对于共享设置:
nats:
url: nats://localhost:4222
cluster_name: mcpeeker-cluster
clickhouse:
host: localhost
port: 9000
database: mcpeeker
postgresql:
host: localhost
port: 5432
database: registry
security:
mtls_enabled: true
certificate_path: /etc/mcpeeker/certs特定服务配置
- 扫描仪:
infrastructure/configs/scanner.yaml - 相关器(或相关分析器):
infrastructure/configs/correlator.yaml - 法官:
infrastructure/configs/judge.yaml - 注册表API:
infrastructure/configs/registry-api.yaml
用户角色
开发者
- 查看自己的检测和注册信息
- 具有业务合理性的自我注册MCP(管理控制点/多协议标签交换等,具体含义根据上下文确定)
- 接收过期通知
分析师
- 查看组织内的所有检测结果
- 调查高风险检测结果
- 提交反馈(真阳性、假阳性等)
- 与笔记和时间线协同工作
管理员
- 所有分析师权限
- 批准/拒绝/撤销注册
- 管理用户和通知偏好设置
- 访问完整的分析仪表板
API 文档
认证
所有API请求都需要一个Bearer令牌:
curl -H "Authorization: Bearer $TOKEN" \
https://api.mcpeeker.example.com/api/v1/detections关键终点(或关键评估指标)
检测API
GET /api/v1/detections- 列出检测结果GET /api/v1/detections/{id}- 获取检测详情
注册表API
POST /api/v1/registry/entries- 注册MCP(MCP可能代表某个特定的服务、项目或组织,具体含义需根据上下文确定)GET /api/v1/registry/entries- 列出注册信息POST /api/v1/registry/entries/{id}/approve- 批准(管理员)POST /api/v1/registry/entries/{id}/reject- 拒绝(管理员)
反馈API
POST /api/v1/feedback- 提交分析师反馈GET /api/v1/feedback/detection/{id}/timeline- 调查时间线
分析API
GET /api/v1/analytics/summary- 仪表盘摘要GET /api/v1/analytics/score-distribution- 分数直方图GET /api/v1/analytics/trendlines- 时间序列数据
完整API文档可在以下位置获取: https://api.mcpeeker.example.com/docs
评分算法
MCPeeker采用加权评分系统:
| 证据类型 | 权重 | 描述 |
|---|---|---|
| 终端 | +11 | 文件或进程检测 |
| 判官(大型语言模型) | +5 | 人工智能分类 |
| 网络 | +3 | 交通模式 |
| 注册表 | -6 | 已批准的MCP处罚 |
分类阈值
- 授权的 (≤4):安全、已注册的MCP(多点控制单元)
- 嫌疑人 (5-8):需审核
- 未经授权 (≥9):高风险,需进行调查
监测
Prometheus 指标
暴露的指标 :9090/metrics:
# Scanner
mcpeeker_scanner_events_published_total
mcpeeker_scanner_scan_duration_seconds
# Correlator
mcpeeker_correlator_detections_processed_total
mcpeeker_correlator_clickhouse_write_latency_seconds
# Judge
mcpeeker_judge_inference_latency_seconds
mcpeeker_judge_cache_hit_rateGrafana仪表板
预置仪表板,可供使用 infrastructure/configs/grafana/dashboards/:
- 检测概述分数分布、分类细分、趋势线
- 管道健康状况服务健康状况、NATS吞吐量、ClickHouse性能
- 调查指标反馈统计、响应时间、SLA(服务级别协议)跟踪
安全
隐私(FR-008,FR-009)
- 主机ID在存储前会进行SHA256哈希处理
- 代码片段限制为≤1KB
- 未存储完整文件内容
- 网络有效载荷未在用户界面中显示
mTLS 支持
所有服务间的通信均支持mTLS(双向传输层安全协议):
# Generate certificates
./infrastructure/scripts/generate-certs.sh
# Certificates automatically rotated via cert-manager in Kubernetes审计日志记录
所有注册表操作均记录带有HMAC-SHA256签名的日志:
SELECT * FROM audit_logs
WHERE action = 'APPROVE'
AND resource_type = 'registry_entry'
ORDER BY timestamp DESC;故障排除
常见问题
扫描仪未检测到MCP(多通道处理器/模块/组件等,具体含义需根据上下文确定)
# Check filesystem permissions
ls -la /path/to/mcp/directory
# Verify scanner config
cat infrastructure/configs/scanner.yaml
# Check scanner logs
docker logs mcpeeker-scanner判断服务错误
# Verify API key
echo $ANTHROPIC_API_KEY
# Check Redis connectivity
redis-cli ping
# View Judge logs
kubectl logs -l app=judge -n mcpeekerClickHouse 写入失败
# Check disk space
df -h /var/lib/clickhouse
# Verify connection
clickhouse-client --query "SELECT 1"
# Check correlator logs
kubectl logs -l app=correlator -n mcpeeker演出
扩展目标
- 终点(或:终端点)10,000个并发主机
- 事件率每秒持续处理40个事件(每月1亿个)
- 检测延迟端到端时延≤60秒
- API 响应查询响应时间≤2秒
- 法官推断带缓存时的p95延迟≤400毫秒
优化技巧
- ClickHouse使用物化视图进行频繁聚合操作
- NATS(National Air Traffic Services)提高高流量环境下的流保留率
- 法官启用 Redis 缓存(默认:1 小时生存时间)
- 前端为大型检测列表实现分页功能
发展
运行测试
# Backend tests
cd backend/scanner && go test ./...
cd backend/correlator && go test ./...
cd backend/judge && pytest
cd backend/registry-api && pytest
# Frontend tests
cd frontend && npm test
# Integration tests
cd tests/integration && pytest贡献;做出贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支:
git checkout -b feature/my-feature - 提交更改:
git commit -am 'Add my feature' - 推送至分支:
git push origin feature/my-feature - 提交拉取请求
支持
- 文档https://docs.mcpeeker.io 的中文翻译可以是:“https://mcpeeker.io 的文档页面”。不过,通常我们不会直接翻译网址,而是说明其内容或用途。因此,也可以表述为:“这是 McPeeker 的官方文档网站”。具体翻译可能需要根据上下文或网站的实际内容进行微调
- 问题https://github.com/ozlabs/mcpeeker/issues 翻译为中文是:“https://github.com/ozlabs/mcpeeker/issues(GitHub上的mcpeeker项目问题页面)”。不过,通常在中文语境下,我们可能会简化为“GitHub上的mcpeeker项目问题页面链接”或者直接保留原网址,因为网址本身在中文环境中也是通用的。如果非要给出一个更贴近中文表达的短语,可以是“GitHub mcpeeker项目问题链接”。但考虑到网址的直接性,直接使用原网址也是可接受的
- Slack(通常指“Slack”这款通讯软件)在 ozlabs.slack.com 上的 #mcpeeker 频道
- 电子邮件support@mcpeeker.io(可直接作为邮件地址使用,无需翻译)
许可证
MIT 许可证 - 详情请参见 LICENSE 文件
致谢
构建于:
- 去高性能扫描与相关分析
- Python/FastAPI灵活的API和LLM集成
- React现代、响应式的用户界面
- NATS JetStream(可译为“NATS喷气流”或根据上下文具体含义调整,如“NATS的高速数据流服务”等)可靠的事件流
- ClickHouse大规模快速分析
- 克劳德基于人工智能的分类
______________________________________________________________________
MCPeeker(可译为“MCP查看器”或根据具体上下文意译为更贴切的名称) - 现代组织的安全MCP(管理控制平面)生命周期管理
