QueryShield
QueryShield
Безопасный SQL-прокси между ИИ-агентами и корпоративными базами данных.
Агенты обращаются к единой конечной точке на обычном английском языке (или структурированном SQL). QueryShield:
Переводит естественный язык в SQL через Claude с использованием кэширования промптов.
Проверяет каждый запрос на уровне AST — разрешены только
SELECT, никаких объединенных операторов, никаких запрещенных функций, обязателен LIMIT.Применяет безопасность на уровне строк для каждого агента: белые списки схем/таблиц и внедрение условий
WHERE.Выполняет запрос к БД клиента и возвращает строки.
Логирует каждую попытку в таблицу аудита, доступную только для добавления — только метаданные, никакого содержимого строк.
Агенты никогда не видят строки подключения.
Быстрый старт
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)— готовый SELECTget_audit_log(limit)— недавние попытки для вызывающего агента
Модель безопасности
Угроза | Защита |
Агент создает | AST sqlglot отклоняет всё, кроме SELECT |
Агент добавляет | парсер отклоняет |
Агент использует | черный список функций на уровне узлов AST |
Агент читает таблицы вне своей области доступа | RLS схема + белый список таблиц |
Агент читает строки других арендаторов |
|
Утечка строки подключения через трассировку стека | шифрование Fernet, никогда не возвращается в API |
Аудит-лог становится вектором утечки данных | хранятся только метаданные — никогда строки |
Ротация | повторное шифрование строк новым ключом (через скрипт) |
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.
This server cannot be installed
Maintenance
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
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Deterministic safety, correctness & cost gate that vets Postgres SQL before your AI agent runs it.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- AlicenseAqualityAmaintenanceSchemaBrain 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.129Apache 2.0
- AlicenseNot gradedqualityBmaintenanceConnects AI assistants to PostgreSQL databases with production-grade safety features including query validation, guarded writes, rate limiting, and audit logging.3MIT
- AlicenseNot gradedqualityBmaintenanceA 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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