安全MCP网关

一个安全优先的模型上下文协议(MCP)网关,用于AI驱动的自主操作、SRE和支持代理,提供策略访问控制、人工审批和全面审计日志。

  • by nik-kale
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 nik-kale/Secure-MCP-Gateway

使用说明

安全MCP网关

一个安全第一的模型上下文协议(MCP)网关,用于人工智能驱动的自主操作、SRE和支持代理。

什么是MCP?

这 模型上下文协议(MCP) 是一个开放标准,使人工智能应用程序能够安全地与外部数据源和工具连接。它为AI代理与数据库、API和开发工具等服务交互提供了一种统一的方式。

为什么选择安全网关?

虽然MCP支持强大的集成,但让AI代理直接访问生产基础设施会带来重大风险:

  • 不受控制的写入:代理可能会意外删除资源、关闭关键事件或损坏数据
  • 权限提升:如果没有适当的控制,代理人可能会采取超出其预期范围的行动
  • 审计差距:直接访问使得很难跟踪代理做了什么以及为什么这样做
  • 合规风险:监管要求通常要求对某些操作进行人工监督

安全MCP网关 通过提供以下内容来解决这些问题:

  • 基于策略的访问控制:定义允许、拒绝或需要批准的操作规则
  • 人在环审批:高风险操作在执行前暂停进行人工审查
  • 全面的审计日志记录:记录每个工具调用和策略决策,以进行合规性和调试
  • 与现有MCP生态系统安全集成:适用于以下目录 PulseMCP 和 很棒的mcp服务器,添加安全性而不替换它们

这是一个 参考架构 适用于在生产环境中部署自主操作代理的企业。

架构概述

┌─────────────────────────────────────────────────────────────────┐
│  AI Agents / Claude Desktop / Custom Clients                    │
└────────────────────────┬────────────────────────────────────────┘
                         │
                         ▼
         ┌───────────────────────────────┐
         │   Secure-MCP-Gateway          │
         │  ┌─────────────────────────┐  │
         │  │  Policy Engine          │  │  ← Evaluate: allow/deny/review
         │  │  - Config-driven rules  │  │
         │  │  - Severity matching    │  │
         │  └─────────────────────────┘  │
         │                                │
         │  ┌─────────────────────────┐  │
         │  │  Approval Manager       │  │  ← Human-in-the-loop
         │  │  - Pending approvals    │  │
         │  │  - Token management     │  │
         │  └─────────────────────────┘  │
         │                                │
         │  ┌─────────────────────────┐  │
         │  │  Audit Logger           │  │  ← Log everything
         │  │  - JSON structured logs │  │
         │  │  - File + console       │  │
         │  └─────────────────────────┘  │
         └────────────┬──────────────────┘
                      │
         ┌────────────┼────────────┐
         ▼            ▼            ▼
    ┌────────┐  ┌─────────┐  ┌──────────┐
    │ Jira   │  │ K8s     │  │ Splunk   │  ... (MCP Servers)
    │ MCP    │  │ MCP     │  │ MCP      │
    └────────┘  └─────────┘  └──────────┘
         │            │            │
         ▼            ▼            ▼
    ┌────────────────────────────────────┐
    │  Production Infrastructure         │
    │  - Jira / PagerDuty                │
    │  - Kubernetes / Cloud APIs         │
    │  - Observability (Splunk, Datadog) │
    └────────────────────────────────────┘

数据流:

  1. 代理呼叫工具 → 网关接收请求
  2. 政策评估 → 根据配置的规则进行匹配(允许/拒绝/审核)
  3. 审核日志 → 记录决定
  4. 如果允许 → 立即执行并记录结果
  5. 如果否认 → 拒绝并返回错误
  6. 如果审查 → 创建批准令牌,暂停执行,等待人工决策
  7. 人类认可 → 执行工具调用并记录结果
  8. 人类否认 → 拒绝并记录拒绝

快速入门

先决条件

  • Node.js 18+
  • pnpm 8+

安装

# Clone the repository
git clone https://github.com/nik-kale/Secure-MCP-Gateway.git
cd Secure-MCP-Gateway

# Install dependencies
pnpm install

# Build all packages
pnpm build

运行本地操作演示服务器

这 mcp-local-ops 服务器模拟事件管理操作,非常适合在没有外部依赖的情况下测试网关。

# Run the local ops server
node packages/mcp-local-ops/dist/server.js

此服务器提供以下工具:

  • list_services (SAFE)-列出所有服务及其状态
  • get_service (SAFE)-获取特定服务的详细信息
  • simulate_incident (中等)-模拟事件(需要批准)
  • scale_service (中等)-扩展服务(需要批准)
  • restart_service (高)-重新启动服务(需要批准)

与Claude Desktop一起使用

将此添加到您的Claude Desktop MCP设置中(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "local-ops": {
      "command": "node",
      "args": ["/path/to/Secure-MCP-Gateway/packages/mcp-local-ops/dist/server.js"]
    }
  }
}

示例:政策在行动

当你尝试 安全读取操作:

Tool: list_services
Policy Decision: ALLOW (safe read-only operation)
Execution: Immediate
Audit: Logged to console/file

当你尝试 中等风险作业:

Tool: scale_service (replicas=10)
Policy Decision: REVIEW (medium-risk operation requires approval)
Execution: Paused
Response: { approvalToken: "abc-123-def", message: "Awaiting approval..." }

然后,人工操作员可以批准或拒绝:

gateway.grantApprovalAndExecute(approvalToken, approver, executor);
// OR
gateway.denyApproval(approvalToken, denier);

包裹

1. @secure-mcp-gateway/core

具有策略评估、审计日志和审批流的核心安全引擎。

主要出口:

  • SecureMCPGateway -主编排器
  • PolicyEngine -基于规则的政策评估
  • AuditLogger -结构化日志记录
  • ApprovalManager -人在循环中流动

2. @secure-mcp-gateway/mcp-local-ops

用于事故模拟的MCP服务器演示。自给自足,可安全测试。

3. @secure-mcp-gateway/mcp-jira-ops

Jira集成了读取操作(搜索、获取问题)和需要批准的写入操作(添加注释、转换问题)。

配置:

export JIRA_URL=https://yourcompany.atlassian.net
export JIRA_EMAIL=your-email@company.com
export JIRA_TOKEN=your-api-token

4. @secure-mcp-gateway/mcp-pulsemcp-discovery

查询外部MCP目录(PulseMCP,很棒的MCP服务器)以查找与运维相关的MCP服务器的发现工具。

例子:

// Discover all ops-related servers
const servers = await discoveryClient.discoverOpsServers();

// Filter by tags
const k8sServers = await discoveryClient.discoverAll(['kubernetes', 'cloud']);

此包演示了 安全MCP网关与现有MCP目录集成并使用现有MCP目录 而不是与他们竞争。

与MCP目录集成

安全MCP网关设计用于工作 旁边 现有MCP生态系统:

我们提供 mcp-pulsemcp-discovery 作为从这些目录中发现和过滤服务器的参考。然后,网关在这些服务器上添加安全策略和审批工作流。

我们不会替换这些目录。我们使它们在生产中更安全地用于自主代理。

这如何融入自主操作堆栈

安全MCP网关是人工智能驱动的SRE和支持系统的基础组件:

┌─────────────────────────────────────────────────────────────┐
│  AutoRCA-Core (ADAPT-RCA)                                   │
│  Graph-based root cause analysis engine                     │
└────────────────┬────────────────────────────────────────────┘
                 │
                 ▼
┌─────────────────────────────────────────────────────────────┐
│  Ops-Agent-Desktop                                          │
│  Visual mission control for autonomous ops agents           │
└────────────────┬────────────────────────────────────────────┘
                 │
                 ▼
┌─────────────────────────────────────────────────────────────┐
│  Secure-MCP-Gateway  ◄── YOU ARE HERE                       │
│  Security-first access to production tools                  │
└────────────────┬────────────────────────────────────────────┘
                 │
      ┌──────────┼──────────┐
      ▼          ▼          ▼
   Jira      Kubernetes   Splunk   ... (via MCP servers)
  • AutoRCA核心 执行根本原因分析并建议补救措施
  • Ops代理桌面 协调任务并显示实时进度
  • 安全MCP网关 确保代理只能在真实的基础设施上执行批准的操作
  • MCP服务器 (Jira、K8s、Splunk等)提供实际的集成

这些元素共同构成了一个参考堆栈 自主可靠性工程.

安全和安保注意事项

  1. 最小特权:默认策略要求对安全读取之外的任何内容进行审查
  2. 纵深防御:多层:策略引擎、审批流、审计跟踪
  3. 故障保护:如果政策评估失败,默认情况是拒绝或要求审查
  4. 审计一切:记录所有决策、批准和执行
  5. 限时审批:批准令牌在可配置的TTL后过期
  6. 没有硬编码的秘密:凭据来自环境变量

看 安全模块.md 了解全部细节。

策略配置示例

{
  "rules": [
    {
      "id": "deny-critical-delete",
      "match": { "action": "delete_*", "minSeverity": "critical" },
      "effect": "deny"
    },
    {
      "id": "review-high-risk",
      "match": { "minSeverity": "high" },
      "effect": "review"
    },
    {
      "id": "allow-safe-reads",
      "match": { "minSeverity": "safe" },
      "effect": "allow"
    }
  ],
  "defaultEffect": "review"
}

看 examples/policy-config.json 举一个完整的例子。

路线图

  • []用于审批UI的HTTP API(与Slack、Teams、Ops-Agent-Desktop集成)
  • []支持外部政策引擎(OPA、Cedar)
  • []为Kubernetes、Prometheus、Datadog预构建的MCP服务器
  • []与AutoRCA Core集成,实现自动RCA+修复
  • []具有团队/用户权限的细粒度RBAC
  • []审批请求的Webhook通知

贡献

欢迎投稿!该项目旨在成为安全自主操作的参考架构。

请打开问题以查找错误、功能请求或问题。

许可证

麻省理工学院

相关项目


建造于 尼克·卡莱 作为自主运营和人工智能驱动的可靠性生态系统的一部分。