Skip to main content
Glama
wxsh-hub

mcp-gateway

by wxsh-hub

MCP Gateway

Безопасный промежуточный слой экосистемы MCP — защитный барьер между LLM и серверами инструментов

License: MIT Python 3.10+

Какую проблему это решает?

Когда LLM Agent вызывает внешние инструменты через протокол MCP, существуют три ключевых риска:

  1. Утечка учётных данных — ответы инструментов могут содержать конфиденциальную информацию, такую как API Key, Token, которая напрямую попадает в контекст LLM

  2. Утечка личных данных — личная информация пользователя (имя, ID-номер, номер банковской карты) может передаваться в цепочке вызовов инструментов

  3. Вредоносная инъекция инструментов — в описаниях инструментов могут быть скрыты инструкции 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

AKIA...

GitHub Token

ghp_..., gho_...

Azure Client Secret

связанные с *.azure.com

GCP API Key

AIza...

JWT Token

eyJ...

HuggingFace Token

hf_...

GitLab Session Cookie

_gitlab_session=...

Slack App Token

xapp-...

Microsoft Teams Webhook

*.webhook.office.com

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 — путь к базе данных SQLite

  • XETRACK_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 два стандартизированных инструмента:

Инструмент

Функция

get_metadata

Получает список возможностей всех зарегистрированных MCP Server, помогая LLM выбрать подходящий инструмент

run_tool

Выполняет произвольные вызовы 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

Лицензия

MIT

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enforces 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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 npm
    MIT