Данные под контролем

Дайте ИИ доступ к базе — без прямого SQL

MCP-сервер превращает PostgreSQL, MySQL или SQLite в понятный набор инструментов для ИИ-агента. Структура проверяется по схеме, значения передаются параметрами, а опасные массовые изменения требуют явного разрешения.

RustLinux x86_64Версия 0.1.09 инструментов MCP
database-mcp-server

агент Покажи активных пользователей старше 18 лет

db_select{ "schema": "public", "table": "users",
"filters": { "active": true, "age": { "gte": 18 } },
"order_by": [{ "column": "id", "direction": "desc" }], "limit": 50 }

✓ Имена проверены по схеме · значения связаны параметрами

3СУБД
в одном сервере
1000строк — предел
одной выборки
1HTTP‑адрес
для MCP
0прямых SQL‑строк
от агента
Инструменты сервера

От чтения схемы до транзакции

Агент получает не универсальную SQL-консоль, а девять ограниченных операций с проверяемыми аргументами.

01

Схемы и таблицы

db_list_schemas и db_list_tables показывают только доступные объекты.

02

Описание структуры

db_describe_table возвращает колонки, типы, nullable и первичные ключи.

03

Выборка данных

Фильтры, сортировка, набор колонок и пагинация без формирования SQL агентом.

04

Запись и изменение

Одиночные и пакетные вставки, атомарные пакетные обновления и удаление строк.

05

Транзакции

Последовательность insert, update и delete по разным таблицам выполняется атомарно.

06

Обновление каталога

db_refresh_schema перечитывает метаданные после изменения структуры базы.

Поддерживаемые базы

Один протокол, три отдельных драйвера

Для каждой СУБД используется собственный типизированный пул sqlx. Это сохраняет особенности типов и не смешивает поведение разных движков.

PG

PostgreSQL

UUID, даты, numeric, enum, JSON и массивы сохраняют типизированное JSON-представление.

MY

MySQL

Возвращаются первичные и auto-increment идентификаторы; бинарные данные передаются в Base64.

SQ

SQLite

Компактное подключение к локальной базе с поддержкой полных возвращаемых строк после вставки.

Защитные ограничения

Контроль начинается до запроса

Сервер уменьшает поверхность ошибки, но итоговые права всегда определяются отдельным пользователем базы данных.

Проверка имён

Схемы, таблицы и колонки сверяются с загруженным каталогом метаданных.

Параметризованные значения

Данные не склеиваются с SQL: значения передаются в драйвер bind-параметрами.

Защита массовых действий

UPDATE и DELETE без фильтров выполняются только с явным allow_all: true.

Минимальные права

Создайте для сервера отдельного пользователя БД и выдайте только необходимые разрешения.

Важно

Не публикуйте MCP‑адрес напрямую в интернет без TLS или защищённого обратного прокси. Доступ к endpoint защищается HTTP Basic Auth.

Сборка для Linux

Скачайте и запустите сервер

Архив содержит исполняемый файл, пример окружения и инструкцию. Сборка предназначена для Linux x86_64.

Версия 0.1.0

database-mcp-server

Размер архива — 4,6 МБ. Перед запуском проверьте контрольную сумму SHA‑256.

Контрольная сумма29d1aeec04af6c73113ec03587a058a986e363bb139d8f306f016d6c585fbd03
1wget -q https://sistemnoedelo.ru/downloads/database-mcp-server-linux-amd64.tar.gz
2wget -q https://sistemnoedelo.ru/downloads/database-mcp-server-linux-amd64.tar.gz.sha256
sha256sum -c database-mcp-server-linux-amd64.tar.gz.sha256
3tar -xzf database-mcp-server-linux-amd64.tar.gz
cp .env.example .env
4./database-mcp-server
Подключение

Три адреса базы, один MCP endpoint

Укажите строку подключения и постоянные реквизиты Basic Auth в файле окружения. По умолчанию сервер слушает только 127.0.0.1:8787.

DATABASE_URL=postgres://user:password@127.0.0.1:5432/app
# или mysql://user:password@127.0.0.1:3306/app
# или sqlite://database.sqlite?mode=rwc

HOST=127.0.0.1
PORT=8787
BASIC_AUTH_USERNAME=mcp
BASIC_AUTH_PASSWORD=replace-with-strong-password

Адрес MCP

http://127.0.0.1:8787/mcp

Проверка состояния

http://127.0.0.1:8787/health

Для развёртывания как systemd-службы в исходном проекте предусмотрен Ansible playbook с проверкой SHA‑256 и защищённым EnvironmentFile.

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

Перед установкой

Коротко о границах продукта и требованиях к эксплуатации.

Сервер сам создаёт таблицы?

Нет. Он подключается к существующей базе, читает метаданные и работает с доступными таблицами в рамках прав пользователя.

Можно разрешить только чтение?

Да. Создайте отдельного пользователя базы данных с правами SELECT — MCP-сервер не сможет выйти за пределы этих разрешений.

Можно подключить несколько баз одновременно?

Один процесс использует одну строку DATABASE_URL. Для изоляции нескольких баз запускайте отдельные экземпляры сервиса.

Нужен ли публичный доступ из интернета?

Нет. Рекомендуется локальное или защищённое сетевое размещение. Для удалённого доступа используйте TLS и обратный прокси.

Нужно подключить ИИ к рабочей базе?

Позвоните — подберём схему доступа, права и безопасный контур развёртывания.

Позвонить