lord-dubious/mcp-security-gateway

GitHub: lord-dubious/mcp-security-gateway

一个本地优先的 MCP 安全网关,在 AI 代理执行工具调用前进行策略匹配、风险评分与审批控制,并留存完整审计追踪。

Stars: 0 | Forks: 0

# MCP Security Gateway 本地优先的 MCP 安全网关,用于策略检查工具调用、风险评分、审批和审计追踪。 ![MCP Security Gateway 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/7e655aa65c001009.png) 该项目建模了 AI 代理在执行工具之前必须跨越的边界。它接受 MCP 风格的工具请求,将其与本地策略进行匹配,生成允许/审批/拦截决策,并在 SQLite 中存储审计追踪。该演示有意设计为离线运行:它不会连接到真实的密钥、Shell 工具或生产系统。 ## 当前可用功能 - 针对只读、Shell、部署和密钥访问场景的确定性 MCP 风格工具请求。 - 实时 `POST /api/requests/evaluate` 端点,接受新的本地工具请求并持久化生成的决策。 - 根据工具名称、环境元数据以及敏感/破坏性措辞,生成允许、拦截或需要人工审批的策略决策。 - 为每个请求提供风险等级、匹配的策略名称、原因和审计事件。 - 本地 FastAPI API、SQLite 存储以及经过精心设计的浏览器仪表板。 ## 仪表板 仪表板显示请求量、审批/拦截率、高风险决策以及所选请求的审计追踪。侧边栏包含带有示例生产 Shell 请求的本地评估表单,以便评审人员可以看到网关做出新的决策,而不仅仅是浏览固定数据。 ## 架构 ``` flowchart TB subgraph AgentBoundary[Agent tool boundary] Agent[AI agent] --> Request[Tool request JSON] Request --> API[FastAPI gateway] API --> Evaluator[Local policy evaluator] end subgraph PolicyLayer[Policy and risk logic] Policies[ToolPolicy fixtures] --> Evaluator Evaluator --> Match{Pattern and metadata checks} Match -->|read-only low risk| Allow[Allow] Match -->|shell / production / mutation| Approval[Require approval] Match -->|secrets / credentials| Block[Block] end subgraph Persistence[Reviewable audit trail] Allow --> Decision[GatewayDecision] Approval --> Decision Block --> Decision Decision --> Audit[AuditEvent] Request --> Store[(SQLite)] Decision --> Store Audit --> Store end Store --> Dashboard[Browser dashboard] Store --> APIRead[Read APIs] ``` ## API 接口 - `GET /api/health` - 就绪检查。 - `GET /api/summary` - 允许、需要审批、拦截和高风险请求的计数。 - `GET /api/policies` - 本地策略固定数据。 - `GET /api/requests` - 按请求时间排序的已评估请求。 - `GET /api/requests/{request_id}` - 请求、决策和审计事件。 - `POST /api/requests/evaluate` - 评估并持久化新的本地工具请求。 - `POST /api/demo/reset` - 重置确定性的演示数据。 本地请求示例: ``` { "agent_name": "Release Agent", "tool_name": "shell.run", "input_summary": "Deploy the latest policy bundle to production", "metadata": { "environment": "production", "change_ticket": "SEC-1842" } } ``` 网关返回带有高风险的 `require_approval` 决策,因为 Shell 执行加上生产元数据不应被自动允许。 ## 策略逻辑 评估器是确定性的且经过刻意设计以便于审查: - `repo.search` 被允许作为低风险的只读开发者工具。 - `shell.run` 默认需要审批,当输入提及部署、生产、删除、写入或类似的突变语言时,会升级为高风险。 - `secret.read` 及类似密钥的请求会在执行前被拦截。 - 未知工具需要审批,而不是被静默允许。 - 每个决策都包含匹配的策略、原因、人工复核标志和审计事件。 ## 快速开始 ``` uv run --extra dev pytest uv run mcp-security-gateway ``` 打开 `http://127.0.0.1:8050` 并在评估面板中尝试示例请求。 ## 开发 ``` uv run --extra dev ruff check src tests uv run --extra dev ruff format --check src tests uv run python -m compileall -q src tests uv run --extra dev pytest tests/ --cov=mcp_security_gateway --cov-report=term-missing ``` ## 当前限制 这是一个本地演示版网关,而不是实时的 MCP 代理。它对策略和审计边界进行了建模,而不会连接到真实的密钥、运行 Shell 命令,或在已部署的 MCP 服务器前强制执行策略。实时代理、身份验证、签名审批和组织策略同步将是自然的下一步。
标签:AI代理安全, AI安全, API网关, AV绕过, Chat Copilot, FastAPI, JSONLines, LLM工具调用, MCP安全网关, Python, SQLite, Streamlit, 安全边界, 审批流, 审计日志, 工具沙箱, 无后门, 本地优先, 模型上下文协议, 策略检查, 网络安全, 网络安全监控, 访问控制, 逆向工具, 隐私保护, 零信任, 风险评分, 驱动开发