mcp-gateway
MCP Gateway
Безопасный промежуточный слой экосистемы MCP — защитный барьер между LLM и серверами инструментов
Какую проблему это решает?
Когда LLM Agent вызывает внешние инструменты через протокол MCP, существуют три ключевых риска:
Утечка учётных данных — ответы инструментов могут содержать конфиденциальную информацию, такую как API Key, Token, которая напрямую попадает в контекст LLM
Утечка личных данных — личная информация пользователя (имя, ID-номер, номер банковской карты) может передаваться в цепочке вызовов инструментов
Вредоносная инъекция инструментов — в описаниях инструментов могут быть скрыты инструкции prompt injection, побуждающие агента выполнять опасные действия
MCP Gateway выступает в качестве прокси-слоя, перехватывающего весь трафик и выполняющего безопасную фильтрацию до того, как запросы/ответы достигнут агента.
Related MCP server: @guardbee/mcp-security-proxy
Обзор архитектуры
┌─────────────┐ ┌──────────────────────────────────┐ ┌─────────────┐
│ │ │ MCP Gateway │ │ │
│ LLM Agent │ ───► │ ┌──────────┐ ┌──────────────┐ │ ───► │ MCP Server │
│ │ │ │ Sanitize │ │ Plugin │ │ │ (tools) │
│ │ ◄─── │ │ Request │ │ Pipeline │ │ ◄─── │ │
└─────────────┘ │ └──────────┘ └──────────────┘ │ └─────────────┘
│ ▲ │ │
│ │ ┌──────────▼──┐ │
│ │ │ Sanitize │ │
│ │ │ Response │ │
│ │ └─────────────┘ │
└──────────────────────────────────┘Основной процесс:
Направление запроса: Plugin Pipeline десенсибилизирует параметры (например, удаляет PII, фильтрует инъекционные инструкции)
Направление ответа: применяет маскирование токенов и фильтрацию конфиденциальной информации к возвращаемым значениям инструментов
Этап запуска: Security Scanner проводит оценку репутации всех настроенных MCP Server
Быстрый старт
Установка
git clone <your-repo-url>
cd mcp-gateway
pip install -e .Опциональные зависимости:
pip install -e .[presidio] # 启用 PII 检测(基于 Microsoft Presidio)Минимальная конфигурация
Создайте mcp.json в корне проекта:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}
}
}Запуск
# 启用基础 Token 掩码
mcp-gateway -p basic
# 启用 Token 掩码 + PII 检测
mcp-gateway -p basic -p presidio
# 调试模式
LOGLEVEL=DEBUG mcp-gateway -p basicИнтеграция с Cursor / Claude Desktop
{
"mcpServers": {
"mcp-gateway": {
"command": "mcp-gateway",
"args": [
"--mcp-json-path", "~/.cursor/mcp.json",
"-p", "basic",
"-p", "xetrack"
],
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}
}
}
}
}{
"mcpServers": {
"mcp-gateway": {
"command": "<python-path>",
"args": [
"-m", "mcp_gateway.server",
"--mcp-json-path", "<path-to-config>",
"-p", "basic"
],
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}
}
}
}
}Возможности защиты
Маскирование токенов (плагин basic)
Автоматически распознаёт и заменяет конфиденциальные учётные данные в ответах, поддерживает форматы ключей 12 основных облачных платформ и инструментов разработки:
Тип | Пример формата |
AWS Access Key |
|
GitHub Token |
|
Azure Client Secret | связанные с |
GCP API Key |
|
JWT Token |
|
HuggingFace Token |
|
GitLab Session Cookie |
|
Slack App Token |
|
Microsoft Teams Webhook |
|
mcp-gateway -p basicОбнаружение PII (плагин presidio)
На основе движка Microsoft Presidio автоматически распознаёт и анонимизирует персональные данные в тексте:
Номера кредитных карт, IP-адреса, электронная почта
Номера телефонов, идентификационные номера (SSN)
Дополнительные типы сущностей см. в документации Presidio
pip install -e .[presidio]
mcp-gateway -p presidioСканер безопасности (--scan)
Перед запуском проводит оценку репутации всех MCP Server и анализ описаний инструментов:
mcp-gateway --scan -p basicИзмерения сканирования:
Оценка репутации — вычисляет комплексный балл на основе данных GitHub (Star, Fork, активность Issue) и загрузок NPM
Сканирование описаний инструментов — обнаруживает скрытые инструкции prompt injection, ссылки на конфиденциальные пути файлов, инструкции опасных операций
Автоматическая блокировка — серверы с репутацией ниже порога (по умолчанию 30 баллов) помечаются как
blockedи не загружаются
Результаты сканирования записываются в файл конфигурации:
{
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
"blocked": "passed"
}
}
}Значения статуса: "passed" (безопасно) | "blocked" (заблокировано) | "skipped" (пропущено вручную) | null (не сканировано)
Трассировка вызовов
Плагин трассировки Xetrack
Записывает полный контекст всех вызовов инструментов, поддерживает запросы SQLite и DuckDB:
pip install xetrack
mcp-gateway -p xetrackКонфигурация через переменные окружения:
XETRACK_DB_PATH— путь к базе данных SQLiteXETRACK_LOGS_PATH— каталог файлов журналов
{
"mcpServers": {
"mcp-gateway": {
"command": "mcp-gateway",
"args": ["--mcp-json-path", "~/.cursor/mcp.json", "-p", "xetrack"],
"env": {
"XETRACK_DB_PATH": "tracing.db",
"XETRACK_LOGS_PATH": "logs/"
}
}
}
}Пример запроса:
from xetrack import Reader
df = Reader("tracing.db").to_df()-- DuckDB
INSTALL sqlite; LOAD sqlite; ATTACH 'tracing.db' (TYPE sqlite);
SELECT server_name, capability_name, content_text FROM db.events LIMIT 10;Прокси-инструменты
Gateway предоставляет LLM два стандартизированных инструмента:
Инструмент | Функция |
| Получает список возможностей всех зарегистрированных MCP Server, помогая LLM выбрать подходящий инструмент |
| Выполняет произвольные вызовы MCP-инструментов через Gateway с автоматической безопасной обработкой запросов/ответов |
Разработка плагинов
Система плагинов основана на базовом классе ABC + паттерне регистрации через декораторы:
from mcp_gateway.plugins.base import GuardrailPlugin
from mcp_gateway.plugins.manager import register_plugin
@register_plugin
class MyPlugin(GuardrailPlugin):
@property
def name(self) -> str:
return "my-plugin"
def process_request(self, context):
# 请求方向的处理逻辑
return context.arguments
def process_response(self, context, response):
# 响应方向的处理逻辑
return responseПлагины автоматически обнаруживаются и загружаются через PluginManager, поддерживается двусторонний перехват запросов/ответов.
Структура проекта
mcp_gateway/
├── __init__.py # 包入口
├── server.py # MCP Server 生命周期管理
├── gateway.py # 动态工具注册、CLI 参数解析
├── config.py # 配置文件加载
├── sanitizers.py # 请求/响应安全分发
├── plugins/
│ ├── base.py # Plugin ABC 基类
│ ├── manager.py # 插件发现、注册、Pipeline
│ ├── guardrails/
│ │ ├── basic.py # Token 掩码插件
│ │ └── presidio.py # PII 检测插件
│ └── tracing/
│ └── xetrack.py # 调用追踪插件
├── security_scanner/
│ ├── scanner.py # 扫描器主入口
│ ├── github_collector.py # GitHub API 数据采集
│ ├── npm_collector.py # NPM Registry 数据采集
│ ├── smithery_collector.py# Smithery 市场数据采集
│ ├── project_analyzer.py # 综合信誉评分算法
│ └── tool_poisoning_analyzer.py # 工具描述安全分析
└── tests/
├── test_sanitizers.py
├── test_tool_poisoning_analyzer.py
├── test_plugin_pipeline.py
└── test_config.pyЛицензия
This server cannot be deployed
Maintenance
Related MCP Connectors
Security & DLP proxy for MCP: tool-poisoning scans, PII redaction on tool args/results. Beta.
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
Real-time MCP & A2A prompt-injection, jailbreak, and tool-schema poisoning firewall for AI agents.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables safe use of any MCP server by proxying and live-scanning all tool requests and responses, blocking or redacting poison descriptions, indirect prompt injection, malicious arguments, and unauthorized destinations.-
- AlicenseNot gradedqualityFmaintenanceEnables transparent security for any MCP server by intercepting tool calls, blocking prompt injection attempts, masking PII in responses, and writing immutable audit logs.1,650 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnforces MCP security by proxying between AI agents and MCP servers, scanning tools and results for prompt injection, enforcing allow/deny policies, redacting sensitive arguments, and logging all traffic.MIT
- AlicenseNot gradedqualityCmaintenanceEnables secure, low-latency proxying of MCP tool calls by detecting and blocking malicious requests such as path traversals and command injections, while redacting leaked credentials.5 npmMIT