DataGate
📘 DataGate — Безопасный AI-готовый шлюз данных
DataGate — это headless-шлюз, безопасный и управляемый политиками, который предоставляет доступ к базам данных для AI-инструментов (например, GitHub Copilot) контролируемым, предсказуемым образом и без свободного SQL.
DataGate выступает в роли посредника между LLM и реальной базой данных: он не допускает прямого доступа к базе данных, не предоставляет произвольные запросы и не разрешает операции записи. Он спроектирован как read-only, schema-aware, multi-database и полностью LLM-safe.
🎯 Основные цели
Безопасный доступ к данным — гарантированный read-only через роли БД, policy engine и контролируемый query builder.
Абстракция базы данных — модель не генерирует SQL: DataGate строит безопасные и проверенные запросы.
Multi-database — может подключаться к различным базам данных разных приложений, как headless DBeaver.
Policy engine — детальный контроль над таблицами, колонками, фильтрами, лимитами и сложностью операций.
Schema awareness — автоматическая загрузка схемы базы данных и применение правил безопасности.
Реальная конкурентность — асинхронная и безопасная архитектура, идеальна для параллельных запросов от Copilot.
Метрики и аудит — отслеживание запросов, времени, ошибок и лимитов для отладки и наблюдаемости.
Профилирование производительности — профиль задержки in-process (min/avg/p50/p95/p99/max) для эволюционного мониторинга производительности.
Абстрактный бэкенд — общий read-only trait для бэкендов баз данных с конкретными реализациями для PostgreSQL, MySQL/MariaDB и SQLite.
Related MCP server: MCP DB Gateway
🧩 Основные функции
Контролируемый query builder — семантические операции, такие как
select,search,aggregate, с автоматической валидацией.Типизированный MCP
select— JSON-контракт, read-only выполнение с JSON-строками, политики, аудит и санитизированные ошибки; транспорт MCP остаётся следующим шагом.Типизированный MCP
search— семантический поиск сILIKEпо разрешённым колонкам, параметризованные запросы, политики/rate-limit/метрики/аудит и ограничение вывода на стороне сервера.Типизированный MCP
aggregate—count,sum,avg,minиmaxпо разрешённым колонкам, с параметризованными фильтрами и без поддержки свободного SQL илиGROUP BY.Версионированное MCP API — стабильный дескриптор для версии API и доступных инструментов.
Транспорт MCP stdio — handshake, обнаружение и вызовы
select,searchиaggregateчерез policy-safe путь.Расширенные фильтры — поддержка шаблонов (
LIKE/ILIKE), диапазонов (BETWEEN) и полнотекстового поиска (to_tsvector+plainto_tsquery), всегда параметризованных и проверяемых политиками.Контролируемый каталог схемы — интроспекция с фильтрацией по политикам таблиц, представлений, индексов, ограничений (PK/FK/UNIQUE/CHECK/EXCLUSION), триггеров, функций, процедур и последовательностей; определения DDL только когда безопасно.
Rate limiting — защита от циклов модели и слишком тяжёлых запросов.
Лимиты вывода — ответы всегда ограничены, безопасны и структурированы.
Детерминированные ошибки — никакой утечки схемы, никакого раскрытия SQL, никаких stack trace.
Структурированные ошибки — стабильная обёртка с кодом, общим сообщением и указанием
retryable.Внешняя конфигурация — TOML-файлы для политик, лимитов и именованных профилей (dev/staging/prod).
Усиление ввода MCP — валидация
request_id, лимиты на текстовые полезные нагрузки и кардинальность для снижения поверхностей DoS/злоупотребления вводом.Динамическая политика — активная политика может быть атомарно заменена, в том числе перезагружена из TOML, без пересоздания MCP-инструментов.
DataGate не предоставляет MCP-функцию свободного SQL-запроса: агент отправляет исключительно структурированные параметры, проверяемые по схеме и политике перед построением параметризованного запроса.
Публичные ошибки используют коды invalid_request, policy_denied, backend_unavailable и internal_error. SQL, stack trace, пароли, значения фильтров и имена неавторизованных объектов не пересекают границу MCP.
Конфигурация PostgreSQL
Учётные данные PostgreSQL не сохраняются в файлах конфигурации или в коде. Сервис читает подключение из окружения времени выполнения:
компактный режим:
DB_URLрежим компонентов:
DB_HOST,DB_PORT(по умолчанию5432),DB_USER,DB_PASSWORD,DB_NAMEопции PostgreSQL:
DB_OPTIONS, в форматеkey=value&key=valueпул:
DB_MAX_CONNECTIONSиDB_ACQUIRE_TIMEOUT_SECS
Конфигурация SQLite
Для использования SQLite в режиме read-only настройте один из двух вариантов:
полный URL:
SQLITE_URLпуть к файлу:
SQLITE_PATH
Опции пула SQLite:
SQLITE_MAX_CONNECTIONSSQLITE_ACQUIRE_TIMEOUT_SECS
Конфигурация MySQL/MariaDB
Для использования MySQL или MariaDB в режиме read-only настройте один из двух вариантов:
полный URL:
MYSQL_URLрежим компонентов:
MYSQL_HOST,MYSQL_PORT(по умолчанию3306),MYSQL_USER,MYSQL_PASSWORD,MYSQL_DATABASE
Опции пула MySQL/MariaDB:
MYSQL_MAX_CONNECTIONSMYSQL_ACQUIRE_TIMEOUT_SECS
Выбор multi-database бэкенда
Чтобы явно выбрать, какой бэкенд активировать, установите DATAGATE_BACKEND:
auto(по умолчанию): приоритетpostgres->mysql->sqlitepostgresmysql(илиmariadb)sqlite
Когда DATAGATE_BACKEND установлен на конкретный бэкенд, DataGate требует соответствующую конфигурацию окружения; в противном случае завершается с явной ошибкой.
Приоритет бэкенда при загрузке:
PostgreSQL
MySQL/MariaDB
SQLite
Активируется первый настроенный бэкенд из списка.
Необязательный серверный rate limiting использует RATE_LIMIT_REQUESTS и RATE_LIMIT_WINDOW_SECS. Лимит применяется к request_id до политики, query builder и базы данных; запросы сверх порога получают rate_limited и не генерируют SQL.
Query builder также применяет максимальный бюджет, настраиваемый в политике через max_query_complexity: каждая колонка стоит 1, каждый фильтр стоит 2. Запросы сверх бюджета отклоняются до генерации SQL.
Ответ select также подчиняется max_output_bytes в политике: если итоговая JSON-полезная нагрузка превышает лимит, DataGate отклоняет запрос с ошибкой политики, не раскрывая SQL или внутренние детали.
Слой метрик также регистрирует счётчики и задержку на стороне сервера для инструмента select: всего запросов/принято/отклонено, ошибки бэкенда, p95 задержка в памяти и снимок пула PostgreSQL (size, idle).
Логирование приложения поддерживает два формата:
LOG_FORMAT=pretty(по умолчанию)LOG_FORMAT=json(структурированный, подходит для сборщиков логов)
Минимальный уровень логов можно настроить с помощью LOG_LEVEL (trace|debug|info|warn|error) или через RUST_LOG.
Если DB_URL присутствует, он имеет приоритет над компонентами. Роль PostgreSQL должна иметь только права на чтение; кроме того, каждое подключение устанавливает default_transaction_read_only = on.
Активный профиль выбирается с помощью profile = "dev" и может определять политику в [profiles.dev.policy]. Если именованные профили отсутствуют, поддерживается устаревшая форма [policy]. Объявленный, но несуществующий профиль активирует политику deny-all, не запуская операции с базой данных.
Опубликованные релизы включают бинарники для Linux x64/ARM64, Windows x64/ARM64 и macOS Intel/Apple Silicon, с архивами, названными по платформе, и файлами SHA256SUMS-* для проверки артефактов.
🛡️ Почему DataGate?
LLM не должны напрямую общаться с базами данных. Нужен безопасный, предсказуемый, контролируемый, аудируемый, расширяемый и мульти-приложенческий слой. DataGate — это такой слой.
🔧 Технологии
Язык: Rust
Базы данных: PostgreSQL, MySQL/MariaDB и SQLite (сегодня), другие БД завтра
Протокол: MCP (Model Context Protocol)
Архитектура: асинхронная, управляемая политиками, schema-aware
🚀 Статус проекта
DataGate находится на стадии проектирования. Репозиторий содержит начальную структуру, документацию и техническую дорожную карту.
🧪 Тесты интеграции multi-backend
Тесты интеграции бэкендов используют необязательные переменные окружения:
DATAGATE_TEST_POSTGRES_URLDATAGATE_TEST_MYSQL_URL
Когда переменная присутствует, соответствующий тест проверяет, что read-only бэкенд выполняет контролируемые SELECT и отклоняет операторы записи. Если переменная отсутствует, тест пропускается без ошибки.
Полная документация:
Architecture.md — принципы проектирования и слоистая архитектура
ROADMAP.md — подробная дорожная карта к версии 1.0
docs/configuration.md — quick start, бэкенды, политики и операции
docs/benchmarks.md — локальные бенчмарки SQLite и реального PostgreSQL
docs/hardening.md — финальный чек-лист усиления для границы MCP/база данных
docs/http-transport-decision.md — решение по безопасности для удалённого MCP HTTP транспорта
docs/editor-registry-evaluation.md — оценка требований MCP Registry и кросс-редакторных клиентов
docs/packaging.md — каналы упаковки и канонический источник артефактов
docs/postgres-mcp-comparison.md — сравнение с другими MCP-серверами PostgreSQL
docs/registry-publication.md — стратегия MCP Registry, кросс-редакторная установка и именованные подключения
docs/mcp-registry-metadata.json — кандидат метаданных для реестров/галерей MCP
docs/release-candidate.md — критерии и ворота кандидата 1.0
docs/mcp-tools.md — внутренние контракты и правила MCP-инструментов
CONTRIBUTING.md — правила внесения вклада, коммитов и веток
SECURITY.md — политика безопасности и сообщение об уязвимостях
Для запуска из VS Code с MCP:
локальный транспорт по умолчанию —
stdioшаблоны
mcp.jsonдля локального stdio находятся в docs/mcp-tools.md и docs/configuration.mdудалённый HTTP не входит в дефолт 1.0 и требует отдельного решения по безопасности
📍 Дорожная карта (кратко)
Определение policy engine
Реализация контролируемого query builder (параметризованный select)
Гарантированное read-only подключение
Автоматическая schema awareness (внутренний каталог PostgreSQL)
Основа аудит-лога (JSONL через
AUDIT_LOG_PATH)MCP-инструменты (
select,search,aggregate)Поддержка multi-database (PostgreSQL, MySQL/MariaDB, SQLite)
Начальный enterprise-слой (наблюдаемость, усиление, динамическая политика)
Стабильность MCP API (версионированный дескриптор; транспорт stdio)
Транспорт MCP stdio
Бенчмарки
Финальное усиление
Кандидат версии 1.0
📄 Лицензия
This server cannot be deployed
Maintenance
Related MCP Connectors
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
One governed MCP endpoint for 40+ business systems. Read-only, source-cited answers.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.101 npm3MIT

MCP DB Gatewayofficial
AlicenseNot gradedqualityBmaintenanceProvides governed, read-only PostgreSQL access for AI agents via MCP. Enforces schema/table allowlists, query limits, and audit events.1MIT- AlicenseNot gradedqualityBmaintenanceProvides read-only, guarded access to business databases via MCP. Enables natural language querying with built-in security barriers like table allowlists, PII masking, and audit logging.MIT
- FlicenseNot gradedqualityBmaintenanceEnables secure, read-only querying of only predefined logical database views through MCP tools and a REST API, using validated SQL and semantic view metadata.-