Skip to main content
Glama

QueryShield

Безопасный SQL-прокси между ИИ-агентами и корпоративными базами данных.

Агенты обращаются к единой конечной точке на обычном английском языке (или структурированном SQL). QueryShield:

  1. Переводит естественный язык в SQL через Claude с использованием кэширования промптов.

  2. Проверяет каждый запрос на уровне AST — разрешены только SELECT, никаких объединенных операторов, никаких запрещенных функций, обязателен LIMIT.

  3. Применяет безопасность на уровне строк для каждого агента: белые списки схем/таблиц и внедрение условий WHERE.

  4. Выполняет запрос к БД клиента и возвращает строки.

  5. Логирует каждую попытку в таблицу аудита, доступную только для добавления — только метаданные, никакого содержимого строк.

Агенты никогда не видят строки подключения.


Быстрый старт

pip install -r requirements.txt
cp .env.example .env
# Set ANTHROPIC_API_KEY, DATABASE_URL, VAULT_KEY (see below)

python -m queryshield.start

Сгенерируйте ключ Fernet для VAULT_KEY один раз и никогда не теряйте его:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Related MCP server: schemabrain

Сквозной поток (curl)

# 1) Boot a tenant. Returns the admin API key — copy it.
curl -X POST localhost:8000/v1/tenants?name=Acme

# 2) Register the customer DB. Connection string is encrypted at rest.
curl -X POST localhost:8000/v1/databases \
  -H 'X-Admin-Key: qs_...' \
  -H 'Content-Type: application/json' \
  -d '{
    "alias": "prod",
    "db_type": "postgresql",
    "connection_string": "postgresql://reader:secret@db.acme.internal:5432/app",
    "allowed_tables": ["users", "orders"]
  }'

# 3) Provision a scoped agent (different from admin) for your AI app.
curl -X POST localhost:8000/v1/agents \
  -H 'X-Admin-Key: qs_...' \
  -H 'Content-Type: application/json' \
  -d '{ "name": "reporting", "tenant_id": "<tenant>" }'

# 4) Set the agent's RLS policy.
curl -X POST localhost:8000/v1/policies \
  -H 'X-Admin-Key: qs_...' \
  -H 'Content-Type: application/json' \
  -d '{
    "agent_id": "<agent>",
    "database_alias": "prod",
    "allowed_tables": ["users", "orders"],
    "row_filters": { "users": "tenant_id = 42" }
  }'

# 5) The agent queries.
curl -X POST localhost:8000/v1/query \
  -H 'X-API-Key: qs_...' \
  -H 'Content-Type: application/json' \
  -d '{
    "database_alias": "prod",
    "query": "how many active users do we have?",
    "mode": "nl",
    "max_rows": 10
  }'

Интеграция с MCP

Указан в официальном реестре MCP как io.github.bch1212/queryshield.

Установите клиент:

pip install queryshield-mcp

Затем добавьте это в конфигурацию Claude Desktop / Cursor / агента:

{
  "queryshield": {
    "command": "queryshield-mcp",
    "env": { "QUERYSHIELD_API_KEY": "qs_..." }
  }
}

Исходный код автономного пакета PyPI находится в packages/queryshield-mcp/.

Интеграция с MCP (устаревшая)

Добавьте это в любой клиент с поддержкой MCP (Claude Desktop, Cursor, пользовательские агенты):

{
  "queryshield": {
    "command": "python",
    "args": ["-m", "queryshield.mcp_server"],
    "env": {
      "QUERYSHIELD_API_KEY": "qs_...",
      "QUERYSHIELD_BASE_URL": "https://api.queryshield.io"
    }
  }
}

Доступные инструменты:

  • query_database(database_alias, question, max_rows) — естественный язык

  • query_database_sql(database_alias, sql, max_rows) — готовый SELECT

  • get_audit_log(limit) — недавние попытки для вызывающего агента


Модель безопасности

Угроза

Защита

Агент создает DROP TABLE

AST sqlglot отклоняет всё, кроме SELECT

Агент добавляет ; и второй оператор

парсер отклоняет len(statements) > 1

Агент использует pg_sleep, xp_cmdshell, ...

черный список функций на уровне узлов AST

Агент читает таблицы вне своей области доступа

RLS схема + белый список таблиц

Агент читает строки других арендаторов

row_filters внедряются через AST .where()

Утечка строки подключения через трассировку стека

шифрование Fernet, никогда не возвращается в API

Аудит-лог становится вектором утечки данных

хранятся только метаданные — никогда строки

Ротация VAULT_KEY

повторное шифрование строк новым ключом (через скрипт)

safety.py — самый важный модуль. Каждая дополнительная проверка, которая туда добавляется, должна сопровождаться тестом в tests/test_safety.py.


Тарифы

Тариф

В месяц

Базы данных

Запросов / месяц

Примечания

Starter

$500

3

1,000,000

Pro

$1,500

10

10,000,000

экспорт аудита

Enterprise

$3,500

безлимит

безлимит

SSO, вебхук SIEM

Цель: $32.5K MRR при 15 клиентах (10 Pro + 5 Enterprise).


Развертывание

Репозиторий готов к работе с Railway. python -m queryshield.start — точка входа (считывает PORT через os.getenv, так как Railway выполняет команду запуска без оболочки). Подготовьте Postgres + (опционально) Redis из маркетплейса Railway, остальное — переменные окружения.

railway up

/health — проверка работоспособности. /ready возвращает 503, если БД управления недоступна.

Тесты

pip install pytest
python -m pytest tests/

42 теста покрывают:

  • Безопасность AST (24 случая — прямой DDL, комментарии, закодированные ключевые слова, множественные операторы, запрещенные функции, отсутствие LIMIT)

  • Механизм RLS (6 случаев — применение белого списка, внедрение WHERE, конъюнкция с существующими предикатами)

  • Сквозное тестирование прокси с SQLite "клиентской БД" (5 случаев — успешный путь, блокировка DML, фильтрация строк RLS, белый список таблиц, попадание в кэш)

  • HTTP-интеграция через FastAPI TestClient (7 случаев — полная подготовка → поток запросов, агент с ограниченными правами и RLS, ошибки аутентификации)

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to execute SQL queries and introspect PostgreSQL schemas, tables, and indexes with read-only safety by default. Supports optional write operations and works with Claude, LangChain, and other agents via stdio or HTTP transports.
    -
  • A
    license
    A
    quality
    A
    maintenance
    SchemaBrain is an MCP server that sits between AI agents (Claude, Cursor, Windsurf) and your SQL database as a read-only trust + intelligence layer. The agent never writes SQL — 12 tools compile it from definitions you control, PII and secret categories are refused before the query runs, and every call lands in a tamper-evident (SHA-256-chained) audit log. Postgres today.
    12
    9
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI assistants to PostgreSQL databases with production-grade safety features including query validation, guarded writes, rate limiting, and audit logging.
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A default-deny SQL firewall sidecar for AI agents that enforces per-agent policies on database queries, provides safe rewrites, and maintains a tamper-evident audit chain.
    AGPL 3.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bch1212/queryshield'

If you have feedback or need assistance with the MCP directory API, please join our Discord server