mbilalnasir751/SentinelMCP
GitHub: mbilalnasir751/SentinelMCP
SentinelMCP 是一款运行在本地的异步安全代理中间件,用于在 AI agent 调用 LLM API 前自动脱敏机密信息并检测终止失控循环,保护数据安全并控制 API 成本。
Stars: 0 | Forks: 0
# SentinelMCP
SentinelMCP 位于您的 AI agent 和 LLM API 之间。它会在出站请求中静默脱敏机密信息,并在失控的循环耗尽您的 token 预算之前将其终止——所有操作均在 localhost 上运行,零云依赖。
## 它解决的问题
像 Claude Code 和 Cursor 这样的 AI 编程 agent 会读取您的项目文件。当它们陷入 bug 循环时,会:
1. 意外地将您的 `.env` 机密信息、AWS 密钥和 JWT token 发送到外部 LLM API
2. 卡在递归重试循环中,并在几分钟内消耗掉价值数百美元的 API 额度
SentinelMCP 会在这些问题发生之前将其拦截。
## 工作原理
```
[ Your AI Agent ]
│
▼
[ SentinelMCP Proxy :8000 ]
├── Scrubber → redacts secrets before network egress
├── Circuit Breaker → kills loops, returns 429
└── Audit Log → SQLite record of every request
│
▼
[ LLM API — clean request only ]
```
## 功能
- **机密信息脱敏** — 通过 Shannon 熵分析捕获 AWS 密钥、JWT、GitHub token、SSH 私钥、Stripe 密钥和高熵字符串
- **循环检测** — SHA-256 状态哈希,配合可配置的滑动窗口断路器
- **审计日志** — 每个请求都记录到启用 WAL 模式的本地 SQLite 中,以支持并发写入
- **实时仪表盘** — Rich 终端 UI,实时显示请求、发现的机密信息和拦截状态
- **零云依赖** — 完全在 localhost 上运行,任何未经过滤的数据都不会离开您的机器
## 快速开始
**前置条件:** Python 3.12+, Poetry
```
git clone https://github.com/YOUR_USERNAME/sentinelmcp
cd sentinelmcp
poetry install
cp .env.example .env
poetry run uvicorn sentinelmcp.main:app --host 127.0.0.1 --port 8000
```
将您的 AI agent 指向 `http://127.0.0.1:8000`,而不是直接连接 LLM API。
## 实时仪表盘
```
poetry run python -m sentinelmcp.dashboard
```
## 运行测试
```
poetry run pytest tests/ -v
```
26 个测试 —— 全部通过。
## 配置
编辑 `.env` 进行配置:
```
TARGET_LLM_URL=https://api.anthropic.com
LOOP_WINDOW_SIZE=5
LOOP_THRESHOLD=3
LOG_DB_PATH=audit.db
```
| 变量 | 默认值 | 描述 |
|---|---|---|
| `TARGET_LLM_URL` | `https://api.anthropic.com` | 上游 LLM endpoint |
| `LOOP_WINDOW_SIZE` | `5` | 用于循环检测的滑动窗口 |
| `LOOP_THRESHOLD` | `3` | 触发断路器前的相同请求数 |
| `LOG_DB_PATH` | `audit.db` | 本地 SQLite 审计日志路径 |
## API 参考
| Endpoint | Method | 描述 |
|---|---|---|
| `/_sentinel/health` | GET | 健康检查 |
| `/_sentinel/logs` | GET | 最后 50 条审计日志记录 |
| `/_sentinel/reset/{session_id}` | DELETE | 重置已触发的断路器 |
| `/{path}` | ANY | 代理到上游 LLM |
## 检测到的机密模式
| 模式 | 示例 |
|---|---|
| AWS Access Key | `AKIA...` |
| JWT Token | `eyJ...` |
| GitHub Token | `ghp_...` |
| Stripe Secret Key | `sk_live_...` |
| SSH Private Key Header | `-----BEGIN RSA PRIVATE KEY-----` |
| Generic API Key | `api_key=...` |
| 高熵字符串 | Shannon 熵 > 4.2 bits |
## 生产路线图
这是一个轻量级的作品集版本。生产环境的强化将包括:
- 使用 PostgreSQL 和连接池替换 SQLite
- JWT 认证和按用户划分的审计跟踪
- 通过规则引擎配置自定义机密模式
- Prometheus metrics endpoint
- Docker 镜像和 Kubernetes helm chart
- SOC 2 合规性审计
## 技术栈
| 层级 | 技术 |
|---|---|
| Framework | FastAPI + asyncio |
| HTTP client | httpx (异步流式传输) |
| Database | SQLite + WAL 模式 (通过 aiosqlite) |
| ORM | SQLAlchemy 2.0 async |
| Dashboard | Rich |
| Package manager | Poetry |
| Tests | pytest — 26 个通过 |
## 作者
由 Muhammad Bilal Nasir 构建。
标签:API代理, DLL 劫持, Python, StruQ, 人工智能, 大语言模型, 安全中间件, 安全规则引擎, 数据脱敏, 无后门, 用户模式Hook绕过, 计算机取证, 运行时操纵, 逆向工具