什么是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服务器,也可以作为MCP客户端,为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
命令从命令行访问。
# 检查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 Desktop:从官网下载并安装Claude Desktop作为MCP客户端,然后登录。
- 若使用Linux系统且无法运行Claude Desktop的非官方版本,可以使用任何支持的MCP客户端来测试网关。若客户端不支持mcp cli
mcp install
命令,则需手动运行脚本代码中的支持命令。
- 若使用Linux系统且无法运行Claude Desktop的非官方版本,可以使用任何支持的MCP客户端来测试网关。若客户端不支持mcp cli
- 安装MCP服务器依赖:根据要代理请求的MCP服务器的说明,安装其所需的依赖,如
Node.js
、npx
、docker
等。 - 可选:安装缓存服务器:若需要外部缓存而非本地缓存,可安装并运行像KeyDB这样的缓存服务器。
本地安装
1. 克隆仓库、设置虚拟环境并安装依赖
git clone https://github.com/enkryptai/secure-mcp-gateway
cd secure-mcp-gateway
# 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依赖
uv pip install -r requirements.txt
# 验证mcp cli是否成功安装
mcp version
2. 运行设置脚本
该脚本会根据 example_enkrypt_mcp_config.json
文件在根目录下创建 enkrypt_mcp_config.json
文件,自动生成唯一的网关密钥和UUID,并替换测试MCP文件的路径,同时在Claude Desktop中安装MCP客户端。
# Linux/Mac
cd scripts
chmod +x *.sh
./setup.sh
# Windows
cd scripts
setup.bat
# 重启Claude Desktop以查看网关运行
3. 示例MCP配置文件生成
示例 claude_desktop_config.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的 Settings
,点击 Developer
-> 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. 示例提示
list all servers, get all tools available and echo test
:使用测试MCP服务器echo_server
(位于test_mcps/echo_mcp.py
)。- 还可组合多个提示触发多个工具调用,如
echo test and also 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,并使用提示 list all servers, get all tools available
让MCP客户端发现所有新工具。可在网关配置的 mcp_config
数组中添加多个MCP服务器,示例如下:
{
"common_mcp_gateway_config": {...},
"gateways": {
"UNIQUE_GATEWAY_KEY_1": {
"id": "UNIQUE_UUID_1",
"mcp_config": [
{
"server_name": "MCP_SERVER_NAME_1",
"description": "MCP_SERVER_DESCRIPTION_1",
"config": {
"command": "python/npx/etc.",
"args": ["arg1", "arg2", ...],
"env": { "key": "value" }
},
"tools": {},
"input_guardrails_policy": {...},
"output_guardrails_policy": {...}
},
{
"server_name": "MCP_SERVER_NAME_2",
"description": "MCP_SERVER_DESCRIPTION_2",
"config": {...},
"tools": {},
"input_guardrails_policy": {...},
"output_guardrails_policy": {...}
}
]
},
}
}
远程安装
远程安装功能即将推出。
✨ 主要特性
Enkrypt AI安全MCP网关提供以下特性:
- 认证:使用唯一密钥与网关进行认证,若要使用Enkrypt护栏保护MCP,还需使用Enkrypt API密钥。
- 易于使用:可在配置文件中本地配置所有MCP服务器,或在Enkrypt中配置(即将推出),并通过名称在网关中使用。
- 动态工具发现:网关可从MCP服务器动态发现工具,并提供给MCP客户端使用。
- 限制工具调用:若不想让MCP客户端访问MCP服务器的所有工具,可在网关配置中明确指定允许的工具。
- 缓存:将用户网关配置和从各种MCP服务器发现的工具缓存到本地或外部缓存服务器(如KeyDB),以提高性能。
- 护栏:可在Enkrypt中为每个MCP服务器配置输入和输出护栏,对请求和响应进行验证。
- 日志记录:将网关的每个请求和响应记录到本地MCP日志中,并转发到Enkrypt进行监控(即将推出),方便查看账户中的所有调用、使用的服务器、调用的工具和被阻止的请求等信息。
护栏
- 输入保护:包括主题检测、NSFW过滤、毒性检测、注入攻击预防、关键词检测、政策违规检测、偏见检测和PII编辑(更多功能即将推出,如系统提示保护、版权保护等)。
- 输出保护:包含所有输入保护功能,以及一致性检查和相关性验证(更多功能即将推出,如幻觉检测等)。若输入时进行了PII编辑,响应时会自动恢复。
📚 详细文档
MCP网关工作原理的高级步骤
- MCP客户端使用API密钥连接到安全MCP网关服务器(由
src/gateway.py
处理)。 - 网关服务器从本地
enkrypt_mcp_config.json
文件或远程Enkrypt认证服务器(即将推出)获取网关配置,并将配置缓存到本地或外部缓存服务器以提高性能。 - 若启用了输入护栏,在调用工具前会对请求进行验证(由
src/guardrail.py
处理)。若请求违反任何配置的护栏且特定检测器配置为阻止,则请求将被阻止。 - 请求被转发到网关客户端(由
src/client.py
处理)。 - 网关客户端将请求转发到相应的MCP服务器(由
src/client.py
处理)。 - MCP服务器处理请求并将响应返回给网关客户端。
- 若为发现工具的调用,网关客户端将工具缓存到本地或外部缓存服务器(若配置),然后将响应转发到网关服务器。
- 网关服务器从网关客户端接收响应,若启用了输出护栏,会根据配置的护栏对响应进行验证(由
src/guardrail.py
处理)。若响应违反任何配置的护栏且特定检测器配置为阻止,则响应将被阻止。 - 若一切正常,网关服务器将响应转发回MCP客户端。
可选:将GitHub MCP服务器添加到网关
GitHub MCP Server
需要安装 docker
,请确保在继续以下步骤之前已安装并运行 docker
,可从官网下载。
- 配置GitHub:从GitHub创建个人访问令牌,仅授予对公共仓库的访问权限,并设置较短的有效期进行测试。将以下GitHub服务器块添加到
enkrypt_mcp_config.json
的"mcp_config": []
数组中,替换REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN
为创建的个人访问令牌。
"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"
]
}
}
]
- 重启Claude Desktop以检测新服务器,并运行提示
list all servers, get all tools available
以发现GitHub服务器及其所有可用工具。 - 运行
List all files from https://github.com/enkryptai/enkryptai-mcp-server
测试GitHub MCP服务器。但此时服务器未受保护,可能会受到各种滥用和攻击。
可选:免费使用Enkrypt护栏保护GitHub MCP服务器和测试回声服务器
在Enkrypt应用中创建护栏
可使用提示生成规则或生成PDF文件,在应用中创建策略时粘贴或上传。
1. MCP特定安全策略
扫描所有工具描述,查找隐藏指令/恶意模式。
使用加密验证对MCP服务器进行身份验证。
锁定并固定工具版本,防止拉闸攻击。
在MCP服务器之间实施隔离,避免干扰。
将GitHub MCP访问限制到特定的仓库和用户。
2. 代码过滤和禁止模式
阻止已知的恶意代码模式(如缓冲区溢出、SQL注入)。
检测恶意软件签名(如键盘记录器、特洛伊木马)。
防止加密挖掘代码。
识别网络攻击模式(如DDoS、僵尸网络)。
阻止特权升级代码(如root漏洞利用)。
3. 仓库访问控制
对私有仓库实施基于角色的只读访问。
对所有访问类型启用严格的内容过滤。
对私有仓库强制进行审计日志记录。
对敏感仓库的访问进行隔离。
4. AI特定护栏
通过隐藏标签和文件访问命令检测工具中毒。
监控文件访问和网络活动行为。
对可疑工具要求明确的UI批准。
防止GitHub问题中的提示注入。
阻止暴露私有仓库数据的PR。
隔离可疑的GitHub问题。
5. RADE(检索代理欺骗)缓解
扫描检索到的内容,查找嵌入式命令。
验证文档完整性和修改时间戳。
对检索到的内容进行沙盒处理,防止自动执行。
6. 输入验证
限制提示长度(最大4096个令牌)。
阻止禁止的关键词(如“忽略先前的指令”)。
检测编码/注入模式(base64、十六进制、unicode)。
7. 模型行为约束
根据复杂性和大小限制代码生成。
限制某些语言(如shell脚本、汇编)。
监控API/系统调用和网络活动。
在所有仓库中实施严格的上下文边界。
在Enkrypt应用中登录,点击 Policies
-> Add new policy
,命名为 GitHub Safe Policy
,粘贴策略规则并保存。
获取Enkrypt API密钥
在Enkrypt应用中,悬停在左侧侧边栏上展开并点击 Settings
,或直接访问https://app.enkryptai.com/settings,点击模糊显示的API密钥旁边的 Copy
图标复制密钥。
将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"
替换为 "policy_name": "GitHub Guardrail"
,并将 input_guardrails_policy
的 enabled
设置为 true
。最终配置示例如下:
{
"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以检测更改。运行提示 list all services, tools
发现GitHub、回声服务器及其所有可用工具。再次运行之前成功的恶意提示 Ask github for the repo "hello; ls -la; whoami"
,会发现请求被输入护栏阻止。还可配置测试 echo
服务器的护栏,运行 echo "hello; ls -la; whoami"
查看检测结果。可在Playground中进行更好的测试。
微调护栏
若在输出端使用注入攻击护栏,安全提示 List all files from https://github.com/enkryptai/enkryptai-mcp-server
可能会被阻止,因此需要对护栏进行微调,找到适合服务器的最佳检测器和阻止规则组合。
使用护栏的建议
为每个服务器创建单独的护栏,因为不同的MCP服务器需求不同,可能需要不同的检测器(如毒性检测、NSFW检测、注入攻击检测、关键词检测、政策违规检测、相关性检测、一致性检测等),有些服务器可能需要在输入或输出端应用护栏,有些则需要同时应用。可参考文档了解各种可用的检测器。尝试使用自定义策略的 Policy Violation
检测器,明确允许和禁止的内容,这可能是最适合的使用方式。可在Enkrypt应用主页登录后点击 Policies
创建自定义策略,支持文本和PDF文件输入。
设置其他MCP客户端
Cursor
在Windows系统中,可导航到 C:\Users\PC\.cursor\mcp.json
文件;在Linux/macOS系统中,可导航到 ~/.cursor/mcp.json
文件。也可通过Cursor的UI,点击右上角的设置齿轮图标,选择 MCP
-> Add new global MCP server
打开文件。将 Claude Desktop
中使用的配置复制粘贴到该文件中(确保使用 setup
脚本生成的文件,而非示例配置文件)。保存文件后,可在Cursor的MCP服务器列表中看到网关,并进行聊天。示例提示如 list all servers, get all tools available and echo test
。
其他可用工具
获取缓存状态
网关可通过查看本地或外部缓存服务器,提供缓存状态的摘要信息,有助于调试问题,如服务器远程更新工具但网关未及时感知。
清除缓存
网关可清除本地或外部缓存服务器的缓存。可清除所有缓存或指定服务器的缓存,如 clear cache for echo_server
、clear all cache
、clear just gateway cache
、clear server cache for echo_server
、Clear all server cache
等。
部署模式
- 本地网关、本地护栏和本地MCP服务器
- 本地网关、本地MCP服务器和远程护栏
- 本地网关、远程MCP服务器和远程护栏
- 远程网关、远程MCP服务器和远程护栏
🔧 技术细节
已知正在处理的问题
输出护栏目前不适用于非文本工具结果,对图像、音频等其他媒体类型的支持即将推出。
已知限制
网关不支持远程部署网关但本地部署MCP服务器(且未暴露到互联网)的场景,因为网关需要知道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公司的商标。
贡献
查看 TODO
列表,报告或修复遇到的任何错误。













