Token导航 LogoToken导航TokenDH.com
MCP Zero logo
安全风控stdio官方级别未说明来源级核验

MCP Zero

MCP Server

开源MCP网关,用于在企业AI工具和MCP服务器之间实施安全控制,包括身份验证、策略执行、数据保护和审计功能。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
安全控制Python审计日志

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

abwaters

提供方

abwaters

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv .venv

详细介绍

mcp零点

位于企业人工智能工具和MCP服务器之间的开源网关,用于执行合规团队在批准之前所需的安全控制 主控程序 采用。

没有它,人工智能工具可以调用任何没有访问控制、审计跟踪和数据保护的MCP服务器,这在受监管的环境中是不可能的。mcp-zero添加了缺失的治理层:它验证用户身份,检查策略规则,屏蔽敏感数据,并在请求到达下游服务器之前记录每个操作——所有这些都是内联的。

将其部署为单个Python服务。使用YAML策略文件对其进行配置。无需安装代理,无SaaS依赖,无供应商锁定。

Enterprise AI Tool ──► MCP Gateway ──► MCP Servers
                         │
              ┌──────────┴──────────┐
              │   Hook Pipeline     │
              │                     │
              │   Identity  (core)  │
              │   Governance (core) │
              │   ◇ Plugins  (ext)  │
              │   Audit     (core)  │
              └─────────────────────┘

特性

  • 身份 --Okta OAuth2 JWT验证,带有可配置的声明映射(user_id, email, groups)
  • 治理 --具有默认拒绝规则的YAML策略文件,适用于服务器、工具、用户和组
  • 数据保护 --通过Microsoft Presidio对输入和输出进行内联PII和秘密屏蔽
  • 审计 --具有用户归因、关联ID和策略决策的结构化日志
  • 运输 --同一策略管道下的流式HTTP(主)、传统入站SSE(可选)和上游HTTP/SSE/stdio服务器连接
  • 管道 --基于钩子的请求生命周期,具有有序执行和短路支持
  • 插件 --基于入口点的插件架构,用于使用自定义钩子(掩码、速率限制、度量等)扩展管道

快速开始

先决条件

  • Python 3.12+
  • Okta租户(用于身份验证)

安全通知

重要:网关设计有故障关闭默认值,但需要适当的配置来实施安全性:

  • 强烈建议使用策略文件:设置 MCP_POLICY_FILE 以启用治理和插件配置。
  • 默认情况下关闭启动失败:如果既没有配置身份也没有配置策略文件,网关将以代码78退出。
  • 发展只能绕过:

- MCP_RELAX_STARTUP_CHECKS=true 允许在没有安全控制的情况下启动。 - MCP_SKIP_TLS_VALIDATION=true 允许非HTTPS身份/服务器/OBO URL。

  • 严格的生产硬化: MCP_STRICT_SECURITY=true 需要身份和治理都是积极的。
  • 掩盖依赖关系:Presidio口罩要求 presidio-analyzerpresidio-anonymizer (包含在默认安装中)。

已知限制 (参见 安全审查 更广泛的分析):

  • 遗留/开发模式仍可通过以下方式有意启用 MCP_RELAX_STARTUP_CHECKS=trueMCP_SKIP_TLS_VALIDATION=true这些不得用于生产。
  • OBO令牌交换需要显式的环境变量(OKTA_TOKEN_ENDPOINT, OKTA_CLIENT_ID, OKTA_CLIENT_SECRET)以及每台服务器的策略配置。
  • 入站SSE支持仍然可用,但已弃用;禁用 MCP_SSE_ENABLED=false 如果不需要。

切勿在宽松的启动检查或禁用TLS验证的情况下运行生产部署。

安装

# Clone and install
git clone https://github.com/abwaters/mcp-zero.git
cd mcp-zero
python -m venv .venv

# Linux/macOS
source .venv/bin/activate

# Windows
.venv\Scripts\activate

pip install -e ".[dev]"

在Windows上,提供了便利脚本:

scripts\install.bat    # Creates venv and installs everything

配置

创建策略文件(例如。, policy.yaml):

version: 1
default: deny

identity:
  provider: okta
  issuer: https://your-org.okta.com
  audience: your-app-audience

servers:
  - name: my-mcp-server
    transport: http
    url: https://mcp-server.internal.corp/mcp

policies:
  - id: allow-devs
    description: Allow developers to use read tools
    effect: allow
    subjects:
      groups:
        - developers
    mcp_servers:
      - name: my-mcp-server
        tools:
          - read_*
          - list_*

masking:
  presidio:
    enabled: true
    entities:
      - PERSON
      - EMAIL_ADDRESS
      - PHONE_NUMBER
      - CREDIT_CARD
      - API_KEY
      - PASSWORD

# Set the policy file path
export MCP_POLICY_FILE=policy.yaml

# Start the gateway
python -m mcp_zero
# or
mcp-zero

或者使用环境变量进行简单设置:

export MCP_UPSTREAM_URL=http://localhost:9000
export OKTA_ISSUER=https://your-org.okta.com
export OKTA_AUDIENCE=your-app-audience
python -m mcp_zero

网关启动 0.0.0.0:8080 默认情况下(可通过配置 MCP_HOSTMCP_PORT).

配置

环境变量

变量描述默认值
MCP_POLICY_FILEYAML/JSON策略文件的路径_(无)_
MCP_UPSTREAM_URL单个上游MCP服务器URL(传统回退)_(无)_
MCP_HOST主机绑定网关0.0.0.0
MCP_PORT绑定网关的端口8080
MCP_RELAX_STARTUP_CHECKS允许在没有所需安全控制的情况下启动(仅限开发/测试)false
MCP_SKIP_TLS_VALIDATION允许 http:// 发行者/服务器/OBO URL(仅限开发/测试)false
MCP_STRICT_SECURITY启动时需要身份和治理false
MCP_SSE_ENABLED启用已弃用的入站SSE端点(/mcp/sse*)true
LOG_LEVEL日志记录级别(调试、信息、警告、错误)INFO
LOG_FORMAT日志输出格式(jsontext)json
OKTA_ISSUEROkta令牌发行者URL(如果没有策略文件,则回退)_(无)_
OKTA_AUDIENCE预期的JWT受众声明(如果没有策略文件,则回退)_(无)_
OKTA_TOKEN_ENDPOINTOkta代币交换端点(用于OBO)_(无)_
OKTA_CLIENT_ID网关客户端ID(用于OBO)_(无)_
OKTA_CLIENT_SECRET网关客户端机密(用于OBO)_(无)_
ANALYTICS_REDIS_URLRedis连接URL(设置后启用分析)_(无)_
ANALYTICS_REDIS_CLUSTER使用Redis集群客户端false
ANALYTICS_REDIS_PASSWORDRedis身份验证密码_(无)_
ANALYTICS_ENVIRONMENT分析密钥命名空间(例如。 production)default
ANALYTICS_GATEWAY_ID唯一网关实例ID_(自动生成)_
ANALYTICS_KEY_PREFIX用于分析的Redis密钥前缀mcpgw
ANALYTICS_RETENTION_SECONDS分析键的TTL(秒)3600
MCP_CORS_ORIGINS逗号分隔的允许CORS源(设置时启用CORS)_(无)_
MCP_CORS_ALLOW_CREDENTIALS允许CORS请求中的凭据false
MCP_CORS_MAX_AGE飞行前缓存持续时间(秒)600

MCP_POLICY_FILE 设置后,其标识部分优先于 OKTA_* env变量。CORS和分析环境变量覆盖策略值。

策略文件

docs/enterprise_mcp_gateway_policy_schema_example.md 查看完整的注释示例。

工作示例可在 policies/ 目录:

文件描述
policies/everything.yamlstdio传输 @modelcontextprotocol/server-everything
policies/filesystem.yamlstdio传输 @modelcontextprotocol/server-filesystem
policies/filesystem-redacted.yaml带有Presidio屏蔽插件的文件系统服务器
policies/time.yamlstdio传输 @modelcontextprotocol/server-time
policies/all.yaml多台stdio服务器组合在一起
通过流式HTTP远程GitHub MCP服务器
带有显式只读工具allowlist的GitHub服务器

关键概念:

  • version:必须是 1
  • default: deny (推荐)或 allow
  • servers:下游MCP服务器定义(HTTP或stdio)
  • policies自上而下评估有序规则;显式拒绝覆盖允许
  • cors:基于浏览器的客户端的CORS配置(默认禁用)
  • masking:Presidio实体检测配置(旧版--请参见 plugins 在......下面
  • plugins:可扩展管道挂钩的插件声明(掩码、速率限制等)

CORS配置

添加a cors 策略文件的部分,以允许基于浏览器的MCP客户端:

cors:
  allow_origins:
    - https://web-ide.corp.com
    - https://dashboard.corp.com
  allow_methods: ["GET", "POST", "OPTIONS"]
  allow_headers: ["Authorization", "Content-Type"]
  allow_credentials: false
  max_age: 600

默认情况下,CORS被禁用(失败关闭)。仅 allow_origins 是必需的;所有其他字段都有安全默认值。环境变量(MCP_CORS_ORIGINS, MCP_CORS_ALLOW_CREDENTIALS, MCP_CORS_MAX_AGE)覆盖策略文件值。

服务器类型

HTTP服务器 --通过流式HTTP访问的远程MCP服务器:

servers:
  - name: remote-api
    transport: http
    url: https://mcp-server.corp/mcp

SSE服务器 --通过SSE的远程MCP服务器:

servers:
  - name: legacy-sse-server
    transport: sse
    url: https://mcp-server.corp/sse

stdio服务器 --由网关生成和管理的本地进程(在策略文件中配置):

servers:
  - name: local-filesystem
    transport: stdio
    command: npx
    args:
      - -y
      - "@modelcontextprotocol/server-filesystem"
      - /workspace
    env:
      NODE_ENV: production

发展

# Run tests
python -m pytest                          # all tests
python -m pytest tests/masking/ -v        # specific module
python -m pytest tests/test_main.py -v    # specific file

# Lint and format
ruff check src tests
ruff format src tests

# Run the gateway
python -m mcp_zero

在Windows上,使用提供的脚本:

scripts\test.bat           # Run tests
scripts\lint.bat           # Lint
scripts\format.bat         # Format
scripts\run.bat            # Run gateway

项目结构

src/mcp_zero/
├── main.py              # Application entry point
├── plugin.py            # Plugin protocol and base class
├── plugin_manager.py    # Plugin discovery and lifecycle
├── context.py           # RequestContext, HookContext, UserIdentity
├── identity/            # Okta JWT validation, OBO token exchange
├── governance/          # Policy loading, evaluation, enforcement
├── masking/             # Masking engine interface and hook
├── plugins/             # Built-in plugins (Presidio masking, GitHub repo filter)
├── pipeline/            # Hook lifecycle, registry, execution
├── proxy/               # Starlette app, server management, tool routing
├── analytics/           # Optional Redis-based analytics
└── transport/           # HTTP, SSE, and stdio MCP transport clients

建筑

网关使用基于钩子的管道和插件系统。核心挂钩处理身份、治理和审计。其他一切——屏蔽、速率限制、指标——都是从策略文件加载的插件。

芯钩 (始终存在):

优先级挂钩阶段目的
10IdentityHookPRE_VALIDATION验证JWT,解析用户身份
50GovernanceHookPostT_VALIDATION评估策略规则,允许或拒绝
145AnalyticsHockPRE_AUDIT将指标记录到Redis(配置时)
150AuditHookPRE_AUDIT发出具有完整请求上下文的结构化日志

插件挂钩 (从策略文件加载 plugins: 部分):

优先级范围插槽示例
20–49预治理速率限制、请求验证
70-99后治理蒙面(Presidio 75岁),转型
100–139概述指标、缓存、自定义挂钩

钩子按优先级顺序执行。任何钩子都可能使管道短路(例如,治理拒绝会立即停止处理)。

插件系统:插件是通过Python入口点发现的(mcp_zero.plugins 组),在策略文件中配置,并在启动时注册到管道中。看 docs/plugin-architecture-design.md 了解详情。

文档

文档描述
docs/quickstart.md使用Docker Compose和本地路径逐步快速入门
docs/prd.md产品要求和验收标准
docs/enterprise_mcp_gateway_architecture_diagram.md带组件图的逻辑架构
docs/enterprise_mcp_gateway_implementation_plan_epics.md分阶段实施计划
docs/enterprise_mcp_gateway_policy_schema_example.md完整注释策略文件示例
docs/enterprise_mcp_gateway_security_compliance_positioning.md安全控制和合规性协调
docs/enterprise_mcp_gateway_threat_model_canvas.md威胁模型和缓解措施
docs/okta_obo_for_an_enterprise_mcp_gateway.mdOBO代币交易所深度跳水
docs/enterprise_mcp_gateway_leadership_explainer.md非技术利益相关者概述
docs/configuration-architecture.md配置加载、环境变量、策略架构、优先级规则
docs/cors-configuration.md基于浏览器的MCP客户端的CORS设置
docs/plugins/插件快速入门和每个插件的文档

比较

mcp zero与其他mcp网关相比如何:

|---|---|---|---|---|---| | 许可证 | ✅ MIT 的✅ Apache 2.0(Linux Foundation)❌ 商业SaaS✅ MIT 的✅ MIT 的 | 语言 |Python | Rust/Go|专有|。NET/C#| Python| | 运输 | ✅ 流式HTTP、stdio |✅ 流式HTTP、SSE、stdio |✅ HTTP、SSE、stdio |仅限流式HTTP |仅限stdio| | 认证 | ✅ Okta OAuth2 JWT |✅ JWT、API密钥、OAuth(Auth0、Keycap)、MCP身份验证规范|✅ OAuth 2.0、SAML、SSO(Okta、Azure AD)| Azure Entra ID/Outh2.0 |❌ 无内置| | 治理 | ✅ YAML/JSON策略文件、默认拒绝、服务器/工具/用户/组规则|✅ RBAC、Cedar策略引擎、速率限制|RBAC/ABAC、虚拟MCP基于角色的端点|RBAC通过Entra ID角色|❌ 仅基于插件| | 数据保护 | ✅ 输入和输出上的内联Presidio屏蔽|❌ 无内置|✅ PII编辑、机密扫描、内容过滤|❌ 无内置|Presidio PII+正则表达式秘密掩码| | 审计 | ✅ 带有用户归因、关联ID和策略决策的结构化日志|✅ OpenTetry指标、日志、分布式跟踪|✅ 不可变的审计跟踪、仪表板、SOC 2 | Azure应用程序洞察|基于SQLite的工具调用跟踪| | 部署 | ✅ 自托管,轻量级|✅ 自托管(二进制、Docker、Kubernetes)|托管云SaaS(可用自托管)|在Kubernetes上自托管(AKS)|本地代理进程| | 多用户 | ✅ 用户/组级策略|✅ 具有每个租户资源的多租户|✅ 基于角色的端点|✅ 资源级RBAC |❌ 单用户本地代理| | 主要焦点 |治理+受监管企业的数据保护|高性能连接+大规模代理人工智能的可观察性|托管治理+部署平台|可扩展的Kubernetes路由+生命周期管理|本地MCP使用的安全护栏|

何时选择什么

  • mcp零点 --您需要一个自托管、轻量级的网关,具有策略即代码治理、内联PII屏蔽和结构化审计日志,以实现合规性。没有供应商锁定,没有云依赖。
  • 代理网关 --您需要一个高性能的、基于Rust的代理,用于大规模的代理到代理和代理到工具的连接,具有OpenTetry可观察性和基于Cedar的策略。如果您需要A2A协议支持或LLM网关路由以及MCP,则非常适合。没有内置的PII掩码。
  • MintMCP --您需要一个托管的SaaS平台,以最小的运营开销处理部署、托管和治理。商业许可预算。
  • 微软MCP网关 --您已经在使用Azure/AKS,需要与Entra ID集成的Kubernetes原生MCP服务器编排。自带数据保护和策略引擎。
  • Lasso MCP网关 --您需要一个轻量级的本地代理,专注于为单个开发人员工作站提供秘密/PII掩码。高级功能需要商业Lasso平台。

许可证

许可证 了解详情。

目录标签

目录标签

安全控制Python审计日志开源网关本地部署企业AI数据保护

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP