mcp警卫
一个简单的HTTP代理,用块规则对MCP服务器进行屏蔽。
没有SDK。没有仪表板。只有一个JSON配置和一个切换命令。
Client (Claude, Cursor, etc.)
↕ http
mcp-guard (localhost proxy)
↕ http
Upstream MCP server (supabase, postgres, etc.)快速开始
1.安装
npm install -g @alramalho/mcp-guard或来源:
git clone https://github.com/alramalho/mcp-guard
cd mcp-guard
pnpm install && pnpm build && npm link --force2.创建 .mcp-guard.json
在您的项目根目录中(或 ~/.mcp-guard.json 全球)。通过从cwd向上走,可以自动发现配置。
{
"port": 6427,
"servers": {
"supabase_production": {
"url": "https://mcp.supabase.com/mcp?project_ref=xxx&read_only=true",
"block": ["DELETE", "UPDATE", "DROP", "TRUNCATE", "ALTER", "INSERT"],
"blockMessage": "Destructive SQL operations are not allowed in production"
}
}
}3.更新您的 mcp.json
将直接上游URL替换为mcp-guard代理:
{
"mcpServers": {
"supabase_production": {
"type": "http",
"url": "http://localhost:6427/supabase_production"
}
}
}4.打开/关闭
$ mcp-guard
MCP Guard on → http://localhost:6427
$ mcp-guard
MCP Guard off调试模式
在前台运行,实时查看所有工具调用和阻止决策:
$ mcp-guard -d配置
.mcp-guard.json (从cwd-up自动发现,或 ~/.mcp-guard.json,或 --config ):
| 字段 | 类型 | 默认值 | 描述 |
|---|---|---|---|
port | number | 6427 | 本地HTTP代理的端口 |
servers | object | -- | 大门名称图→ 服务器配置 |
每台服务器:
| 字段 | 类型 | 描述 |
|---|---|---|
url | string | 上游MCP服务器URL |
enabled | boolean | 设置为 false 畅通无阻地通过 |
token | string | 用于上游身份验证的静态承载令牌(可选) |
block | string[] | 要阻止的模式(不区分大小写的子字符串匹配) |
blockMessage | string | 被阻止时返回错误消息 |
认证
mcp-guard自动处理受OAuth保护的上游服务器(例如Supabase)。在第一次连接时,如果上游需要身份验证,mcp-guard将打开您的浏览器进行OAuth授权。令牌缓存在 ~/.mcp-guard/auth/ 并自动刷新。
或者,您可以在配置中提供一个静态令牌:
{
"servers": {
"my_server": {
"url": "https://example.com/mcp",
"token": "your-access-token"
}
}
}运作原理
mcp-guard启动本地HTTP服务器- 当客户端连接到
http://localhost:PORT/,它连接到上游MCP服务器 - 它发现所有上游工具并重新公开它们
- 每次调用工具时,都会根据块模式检查所有参数值
- 如果任何模式匹配→ 返回错误,调用从未到达上游
- 如果没有匹配→ 呼叫按原样转发到上游
许可证
麻省理工学院
