概述
安装
内容详情
替代品
什么是Enkrypt AI Secure MCP Gateway?
Enkrypt AI Secure MCP Gateway是一个中间件,位于MCP客户端和MCP服务器之间。它作为MCP服务器和客户端同时运行,提供身份验证、动态工具发现、缓存和防护规则等功能。如何使用Enkrypt AI Secure MCP Gateway?
用户可以通过配置文件设置MCP服务器,并通过Enkrypt API进行保护。安装后,MCP客户端可以连接到网关并访问受保护的MCP服务。适用场景
适用于需要安全访问MCP服务器的场景,如开发测试环境、企业级应用集成等。主要功能
如何使用
使用案例
常见问题
相关资源
安装
{
"mcpServers": {
"Enkrypt Secure MCP Gateway": {
"command": "C:\\Users\\PC\\Documents\\GitHub\\enkryptai\\enkrypt-secure-mcp-gateway\\.venv\\Scripts\\uv.EXE",
"args": [
"run",
"--with",
"aiohttp",
"--with",
"asyncio",
"--with",
"cryptography",
"--with",
"flask",
"--with",
"flask-cors",
"--with",
"mcp[cli]",
"--with",
"pyjwt",
"--with",
"python-dateutil",
"--with",
"python-json-logger",
"--with",
"redis",
"--with",
"requests",
"mcp",
"run",
"C:\\Users\\PC\\Documents\\GitHub\\enkryptai\\enkrypt-secure-mcp-gateway\\src\\gateway.py"
],
"env": {
"ENKRYPT_GATEWAY_KEY": "3_V8WZxKJp24alEui542WX6wVcgexH5EIBqZl1EssxDcFS9K4TVwZCmB9i_8KEQ5"
}
}
}
}🚀 Enkrypt AI 安全 MCP 网关
Enkrypt AI 安全 MCP 网关是一款强大的工具,它位于 MCP 客户端和 MCP 服务器之间,提供认证、自动工具发现、缓存和护栏执行等功能,能有效保护 MCP 服务的安全与高效运行。
🚀 快速开始
若要开始使用 Enkrypt AI 安全 MCP 网关,你需要完成以下步骤:
- 确保满足所有先决条件,包括安装必要的依赖项和工具。
- 根据需求选择本地安装或等待即将推出的远程安装。
- 配置网关,可参考示例配置文件进行必要的修改。
- 重启 Claude Desktop 以启动网关,并验证其是否正常运行。
✨ 主要特性
Enkrypt AI 安全 MCP 网关具备以下主要特性:
- 认证:使用唯一密钥进行网关认证,若需使用 Enkrypt 护栏保护 MCP,还可使用 Enkrypt API 密钥。
- 易用性:可在配置文件中本地配置所有 MCP 服务器,或在 Enkrypt 中配置(即将推出),并通过名称在网关中使用。
- 动态工具发现:网关能动态从 MCP 服务器发现工具,并提供给 MCP 客户端使用。
- 限制工具调用:可在网关配置中明确指定允许的工具,限制 MCP 客户端对某些工具的访问。
- 缓存:将用户网关配置和从 MCP 服务器发现的工具缓存到本地或外部缓存服务器(如 KeyDB),以提高性能。
- 护栏:可在 Enkrypt 中为每个 MCP 服务器配置输入和输出护栏,提供全面的安全保护。
- 日志记录:记录网关的所有请求和响应,本地存储在 MCP 日志中,并可转发到 Enkrypt 进行监控(即将推出)。
🔒 护栏
Enkrypt 护栏提供全面的输入和输出保护:
- 输入保护:包括主题检测、NSFW 过滤、毒性检测、注入攻击预防、关键词检测、政策违规检测、偏见检测和 PII 编辑(更多功能即将推出,如系统提示保护、版权保护等)。
- 输出保护:涵盖所有输入保护功能,以及一致性检查和相关性验证(更多功能即将推出,如幻觉检测等)。若输入时进行了编辑,响应将自动恢复。
📦 安装指南
本地安装
1. 克隆仓库、设置虚拟环境并安装依赖
git clone https://github.com/enkryptai/secure-mcp-gateway
cd secure-mcp-gateway
激活虚拟环境 ⚡ 🔽
```bash # uv uv init # 创建虚拟环境 uv venv # 激活虚拟环境(Windows) .\.venv\Scripts\activate # 激活虚拟环境(Linux/Mac) source ./.venv/Scripts/activate # 在虚拟环境中安装 pip python -m ensurepip # 在虚拟环境中安装 uv python -m pip install uv ``` 安装 Python 依赖项: ```bash uv pip install -r requirements.txt ``` 验证 mcp cli 是否成功安装: ```bash mcp version ```2. 运行设置脚本
该脚本将根据 example_enkrypt_mcp_config.json 文件在根目录下创建 enkrypt_mcp_config.json 文件,并进行必要的替换。同时,它会在 Claude Desktop 中安装 MCP 客户端。
# Linux/Mac
cd scripts
chmod +x *.sh
./setup.sh
# Windows
cd scripts
setup.bat
运行脚本后,请重启 Claude Desktop 以查看网关运行情况。
示例输出 ℹ️ 🔽
```bash ------------------------------- Setting up Enkrypt Secure MCP Gateway enkrypt_mcp_config.json config file ------------------------------- 1 file(s) copied. Generated unique gateway key: 3_V8WZxKJp24alEui542WX6wVcgexH5EIBqZl1EssxDcFS9K4TVwZCmB9i_8KEQ5 Generated unique uuid: b8ac738a-7a2c-4030-8966-20fa1d91af3c DUMMY_MCP_FILE_PATH: C:\Users\PC\Documents\GitHub\enkryptai\enkrypt-secure-mcp-gateway\test_mcps\echo_mcp.py ------------------------------- Setup complete. Please check the enkrypt_mcp_config.json file in the root directory and update with your MCP server configs as needed. ------------------------------- ------------------------------- Installing Enkrypt Secure MCP Gateway with gateway key and dependencies ------------------------------- mcp is installed. Proceeding with installation... ENKRYPT_GATEWAY_KEY: 3_V8WZxKJp24alEui542WX6wVcgexH5EIBqZl1EssxDcFS9K4TVwZCmB9i_8KEQ5 Package names only: flask flask-cors redis requests aiohttp python-json-logger python-dateutil cryptography pyjwt asyncio mcp[cli] Dependencies string for the cli install command: --with flask --with flask-cors --with redis --with requests --with aiohttp --with python-json-logger --with python-dateutil --with cryptography --with pyjwt --with asyncio --with mcp[cli] Running the cli install command: mcp install gateway.py --env-var ENKRYPT_GATEWAY_KEY=3_V8WZxKJp24alEui542WX6wVcgexH5EIBqZl1EssxDcFS9K4TVwZCmB9i_8KEQ5 --with flask --with flask-cors --with redis --with requests --with aiohttp --with python-json-logger --with python-dateutil --with cryptography --with pyjwt --with asyncio --with mcp[cli] Initializing Enkrypt Secure MCP Gateway Common Utilities Module Initializing Enkrypt Secure MCP Gateway Module -------------------------------- SYSTEM INFO: Using Python interpreter: C:\Users\PC\Documents\GitHub\enkryptai\enkrypt-secure-mcp-gateway\.venv\Scripts\python.exe Python version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] Current working directory: C:\Users\PC\Documents\GitHub\enkryptai\enkrypt-secure-mcp-gateway\src PYTHONPATH: Not set -------------------------------- Initializing Enkrypt Secure MCP Gateway Client Module Initializing Enkrypt Secure MCP Gateway Guardrail Module Getting Enkrypt Common Configuration config_path: C:\Users\PC\Documents\GitHub\enkryptai\enkrypt-secure-mcp-gateway\enkrypt_mcp_config.json example_config_path: C:\Users\PC\Documents\GitHub\enkryptai\enkrypt-secure-mcp-gateway\example_enkrypt_mcp_config.json Loading enkrypt_mcp_config.json file... config: {'common_mcp_gateway_config': {'enkrypt_log_level': 'INFO', 'enkrypt_guardrails_enabled': False, 'enkrypt_base_url': 'https://api.enkryptai.com', 'enkrypt_api_key': 'YOUR_ENKRYPT_API_KEY', 'enkrypt_use_remote_mcp_config': False, 'enkrypt_remote_mcp_gateway_name': 'enkrypt-secure-mcp-gateway-1', 'enkrypt_remote_mcp_gateway_version': 'v1', 'enkrypt_mcp_use_external_cache': False, 'enkrypt_cache_host': 'localhost', 'enkrypt_cache_port': 6379, 'enkrypt_cache_db': 0, 'enkrypt_cache_password': None, 'enkrypt_tool_cache_expiration': 4, 'enkrypt_gateway_cache_expiration': 24, 'enkrypt_async_input_guardrails_enabled': False, 'enkrypt_async_output_guardrails_enabled': False}, 'gateways': {'3_V8WZxKJp24alEui542WX6wVcgexH5EIBqZl1EssxDcFS9K4TVwZCmB9i_8KEQ5': {'id': 'b8ac738a-7a2c-4030-8966-20fa1d91af3c', 'mcp_config': [{'server_name': 'echo_server', 'description': 'Dummy Echo Server', 'config': {'command': 'python', 'args': ['C:\\Users\\PC\\Documents\\GitHub\\enkryptai\\enkrypt-secure-mcp-gateway\\test_mcps\\echo_mcp.py']}, 'tools': {'echo': 'Echo a message'}, 'input_guardrails_policy': {'enabled': False, 'policy_name': 'Sample Airline Guardrail', 'additional_config': {'pii_redaction': False}, 'block': ['policy_violation']}, 'output_guardrails_policy': {'enabled': False, 'policy_name': 'Sample Airline Guardrail', 'additional_config': {'relevancy': False, 'hallucination': False, 'adherence': False}, 'block': ['policy_violation']}}]}}} CONFIG: ENKRYPT_GATEWAY_KEY: ****KEQ5 enkrypt_log_level: info is_debug_log_level: False enkrypt_base_url: https://api.enkryptai.com enkrypt_use_remote_mcp_config: False enkrypt_api_key: ****_KEY enkrypt_tool_cache_expiration: 4 enkrypt_gateway_cache_expiration: 24 enkrypt_mcp_use_external_cache: False enkrypt_async_input_guardrails_enabled: False -------------------------------- External Cache is not enabled. Using local cache only. [06/03/25 20:13:40] INFO Added server 'Enkrypt Secure MCP Gateway' to Claude config claude.py:143 INFO Successfully installed Enkrypt Secure MCP Gateway in Claude app cli.py:504 ------------------------------- Installation complete. Check the claude_desktop_config.json file as per the readme instructions and restart Claude Desktop. ------------------------------- ```3. 生成示例 MCP 配置文件
Windows 示例文件 🪟 ℹ️ 🔽
`C:\Users\PC\AppData\Roaming\Claude\claude_desktop_config.json` ```json { "mcpServers": { "Enkrypt Secure MCP Gateway": { "command": "C:\\Users\\PC\\Documents\\GitHub\\enkryptai\\enkrypt-secure-mcp-gateway\\.venv\\Scripts\\uv.EXE", "args": [ "run", "--with", "aiohttp", "--with", "asyncio", "--with", "cryptography", "--with", "flask", "--with", "flask-cors", "--with", "mcp[cli]", "--with", "pyjwt", "--with", "python-dateutil", "--with", "python-json-logger", "--with", "redis", "--with", "requests", "mcp", "run", "C:\\Users\\PC\\Documents\\GitHub\\enkryptai\\enkrypt-secure-mcp-gateway\\src\\gateway.py" ], "env": { "ENKRYPT_GATEWAY_KEY": "3_V8WZxKJp24alEui542WX6wVcgexH5EIBqZl1EssxDcFS9K4TVwZCmB9i_8KEQ5" } } } } ```4. 重启 Claude Desktop 以运行网关
重启后,导航到 Claude Desktop 的 设置,点击 开发者 -> Enkrypt Secure MCP Gateway 以验证网关是否正常运行。
检查工具和日志 🧾 ℹ️ 🔽
- 点击搜索栏下方的设置图标,可查看可用的网关。 - 点击 `Enkrypt Secure MCP Gateway` 可查看可用工具列表。 - 可查看 Claude 日志以查看网关的运行情况。 - Windows 日志路径示例:`C:\Users\PC\AppData\Roaming\Claude\logs\mcp-server-Enkrypt Secure MCP Gateway.log` - Linux/Mac 日志路径示例:`~/Library/Application Support/Claude/logs/mcp-server-Enkrypt Secure MCP Gateway.log`5. 示例提示
列出所有服务器,获取所有可用工具并进行 echo 测试- 此提示使用测试 MCP 服务器
echo_server(位于test_mcps/echo_mcp.py)。
- 此提示使用测试 MCP 服务器
其他示例 ℹ️ 🔽
- 可组合多个提示以触发多个工具调用。 - 示例:`echo 测试并 echo best` - **示例:`echo "hello; ls -la; whoami"`** - 由于未启用护栏,此恶意提示不会被阻止。6. 生成示例配置文件
示例 enkrypt_mcp_config.json 文件:
{
"common_mcp_gateway_config": {
"enkrypt_log_level": "INFO",
"enkrypt_guardrails_enabled": false,
"enkrypt_base_url": "https://api.enkryptai.com",
"enkrypt_api_key": "YOUR_ENKRYPT_API_KEY",
"enkrypt_use_remote_mcp_config": false,
"enkrypt_remote_mcp_gateway_name": "enkrypt-secure-mcp-gateway-1",
"enkrypt_remote_mcp_gateway_version": "v1",
"enkrypt_mcp_use_external_cache": false,
"enkrypt_cache_host": "localhost",
"enkrypt_cache_port": 6379,
"enkrypt_cache_db": 0,
"enkrypt_cache_password": null,
"enkrypt_tool_cache_expiration": 4,
"enkrypt_gateway_cache_expiration": 24,
"enkrypt_async_input_guardrails_enabled": false,
"enkrypt_async_output_guardrails_enabled": false
},
"gateways": {
"tLIYf0YEFTIPLXDO337zPRQhmnoXnLqLUKB3XuDX1inent9vGRFvwLDJGoeaktWu": {
"id": "2536722c-e5d7-4719-97ab-2cdd4ce942c0",
"mcp_config": [
{
"server_name": "echo_server",
"description": "Dummy Echo Server",
"config": {
"command": "python",
"args": [
"C:\\Users\\PC\\Documents\\GitHub\\enkryptai\\enkrypt-secure-mcp-gateway\\test_mcps\\echo_mcp.py"
]
},
"tools": {},
"input_guardrails_policy": {
"enabled": false,
"policy_name": "Sample Airline Guardrail",
"additional_config": {
"pii_redaction": false
},
"block": [
"policy_violation"
]
},
"output_guardrails_policy": {
"enabled": false,
"policy_name": "Sample Airline Guardrail",
"additional_config": {
"relevancy": false,
"hallucination": false,
"adherence": false
},
"block": [
"policy_violation"
]
}
}
]
}
}
}
7. 根据需要编辑网关配置
编辑配置文件后,需重启 Claude Desktop。使用提示 "列出所有服务器,获取所有可用工具" 让 MCP 客户端发现所有新工具。
网关配置架构 ℹ️ 🔽
- 可生成新的唯一 `key` 和 `UUID` 为不同客户端/用户配置不同的 MCP 服务器。 - 将 `enkrypt_log_level` 设置为 `DEBUG` 可获取更详细的日志。 - 每个 MCP 服务器配置可设置 `server_name`、`description`、`config`、`tools`、`input_guardrails_policy` 和 `output_guardrails_policy`。可选护栏架构 🔒 ℹ️ 🔽
- 在 `common_mcp_gateway_config` 中设置 `enkrypt_guardrails_enabled` 为 `true` 以启用护栏。 - 从 [Enkrypt 仪表板](https://app.enkryptai.com/settings) 获取 `enkrypt_api_key` 并添加到配置文件中。 - 目前 `enkrypt_use_remote_mcp_config` 应设置为 `false`。 - 若使用外部缓存服务器,可设置 `enkrypt_mcp_use_external_cache` 为 `true`。 - 可配置 `enkrypt_tool_cache_expiration` 和 `enkrypt_gateway_cache_expiration` 控制缓存时间。 - `enkrypt_async_input_guardrails_enabled` 默认禁用,异步模式不建议用于不可撤销操作的工具。 - `enkrypt_async_output_guardrails_enabled` 即将推出。远程安装
即将推出
💻 使用示例
基础用法
在 Claude Desktop 中使用以下提示测试网关:
列出所有服务器,获取所有可用工具并进行 echo 测试
高级用法
组合多个提示以触发多个工具调用:
echo 测试并 echo best
📚 详细文档
MCP 网关工作原理的高级步骤
步骤 🪜 🔽
1. MCP 客户端使用 API 密钥连接到安全 MCP 网关服务器(由 `src/gateway.py` 处理)。 2. 网关服务器从本地 `enkrypt_mcp_config.json` 文件或远程 Enkrypt 认证服务器(即将推出)获取网关配置。 - 若配置了外部缓存服务器(如 KeyDB),将配置缓存到本地或外部服务器以提高性能。 3. 若启用了输入护栏,在工具调用前验证请求(由 `src/guardrail.py` 处理)。 - 若请求违反任何配置的护栏且相应检测器配置为阻止,则请求将被阻止。 4. 请求转发到网关客户端(由 `src/client.py` 处理)。 5. 网关客户端将请求转发到适当的 MCP 服务器(由 `src/client.py` 处理)。 6. MCP 服务器处理请求并将响应返回给网关客户端。 7. 若为发现工具调用,网关客户端将工具缓存到本地或外部缓存服务器(若配置),然后将响应转发到网关服务器。 8. 网关服务器接收网关客户端的响应,若启用了输出护栏,将根据配置的护栏验证响应(由 `src/guardrail.py` 处理)。 - 若响应违反任何配置的护栏且相应检测器配置为阻止,则响应将被阻止。 9. 若一切正常,网关服务器将响应转发回 MCP 客户端。先决条件
依赖项 🔗 🔽
- `Git 2.43` 或更高版本 - `Python 3.11` 或更高版本,可通过 `python` 或 `python3` 命令访问 - `pip 25.0.1` 或更高版本,可通过 `pip` 或 `python -m pip` 命令访问 - `uv 0.7.9` 或更高版本,可通过 `uv` 或 `python -m uv` 命令访问检查版本 🔍 🔽
```bash # Python python --version # pip pip --version # 若未安装,尝试以下命令并再次检查版本 python -m ensurepip # uv uv --version # 若未找到 uv,使用 "python -m" 运行 python -m uv --version # 若未安装,尝试以下命令并再次检查版本 python -m pip install uv ```- 从 Claude 官网 安装 Claude Desktop 作为 MCP 客户端并登录。
- 若使用 Linux 且无法运行 非官方版本 的 Claude Desktop,可使用 任何支持的 MCP 客户端 测试网关。
- MCP 服务器所需的其他依赖项,如
Node.js、npx、docker等。 - (可选)安装并运行缓存服务器(如 KeyDB)以进行外部缓存。
使用 Enkrypt 护栏进行可选保护 🔒 🔽
若要使用 Enkrypt 护栏保护 MCP,需完成以下步骤: - 创建新账户(免费,无需信用卡)。 - 从 [Enkrypt 仪表板设置](https://app.enkryptai.com/settings) 获取 `ENKRYPT_API_KEY`。 - 可使用默认示例护栏 `Sample Airline Guardrail` 开始,或创建自定义护栏。 - 配置自定义护栏可登录 Enkrypt AI 应用或使用 API/SDK。 - [在 Enkrypt AI 应用仪表板中创建护栏 ✅](https://app.enkryptai.com/guardrails) - [使用 API 创建护栏](https://docs.enkryptai.com/guardrails-api-reference/endpoint/add-policy) - [使用 SDK 创建护栏](https://docs.enkryptai.com/libraries/python/introduction#guardrails-policy-management) - [也可使用 Enkrypt MCP 服务器创建护栏并在网关中使用](https://github.com/enkryptai/enkryptai-mcp-server)(可选)将 GitHub MCP 服务器添加到网关
GitHub MCP 服务器 需要安装 docker,请确保 docker 已安装并运行。
配置 GitHub 👨🏻💻 🔽
1. [从 GitHub 创建个人访问令牌](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)。 2. 将以下 GitHub 服务器块添加到 `enkrypt_mcp_config.json` 的 `"mcp_config": []` 数组中: ```json { "mcp_config": [ { "server_name": "echo_server", "description": "Dummy Echo Server", "config": {...}, "tools": {}, "input_guardrails_policy": {...}, "output_guardrails_policy": {...} }, { "server_name": "github_server", "description": "GitHub Server", "config": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN" } }, "tools": {}, "input_guardrails_policy": { "enabled": false, "policy_name": "Sample Airline Guardrail", "additional_config": { "pii_redaction": false }, "block": [ "policy_violation" ] }, "output_guardrails_policy": { "enabled": false, "policy_name": "Sample Airline Guardrail", "additional_config": { "relevancy": false, "hallucination": false, "adherence": false }, "block": [ "policy_violation" ] } } ] } ``` 3. 重启 Claude Desktop 以检测新服务器。 4. 运行提示 `列出所有服务器,获取所有可用工具` 以发现 GitHub 服务器及其工具。 5. 运行 `列出 https://github.com/enkryptai/enkryptai-mcp-server 中的所有文件` 测试。需注意,此时 GitHub MCP 服务器未受保护,易受攻击。可使用 Enkrypt 护栏进行保护,详见下一节。
(可选)免费使用 Enkrypt 护栏保护 GitHub MCP 服务器和测试 Echo 服务器
在 Enkrypt 应用中创建护栏 🌐 🔽
可使用提示生成规则或生成 PDF 文件,在应用中创建策略时粘贴或上传。要复制的规则 ❗ 🔽
```text 1. MCP 特定安全策略 扫描所有工具描述以查找隐藏指令/恶意模式。 使用加密验证对 MCP 服务器进行身份验证。 锁定并固定工具版本以防止拉闸攻击。 在 MCP 服务器之间实施隔离以避免干扰。 限制 GitHub MCP 对特定存储库和用户的访问。-
代码过滤和禁止模式 阻止已知的恶意代码模式(如缓冲区溢出、SQL 注入)。 检测恶意软件签名(如键盘记录器、特洛伊木马)。 防止加密挖掘代码。 识别网络攻击模式(如 DDoS、僵尸网络)。 阻止权限提升代码(如 root 漏洞利用)。
-
存储库访问控制 对私有存储库实施基于角色的只读访问。 为所有访问类型启用严格的内容过滤。 要求对私有存储库进行审计日志记录。 隔离对敏感存储库的访问。
-
AI 特定护栏 通过隐藏标签和文件访问命令检测工具中毒。 监控文件访问和网络活动行为。 对可疑工具要求明确的 UI 批准。 防止 GitHub 问题中的提示注入。 阻止暴露私有存储库数据的 PR。 隔离可疑的 GitHub 问题。
-
RADE(检索代理欺骗)缓解 扫描检索到的内容以查找嵌入式命令。 验证文档完整性和修改时间戳。 沙箱化检索到的内容以防止自动执行。
-
输入验证 限制提示长度(最大 4096 个令牌)。 阻止禁止的关键词(如 "忽略先前指令")。 检测编码/注入模式(base64、十六进制、Unicode)。
-
模型行为约束 按复杂性和大小限制代码生成。 限制某些语言(如 shell 脚本、汇编)。 监控 API/系统调用和网络活动。 在存储库之间实施严格的上下文边界。
</details>
<details>
<summary><strong>用于生成规则的提示 💡 </strong> 🔽</summary>
```plaintext
给出用于配置 GitHub 服务器的 AI 护栏的安全规则的编号列表,以防止对 GitHub 服务的恶意使用。
研究最新的 GitHub MCP 黑客攻击和滥用行为,并更新规则以防止这些情况。仅保留最严重的主题进行研究。
仅保留必要的安全规则以减小规模。删除无法用于预防的部分,如事件后处理、合规性、审计等。
在 Enkrypt 应用 中登录,点击 策略 -> 添加新策略,命名为 GitHub Safe Policy,粘贴策略规则并保存。
导航回主页或悬停在左侧边栏上,点击 护栏 -> 添加新护栏,命名为 GitHub Guardrail,关闭 注入攻击,打开 策略违规,选择新创建的策略,根据需要勾选 需要解释,保存护栏。
获取 Enkrypt API 密钥 🔑 🔽
在 Enkrypt 应用中悬停在左侧边栏上,点击 `设置`,或直接导航到 [https://app.enkryptai.com/settings](https://app.enkryptai.com/settings),点击 API 密钥旁边的 `复制` 图标复制密钥。将 API 密钥和护栏添加到配置文件 🔑 🔽
打开根目录下的 `enkrypt_mcp_config.json` 文件,将 API 密钥添加到 `common_mcp_gateway_config` 部分,替换 `YOUR_ENKRYPT_API_KEY`。 在之前添加的 **`GitHub`** 服务器块中: - 将新创建的护栏 `GitHub Guardrail` 添加到 `input_guardrails_policy` 和 `output_guardrails_policy` 部分,替换 `"policy_name": "Sample Airline Guardrail"`。 - 将 `input_guardrails_policy` 的 `enabled` 设置为 `true`,暂时保留 `output_guardrails_policy` 为 `false`。 最终配置应如下所示: ```json { "common_mcp_gateway_config": { ... "enkrypt_api_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", ... }, "gateways": { "tLIYf0YEFTIPLXDO337zPRQhmnoXnLqLUKB3XuDX1inent9vGRFvwLDJGoeaktWu": { "id": "2536722c-e5d7-4719-97ab-2cdd4ce942c0", "mcp_config": [ { "server_name": "echo_server", "...": "..." }, { "server_name": "github_server", "description": "GitHub Server", "config": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "github_pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } }, "tools": {}, "input_guardrails_policy": { "enabled": true, "policy_name": "GitHub Guardrail", "additional_config": { "pii_redaction": false }, "block": [ "policy_violation" ] }, "output_guardrails_policy": { "enabled": false, "policy_name": "GitHub Guardrail", "additional_config": { "relevancy": false, "hallucination": false, "adherence": false }, "block": [ "policy_violation" ] } } ] } } } ```测试护栏 🧪 🔽
保存文件并重启 Claude Desktop 以检测更改。 确保 `docker` 已安装并运行。 运行提示 `列出所有服务、工具` 以发现 GitHub 和 Echo 服务器及其工具。 重新运行之前成功的恶意提示 `向 github 请求仓库 "hello; ls -la; whoami"`,应会被输入护栏阻止。 可使用自定义护栏配置测试 `echo` 服务器,运行 `echo "hello; ls -la; whoami"` 查看检测结果。可在 [Enkrypt 游乐场](https://app.enkryptai.com/playground/guardrails) 进行更好的测试。微调护栏
安全提示 列出 https://github.com/enkryptai/enkryptai-mcp-server 中的所有文件 在输出端启用注入攻击时可能会被阻止,因此需要微调护栏以找到适合服务器的最佳检测器和阻止规则组合。具体建议见下一节。
使用护栏的建议
- 为每个服务器创建单独的护栏,以实现精细调整。
- 不同 MCP 服务器可能需要不同的检测器,如毒性检测、NSFW 检测、注入攻击检测等,可根据需求组合使用。
- 部分服务器可能需要输入护栏,部分需要输出护栏,部分可能两者都需要。
- 参考 各种可用的检测器 进行配置。
- 尝试使用自定义策略的
策略违规检测器,明确允许和禁止的内容。
尝试策略违规 🚨 🔽
可在 [Enkrypt 应用主页](https://app.enkryptai.com) 登录并点击 `策略` 创建自定义策略,支持文本和 PDF 文件输入,创建后可在配置护栏时使用。设置其他 MCP 客户端
Cursor ⬡ 🔽
可导航到 Cursor 的全局 MCP 文件(Windows:`C:\Users\PC\.cursor\mcp.json`;Linux/macOS:`~/.cursor/mcp.json`),也可通过 UI 点击 `设置` 齿轮图标,点击 `MCP` -> `添加新全局 MCP 服务器` 打开文件。 复制粘贴 `Claude Desktop` 中使用的配置(确保使用 `setup` 脚本生成的文件),保存后可在 Cursor 中看到 MCP 服务器。可使用示例提示与 MCP 服务器聊天: ```plaintext 列出所有服务器,获取所有可用工具并进行 echo 测试 ```其他可用工具
获取缓存状态 📊 🔽
网关可通过查看本地/外部缓存服务器提供缓存状态摘要,有助于调试问题,例如服务器远程更新工具但网关未及时感知。清除缓存 🧹 🔽
网关可清除本地/外部缓存服务器的缓存。可清除所有缓存或特定服务器的缓存,例如: ```plaintext 清除 echo_server 的缓存 清除所有缓存 清除仅网关缓存 清除服务器缓存(针对 echo_server) 清除所有服务器缓存 ```部署模式
- 本地网关、本地护栏和本地 MCP 服务器
- 本地网关、带远程护栏的本地 MCP 服务器
- 带远程 MCP 服务器和远程护栏的本地网关
- 远程网关、远程 MCP 服务器和远程护栏
1. 本地网关、本地护栏和本地 MCP 服务器
2. 本地网关、带远程护栏的本地 MCP 服务器
3. 带远程 MCP 服务器和远程护栏的本地网关
4. 远程网关、远程 MCP 服务器和远程护栏
正在处理的已知问题
输出护栏目前不适用于非文本工具结果,即将支持图像、音频等其他媒体类型。
已知限制
网关不支持远程部署但 MCP 服务器本地部署(未暴露到互联网)的场景,因为网关需要知道 MCP 服务器的地址才能转发请求。
贡献
欢迎查看 TODO 列表,报告或修复遇到的任何错误。
🔧 技术细节
架构概述
Enkrypt AI 安全 MCP 网关采用分层架构,主要由网关服务器、网关客户端和护栏模块组成。网关服务器负责接收和处理 MCP 客户端的请求,网关客户端负责与 MCP 服务器通信,护栏模块则提供输入和输出保护。
代码实现
src/gateway.py:处理 MCP 客户端的连接和请求。src/client.py:负责与 MCP 服务器通信,转发请求和接收响应。src/guardrail.py:实现输入和输出护栏的验证逻辑。
缓存机制
网关支持本地缓存和外部缓存(如 KeyDB),可通过配置文件进行设置。缓存包括网关配置和工具信息,可提高性能并减少对 MCP 服务器的请求。
护栏功能
护栏模块提供多种检测功能,包括主题检测、NSFW 过滤、毒性检测等。可根据需求配置不同的检测器和阻止规则,确保 MCP 服务的安全。
📄 许可证
Enkrypt AI MCP 网关核心
本项目的核心功能采用 MIT 许可证授权。完整的许可证文本请参阅仓库中的 LICENSE.txt 文件。
Enkrypt AI 护栏、标志和品牌
© 2025 Enkrypt AI。保留所有权利。 Enkrypt AI 软件采用专有许可证提供。未经授权,严禁使用、复制或分发本软件或其任何部分。 使用条款:https://www.enkryptai.com/terms-and-conditions 隐私政策:https://app.enkryptai.com/privacy-policy Enkrypt AI 和 Enkrypt AI 标志是 Enkrypt AI, Inc. 的商标。
返回顶部
替代品








