Skip to main content
Glama
egoring

sql-guard-mcp

by egoring

sql-guard-mcp

CI

SQL только для чтения для ИИ-агентов, с многоуровневыми защитными механизмами.

Предоставление LLM-агенту прямого доступа к базе данных — это выстрел себе в ногу. Этот MCP-сервер открывает базу данных SQLite для агентов через четыре независимых уровня защиты, так что худшее, что может сделать агент, — это читать слишком медленно, и даже это будет прервано.

한국어 문서: README.ko.md

Слои защиты

Слой

Что предотвращает

Как

Проверка запросов

Запись, изменение схемы, инъекции через составные запросы

Только одиночные выражения SELECT/WITH; сканирование запрещённых ключевых слов (INSERT, DROP, PRAGMA, ATTACH, ...); отклонение многосоставных запросов

Белый список таблиц

Чтение чувствительных таблиц (PII, учётные данные)

Идентификаторы FROM/JOIN проверяются по SQLGUARD_ALLOWED_TABLES; также фильтрует list_tables/describe_table

Ограничение строк

Затопление контекстного окна

Каждый запрос оборачивается в подзапрос с серверным LIMIT — указанный пользователем LIMIT 999999 не может его переопределить; усечение помечается

Ограничение выполнения

Вышедшие из-под контроля запросы (декартовы соединения)

Сторожевой таймер прогресса SQLite прерывает выполнение после N шагов виртуальной машины с сообщением о дальнейших действиях

Режим только для чтения на уровне ОС

Отказ всех предыдущих мер

Подключение открывается с mode=ro — последний рубеж обороны, обеспечивается самой SQLite

Принцип дизайна взят из практики создания защитных механизмов принятия решений для продакшн-LLM-агента: не доверяйте модели быть осторожной — сделайте неосторожность невозможной, и пусть каждое сообщение об отказе подсказывает агенту, что делать вместо этого.

Related MCP server: sqlite-analyst

Инструменты

  • sql_list_tables — видимые таблицы (применён белый список)

  • sql_describe_table — столбцы, типы, количество строк

  • sql_query — защищённый запрос только для чтения

  • sql_guard_status — текущая конфигурация защит (прозрачность для отладки)

Демонстрация

Подключено к Claude Desktop, запрос к встроенной демо-БД рекламной кампании — и отказ на запрос удаления:

демо sql-guard-mcp: дан ответ на запрос о рейтинге CTR, запрос DELETE отклонён

Агент свободно исследует и агрегирует («У какой активной кампании лучший CTR?»), но когда его просят очистить таблицу campaigns, защита отклоняет запрос, и агент объясняет почему — режим только для чтения по замыслу, обеспечен кодом, а не промптом.

Установка

Никаких зависимостей, кроме MCP SDK, — синтетическая демо-БД рекламных кампаний включена в комплект и автоматически создаётся при первом запуске.

pip install -e .

# optional configuration
export SQLGUARD_DB="/path/to/your.db"                      # default: bundled demo
export SQLGUARD_ALLOWED_TABLES="campaigns,daily_stats"     # default: all tables
export SQLGUARD_MAX_ROWS="200"

Claude Desktop

{
  "mcpServers": {
    "sql-guard-mcp": {
      "command": "sql-guard-mcp",
      "env": { "SQLGUARD_ALLOWED_TABLES": "campaigns,daily_stats" }
    }
  }
}

Затем спросите: «У какой активной кампании был лучший CTR на прошлой неделе?» — агент исследует схему и выполняет запросы в рамках ограничений. Попробуйте попросить его что-нибудь удалить; прочитайте отказ.

Тесты

pip install -e ".[dev]"
pytest   # guard validation + execution enforcement, no external DB needed

Тесты включают состязательные случаи: составные запросы, записи с префиксом SELECT, обход белого списка через JOIN, попытки переопределения через указанный пользователем LIMIT и вышедшее из-под контроля декартово соединение, прерванное сторожевым таймером шагов виртуальной машины.

Лицензия

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to explore and query SQLite databases through read-only tools, with defense-in-depth sandboxing preventing any data modifications.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to safely explore and query a SQLite database in read-only mode, allowing them to inspect schema and run analytical SQL queries without risking data modification.
    3
    -