HTTP代理服务

mcp-guard是一个简单的HTTP代理服务,用于通过JSON配置和命令开关控制对MCP服务器的访问,并提供操作拦截功能。

  • by alramalho
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 alramalho/mcp-guard

使用说明

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 --force

2.创建 .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 <path>):

字段 类型 默认值 描述
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"
    }
  }
}

运作原理

  1. mcp-guard 启动本地HTTP服务器
  2. 当客户端连接到 http://localhost:PORT/<gate_name>,它连接到上游MCP服务器
  3. 它发现所有上游工具并重新公开它们
  4. 每次调用工具时,都会根据块模式检查所有参数值
  5. 如果任何模式匹配→ 返回错误,调用从未到达上游
  6. 如果没有匹配→ 呼叫按原样转发到上游

许可证

麻省理工学院