schemagate — доступ к таблицам для text-to-sql

schemagate

Python-библиотека и MCP-сервер отдают модели только нужные вопросу и разрешенные роли таблицы, сокращая схему в промпте

  • 136 ★ репозитория
  • Последний коммит
  • Apache-2.0
MCP-сервер

Широкий доступ

Почему такой уровень

  • `run_query` выполняет чтения в вашей базе и возвращает строки модели
  • Без OAuth роль берется из вызова клиента, и любой с доступом к серверу может выдать себя за другую роль
Все причины и проверки

ashishsinha1602/schemagate

Установка

В терминале, через SkillFoxx CLI

npx skillfoxx add mcp/schemagate

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • `run_query` выполняет чтения в вашей базе и возвращает строки модели
  • Без OAuth роль берется из вызова клиента, и любой с доступом к серверу может выдать себя за другую роль

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

schemagate стоит перед моделью, которая пишет SQL. Вместо полной схемы базы в промпт идут DDL только тех таблиц, что подходят вопросу и доступны вызывающему по его роли. Недоступная таблица не попадает в запрос вовсе, поэтому ее не достать переформулировкой вопроса и нечего вычищать из ответа. Установка идет через `pip install schemagate`, а демонстрация без базы и ключа запускается командой `schemagate demo "salary by employee"`. Поддерживаются PostgreSQL, Oracle, MySQL, SQL Server и SQLite. Команда `schemagate select` печатает выбранные таблицы, с флагом `--answer` сразу пишет SQL, `schemagate studio` дает то же в виде страницы. MCP-сервер `schemagate-mcp` отдает агенту девять инструментов только на чтение: `select_schema`, `list_objects`, `describe_object`, `run_query`, `semantic_query`, `answer`, `deep_answer`, `refresh_catalog` и `health`. Каждое решение пишется в журнал аудита.

Для кого. Инженерам данных и командам, которые строят text-to-sql для базы с сотнями таблиц и ролями доступа, и хотят экономить токены и не показывать модели лишнего.

Подходит, если

  • Схема на тысячи объектов съедает почти весь промпт, а на вопрос нужны три таблицы
  • Аналитик из отдела продаж не должен видеть таблицу зарплат, даже если спросит о ней прямо
  • Защита `row-level security` в базе скрывает строки, и модель отвечает «записей нет» вместо «доступа нет»
  • Агент в Cursor или Claude Desktop пишет запросы к вашей базе, и вы хотите ограничить ему обзор схемы

Не подходит, если

  • База маленькая, и вся схема умещается в промпт без потерь: тут выигрыш около девяти процентов
  • Нужна надежная защита от утечек: сервер доверяет роли из вызова и служит ограничителем обзора, а не замком, пока не включен OAuth
  • Требуется только текст-в-SQL без разграничения доступа: достаточно любого более простого генератора

Пример запроса к агенту

Через schemagate выбери таблицы для вопроса «выручка по месяцам» для роли `finance` и напиши запрос к базе приложения.

MCP

Транспорт
stdio, http
Авторизация
не нужна

Переменные окружения

SCHEMAGATE_DATABASE_URL секрет
Адрес подключения к базе, пароль держите здесь, не в аргументах.
SCHEMAGATE_MCP_OAUTH_ISSUER
Издатель токенов для включения OAuth по HTTP.

Ограничения

По умолчанию MCP-сервер доверяет `principal` и `roles`, которые передает клиент, и это ограничитель обзора, а не защита: через HTTP его надо ставить за аутентификацию или включать OAuth (переменные `SCHEMAGATE_MCP_OAUTH_ISSUER` и `SCHEMAGATE_MCP_OAUTH_AUDIENCE`). Инструмент `run_query` возвращает строки, то есть данные.

Выбор таблиц может пропустить нужную: на хранилищах Spider 2.0 все нужные таблицы попали в выборку в 86,7 % вопросов. Для работы с базой нужен драйвер своего диалекта, например `schemagate[mcp,postgres]`.

Как отключить. Удалите сервер schemagate из конфигурации клиента командой `claude mcp remove schemagate` или правкой JSON. Файлы аудита и памяти, если включали `SCHEMAGATE_AUDIT_LOG` и `SCHEMAGATE_MEMORY`, лежат в `~/.schemagate`.

Частые вопросы

Как подключить schemagate к Claude Code?

Командой `claude mcp add schemagate -- uvx --from "schemagate[mcp]" schemagate-mcp --url demo` для встроенной схемы. Для своей базы добавьте драйвер, например `schemagate[mcp,postgres]`, и задайте `SCHEMAGATE_DATABASE_URL` в `env`.

Чем это лучше `row-level security`?

`Row-level security` скрывает строки, но модель все равно видит запретную таблицу и пишет к ней запрос, а пользователь получает «записей нет». schemagate не пускает такую таблицу в промпт.

Куда писать пароль к базе?

В переменную `SCHEMAGATE_DATABASE_URL` в `env`, а не в аргумент `--url`: аргументы команд видны всем процессам на машине.

Можно ли попробовать без базы?

Да: `schemagate demo "salary by employee"` работает на встроенной схеме без базы и ключа, а в браузере есть демонстрация на странице проекта.

Какие базы данных поддерживаются?

PostgreSQL, Oracle, MySQL, SQL Server и SQLite. Для каждой, кроме SQLite, ставят свой драйвер как дополнение к пакету, например `postgres`, `mysql`, `mssql` или `oracle`.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы
Официальный

Text2SQL-сервер FalkorDB: агент задает вопрос к базе обычным языком, а граф схемы помогает собрать верный SQL

MCP-серверШирокий доступ1,1 тыс.Звезды репозитория

MCP-сервер text-to-SQL: агент спрашивает базу словами, получает SQL и трассу ответа, а при нехватке данных отказ с причиной.

MCP-серверРасширенный доступ81Звезды репозитория

MCP-сервер на Python для работы с MySQL: список таблиц, чтение данных, выполнение SQL и разбор схемы через контролируемый интерфейс

MCP-серверШирокий доступ1,4 тыс.Звезды репозитория
Официальный

Десктопное рабочее место для SQL с встроенным MCP-сервером: агент читает схему и выполняет запросы в том же клиенте, где работаете вы

MCP-серверШирокий доступ5,5 тыс.Звезды репозитория
Официальный

MCP-сервер и скиллы от TigerData, с которыми агент пишет схемы и запросы PostgreSQL по актуальной документации и практикам

MCP-серверРасширенный доступ1,9 тыс.Звезды репозитория

vi-sql — терминальный клиент для SQL-баз со встроенным MCP-сервером: агент видит схему и пишет запросы прямо в ваш редактор

MCP-серверРасширенный доступ213Звезды репозитория

Коротко о README

README показывает проблему text-to-sql с полной схемой, демонстрацию с двумя ролями, замеры экономии токенов на публичных схемах, режимы CLI, Studio и MCP, а в конце предупреждает, что сервер доверяет переданной роли без OAuth.

Бейдж для README

Сообщить о проблеме