sqlite-guard-mcp
sqlite-guard-mcp
Позвольте AI-агенту работать с вашей базой данных SQLite, не доверяя ему.
MCP-сервер с четырьмя инструментами — schema, query, execute, audit_log — и
тремя гарантиями:
Чтение не может писать.
queryработает через отдельное соединение, открытое какSQLITE_OPEN_READONLYна уровне C. Замаскированная запись (/* just checking */ UPDATE …) не отлавливается регулярным выражением — она отклоняется самим SQLite. Обеспечение через архитектуру, а не через проверку.Запись сначала выполняется в режиме "сухого прогона".
executeвыполняет оператор внутри транзакции, которая всегда откатывается, и сообщает, что бы произошло (changes,lastInsertRowid). Фиксация требует повторного вызова сconfirm: true— агент должен дважды заявить о своем намерении, а его оператор видит предполагаемый эффект между этими вызовами.Зафиксированные записи оставляют след, по которому можно вернуться. Перед любой фиксацией файл базы данных сохраняется в виде снимка (
VACUUM INTO— транзакционно целостно даже в режиме WAL с активными читателями). Запись и соответствующая строка неизменяемого аудита фиксируются в одной и той же транзакции: невозможно получить изменение без записи в аудите или запись в аудите для изменения, которого не было.
Зачем это нужно
Я веду панель личных финансов, интерфейс которой намеренно только для чтения —
каждое число в ней редактируется AI-агентами через SQL. Такая архитектура
прекрасна (никаких форм, никаких конечных точек записи, агенты ведут учет) ровно до того момента,
пока агент не выполнит правдоподобный UPDATE с неправильным предложением WHERE.
Вывод из работы этой системы: SQL-агенту нужна не более умная модель, а то же самое, что требовалось людям-операторам десятилетиями — разделение чтения и записи, этап планирования/применения, резервные копии и журнал аудита. Этот сервер упаковывает эти четыре вещи за MCP, чтобы любой агент (Claude Code или любой другой, поддерживающий MCP) получал их бесплатно для любого файла SQLite.
Related MCP server: SQLite Read-Only MCP Server
Быстрый старт
npm install
npm run demo # full guardrail walkthrough on a temp DB — 10 seconds, no setup
npm test # 10 tests: rollback semantics, backup consistency, audit atomicityПодключите к Claude Code:
claude mcp add sqlite-guard \
-e SQLITE_GUARD_DB=/path/to/app.db \
-- npx tsx src/server.tsИли исследуйте интерактивно: npx @modelcontextprotocol/inspector npx tsx src/server.ts
(с установленным SQLITE_GUARD_DB).
Инструменты
Инструмент | Контракт |
| Каждая таблица с колонками, типами, первичными ключами, количеством строк — карта агента. |
| SQL только для чтения с параметрами |
| Один оператор записи с параметрами |
| Неизменяемый след каждой зафиксированной записи, сначала самые новые. |
Замечания по дизайну
"Сухой прогон" — это реальное выполнение, а не оценка на основе
EXPLAIN: оператор действительно выполняется (триггеры, ограничения и все остальное), а затем откатывается. Вы видите именно то, что сделала бы фиксация — включая ошибку ограничения, с которой бы столкнулись.Восстановление — это копирование одного файла. Резервные копии — это обычные файлы SQLite с именами
<db>-backup-<timestamp>; восстановление после неудачной зафиксированной записи — этоcp+ перезапуск, а строка аудита точно записывает, какой снимок предшествовал какой записи.BEGIN/COMMITот агента отклоняются — жизненный цикл транзакции принадлежит защите. Иначе случайныйBEGINпозволил бы последующему оператору зафиксировать "откаченный" сухой прогон.Таблица аудита намеренно доступна для чтения через
query. Прозрачность здесь перевешивает секретность: агент может просмотреть свою собственную историю, а оператор может попросить агента подвести итог того, что и когда было изменено.Классификация операторов (
classify.ts) — это маркировка, а не безопасность. Она помечает строки аудита и сообщения об ошибках; границами безопасности являются флаг соединения и протокол транзакций. Все, что решает регулярное выражение, решительный ввод может отменить.
Ограничения (честные)
Списки разрешений/запретов для отдельных таблиц не реализованы (API авторизации SQLite не предоставляется better-sqlite3); граница проходит по всей базе данных. Направляйте сервер на базу данных, управление которой вы предполагаете доверить агентам.
VACUUM INTOтребует SQLite ≥ 3.27 (2019); более старые сборки используют копирование файла, которое безопасно только в неактивном состоянии.Один MCP-сервер = один файл базы данных. Запустите несколько экземпляров для нескольких файлов.
Стек
TypeScript · @modelcontextprotocol/sdk (транспорт stdio) · better-sqlite3 ·
zod · vitest.
Лицензия
MIT © Brandon Ta
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 Servers
- AlicenseBqualityAmaintenanceProvides comprehensive SQLite database operations for LLMs with security features, transaction support, and separation of read-only and destructive operations.2213819MIT
- AlicenseAqualityCmaintenanceEnables safe, read-only SQL access to SQLite databases for AI agents, allowing schema exploration and SELECT queries with defense-in-depth protections.3MIT
- AlicenseBqualityBmaintenanceEnables LLM agents to query databases with read-only access, while requiring human approval for writes through a token-based confirmation system.6GPL 3.0
- Flicense-qualityBmaintenanceEnables AI agents to query a SQLite database using natural language through the Model Context Protocol (MCP). Includes security guardrails that block destructive SQL operations.
Related MCP Connectors
Runtime permission, approval, and audit layer for AI agent tool execution.
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
The WAF for agents. Pattern-based + heuristic firewall scans prompts, RAG documents, tool argume...
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/Brandon-35/sqlite-guard-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server