什麼是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
列表,報告或修復遇到的任何錯誤。













