内容
# Dvarapala
> *द्वारपाल — gatekeeper.* 替换为Model Context Protocol(MCP)的安全网关。
[](https://github.com/TharVid/dvarapala/actions/workflows/ci.yml)
[](https://github.com/TharVid/dvarapala/releases/latest)
[](LICENSE)
[](https://github.com/TharVid/dvarapala/pkgs/container/dvarapala)
Dvarapala 位于LLM客户端(如Claude Code、Claude Desktop、Cursor、Cline、自定义代理)和**第三方MCP服务器**之间。它解析双向的每个JSON-RPC消息,强制执行YAML策略,**拒绝/编辑/记录**任何违反规则的内容 — 对底层MCP服务器**无任何更改**。
它**不**重新发明检测。它组合了经过验证的开源软件 — gitleaks、Microsoft Presidio、ProtectAI llm-guard、garak — 到MCP-aware强制执行层。
## 它能阻止什么
- **工具中毒** — 工具描述中隐藏的恶意指令
- **工具变异/ rug-pull** — 工具定义在会话之间静默更改(跨重启指纹)
- **间接提示注入** 通过工具输出
- **密钥泄露** — AWS密钥、GitHub令牌、私钥、JWT等(gitleaks,150+规则)
- **PII/PHI/PCI通过工具输出外流** (Presidio sidecar)
- **破坏性操作** — `rm -rf`、`DROP TABLE`、`dd if=…of=/dev/sda`等
- **过度代理** — 工具链接到外流路径
## 安装
### macOS / Linux
```bash
brew tap tharvid/dvarapala
brew install dvarapala
```
### Windows
```bash
scoop bucket add dvarapala https://github.com/TharVid/scoop-dvarapala
scoop install dvarapala
```
### Docker
```bash
docker pull ghcr.io/tharvid/dvarapala:latest
```
### Go
```bash
go install github.com/tharvid/dvarapala/cmd/dvarapala@latest
```
### Linux 软件包 (.deb / .rpm / .apk)
从[最新版本](https://github.com/TharVid/dvarapala/releases/latest)下载对应的文件,并使用`dpkg -i` / `rpm -i` / `apk add --allow-untrusted`安装。实际的`apt install dvarapala`将在v0.1.2中实现。
## 5分钟快速上手
```bash
# 1. 创建默认策略
dvarapala init
# 2. 健康检查
dvarapala doctor
# 3. 在Claude Code配置中一次性包装所有现有的MCP服务器
dvarapala install --client claude-code --wrap-all
# 4. 重启Claude Code,然后在另一个终端窗口中查看流量
dvarapala logs -f
```
`--wrap-all`读取`~/.claude.json`,找到所有MCP服务器,并:
- 对于**stdio MCP**(npx-based等):重写条目以通过`dvarapala wrap`路由,并使用您的策略。
- 对于**HTTP/SSE MCP**:在后台启动一个分离的`dvarapala proxy`守护进程(对您不可见),并将客户端URL指向本地代理。使用`dvarapala daemon list | stop NAME | stop-all`进行管理。
已经包装/代理的条目保持不变 — 该命令是幂等的。您可以在添加新服务器时再次运行它。
相同的标志适用于其他客户端:
```bash
dvarapala install --client claude-desktop --wrap-all
dvarapala install --client cursor --wrap-all
dvarapala install --client cline --wrap-all
```
您将看到Claude Code发送给文件系统MCP服务器的每个JSON-RPC消息都流经网关,并根据策略具有`action=allow` / `deny` / `redact`。尝试让Claude读取包含假AWS密钥的文件 — 网关在LLM看到它们之前会编辑它们。
有关更深入的演练,请参见 **[docs/getting-started.md](docs/getting-started.md)** 和 **[docs/deployment/](docs/deployment/)** 中的每个客户端指南。
## 三种部署方式
| 模式 | 用例 | 命令 |
|---|---|---|
| **包装** | 一个stdio MCP进程每个进程 — 适用于Claude Code/Desktop/Cursor/Cline配置 | `dvarapala wrap -- npx ... server-filesystem` |
| **代理** | 一个托管的HTTP MCP(Atlassian、Sentry、内部微服务) | `dvarapala proxy --upstream URL` |
| **中心** | 一个Dvarapala前面有多个MCP(企业形态) | `dvarapala hub --config hub.yaml` |
这三种方式共享相同的引擎、检测器、审计日志和策略YAML。参见 **[docs/architecture.md](docs/architecture.md)**。
## 范围
**Dvarapala保护第三方MCP服务器** — 社区npm软件包、自定义企业MCP、托管MCP服务。这些是野蛮的攻击表面。
**Dvarapala不替换LLM客户端自己的权限系统** — Claude Code的内置`Read`/`Write`/`Bash`/`Edit`不属于MCP,由[Anthropic的权限模型](https://docs.claude.com/en/docs/claude-code/iam)管理。同时使用:客户端权限适用于内置工具,Dvarapala适用于第三方MCP。两层,两者都需要。
```
┌─────────────────────────────────────────────────┐
│ LLM客户端(Claude Code,Cursor,…) │
│ ┌──────────────────┐ ┌────────────────────────┐│
│ │ 内置工具 │ │ 第三方MCP ││
│ │ 读取,写入,… │ │ github,postgres,… ││
│ └────────┬─────────┘ └─────────┬──────────────┘│
│ │ │ │
│ Anthropic权限 ┌──────▼──────┐ │
│ │ Dvarapala │ ← 我们 │
│ └──────┬──────┘ │
└────────────────────────────────┬┴─────────────────┘
▼
真实MCP服务器
```
## 检测器
对明确定义的类别的检测委托给最佳的开源软件 — Dvarapala将它们组合在一起,而不是维护自己的正则表达式集。MCP特定的检测器是新颖的贡献。
| 检测器 | 来源 | 状态 | 检测 |
|---|---|---|---|
| **gitleaks** | 嵌入式Go库 | 始终开启 | 密钥(AWS、GitHub、GCP、私钥、JWT等) |
| **工具中毒** | Dvarapala本地 | 始终开启 | 工具描述中的提示注入模式 |
| **工具变异** | Dvarapala本地(持久化SHA-256存储) | 始终开启 | rug-pull — 跨会话更改工具定义 |
| **破坏性操作** | Dvarapala本地 | 始终开启 | `rm -rf`、`DROP TABLE`、`dd if=…of=/dev/sd*` |
| **Presidio** | Microsoft,sidecar | 按需通过`DVARAPALA_PRESIDIO_URL` | PII/PHI/PCI(50+识别器,HIPAA,GDPR) |
| **llm-guard** | ProtectAI,sidecar | 按需通过`DVARAPALA_LLMGUARD_URL` | 间接提示注入(ML模型+启发式) |
参见 **[docs/built-in-rules.md](docs/built-in-rules.md)** 获取规则包和 **[docs/policy-language.md](docs/policy-language.md)** 获取策略模式。
## 命令
| 命令 | 目的 |
|---|---|
| `dvarapala wrap -- CMD` | 用安全策略包装MCP_stdio服务器 |
| `dvarapala proxy --upstream URL` | 在托管的MCP前面运行HTTP/SSE代理 |
| `dvarapala hub --config FILE` | 运行多MCP聚合器 |
| `dvarapala init` | 创建`~/.dvarapala/policy.yaml` |
| `dvarapala lint POLICY` | 验证策略文件 |
| `dvarapala test --case FILE` | 运行攻击语料库案例对抗策略 |
| `dvarapala scan --command CMD` | 对任何MCP服务器进行一次性安全审计 |
| `dvarapala install --client CLIENT --server NAME --command CMD` | 自动编辑MCP客户端配置 |
| `dvarapala doctor` | 诊断安装、策略、sidecar、配置 |
| `dvarapala daemon list \| stop NAME \| stop-all \| remove NAME \| clean` | 管理通过`--wrap-all`启动的后台HTTP代理守护进程 |
| `dvarapala logs [-f]` | 漂亮打印或跟踪审计日志 |
| `dvarapala ui` | 提供审计日志的本地Web视图(实时,只读) |
| `dvarapala version` | 打印版本信息 |
完整的标志引用: **[docs/cli-reference.md](docs/cli-reference.md)**。
## 借鉴
| 问题 | 库 |
|---|---|
| 密钥 | [gitleaks](https://github.com/gitleaks/gitleaks) |
| PII/PHI/PCI | [Microsoft Presidio](https://github.com/microsoft/presidio) |
| 提示注入 | [ProtectAI llm-guard](https://github.com/protectai/llm-guard) + [Meta Prompt-Guard](https://huggingface.co/meta-llama/Prompt-Guard-86M) |
| MCP协议 | [mark3labs/mcp-go](https://github.com/mark3labs/mcp-go) |
| 红队语料库 | [garak](https://github.com/NVIDIA/garak),[PyRIT](https://github.com/Azure/PyRIT) |
| 发布管道 | [GoReleaser](https://goreleaser.com) |
## 状态
- ✅ **v0.1.1** — 第一阶段到第六阶段功能的生产级检测
- ✅ **5/5攻击语料库案例通过** 端到端(rm -rf,间接提示注入,密钥外流,工具中毒,工具rug-pull)
- ✅ **CI绿色** 在linux/macOS/windows上
- ✅ **三种安装路径已启动**:brew,scoop,docker
- 🚧 v0.1.2:APT仓库(实际`apt install dvarapala`)
- 🚧 第7阶段:速率限制,人类审批流程,OpenTelemetry,Web UI
参见 [TODO.md](TODO.md) 获取完整路线图。
## 文档
| 文档 | 内容 |
|---|---|
| **[入门](docs/getting-started.md)** | 首次运行演练 |
| **[架构](docs/architecture.md)** | 引擎、检测器、传输如何协同工作 |
| **[CLI参考](docs/cli-reference.md)** | 每个命令,每个标志 |
| **[策略语言](docs/policy-language.md)** | YAML模式,匹配条件,操作 |
| **[内置规则包](docs/built-in-rules.md)** | 每个规则包的作用和原因 |
| **[部署:Claude Code](docs/deployment/claude-code.md)** | 主要用例 |
| **[部署:Claude Desktop](docs/deployment/claude-desktop.md)** | macOS / Windows应用 |
| **[部署:Cursor](docs/deployment/cursor.md)** | Cursor IDE |
| **[部署:Cline](docs/deployment/cline.md)** | VSCode扩展 |
| **[部署:Docker](docs/deployment/docker.md)** | 容器+ sidecar(Presidio,llm-guard) |
| **[部署:Kubernetes](docs/deployment/kubernetes.md)** | Sidecar + hub清单 |
## 贡献
欢迎提交错误报告、攻击语料库贡献和规则包PR。参见 **[CONTRIBUTING.md](CONTRIBUTING.md)** 和 **[SECURITY.md](SECURITY.md)** 获取安全漏洞披露流程。
## 许可证
[MIT](LICENSE).
由 [TharVid](https://tharvid.in) 构建。
连接信息
猜你喜欢
暂无推荐服务器