LINQ to DB CLI MCP

Консольная утилита linq2db с MCP-сервером: агент смотрит схему любой из поддерживаемых баз и запускает один SELECT за раз.

  • 3 334 ★ репозитория
  • Последний коммит
MCP-серверОфициальный

Расширенный доступ

Почему такой уровень

  • Агент читает данные базы с правами профиля, а при включенном `linq2db_execute` способен менять их.
Все причины и проверки

linq2db/linq2db

Установка

Ручная установка

dotnet tool install -g linq2db.cli

Первая команда установки из README, нужен .NET 10 SDK.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Агент читает данные базы с правами профиля, а при включенном `linq2db_execute` способен менять их.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

`dotnet linq2db mcp` запускает MCP-сервер по stdio поверх базы данных, к которой подключены профили из локального JSON-конфига. Агент сначала вызывает `linq2db_info`, чтобы узнать профили, провайдеры, диалекты SQL и правила безопасности. Затем `linq2db_schema` отдает таблицы, представления, колонки, ключи и связи, а `linq2db_query` выполняет один готовый SQL-запрос только на чтение. Инструмент `linq2db_skill` возвращает подробное руководство по работе. Записывающий инструмент `linq2db_execute` выключен по умолчанию. Для него нужны флаг `--enable-execute-tool` при запуске сервера и параметр `enableExecute: true` в выбранном профиле. Ответы запросов ограничены 8 МиБ, лишние строки обрезаются с предупреждением.

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

Подходит, если

  • Агент ищет причину медленного запроса и сверяет код с реальным распределением данных.
  • Перед правкой маппинга надо понять, какие колонки допускают NULL и какие связи есть между таблицами.
  • Аналитик задает вопрос по данным, а агент читает код приложения и сразу проверяет ответ в базе.
  • Для регрессионного теста по багу нужен образец реальных записей.

Не подходит, если

  • На рабочей базе с персональными данными нет отдельного профиля с ограниченными правами.
  • Нужен инструмент для миграций и DDL: `query` рассчитан на чтение результатов.
  • Рядом стоит старый .NET SDK, и версия 10 недоступна.

Пример запроса к агенту

Подключись к профилю dev, покажи схему таблиц заказов и выведи десять самых больших заказов за последний месяц.

MCP

Транспорт
stdio
Авторизация
не нужна

Ограничения

Для установки нужен .NET 10 SDK, для запуска хватает .NET 8 или новее. Строка подключения лежит в профиле конфига: лучше брать ее из переменной окружения через `--connection-string-env`, а файл с учетными данными исключить из git. Для Windows есть шифрованное хранилище `credentials`. Агент может читать любые таблицы, доступные пользователю базы, поэтому права профиля задают границы доступа. Для старых Access и Informix встречаются требования к разрядности драйвера.

Как отключить. Удалите MCP-подключение из клиента и выполните `dotnet tool uninstall -g linq2db.cli`. Файлы конфигурации с профилями удалите отдельно, особенно если в них записана строка подключения.

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

Как включить запись в базу?

Запустите сервер с `--enable-execute-tool` и задайте `enableExecute: true` в нужном профиле. Без обоих условий `linq2db_execute` не регистрируется. Агенту разрешайте запись только после явного подтверждения.

Какие базы поддерживаются?

Те, что знает linq2db: SQL Server, PostgreSQL, MySQL, Oracle, SQLite, ClickHouse, DB2, Firebird, SAP HANA и другие. Провайдер указывается в профиле, а `linq2db_info` показывает доступные.

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

Да. Зарегистрируйте тот же исполняемый файл несколько раз с разными `--config`. В каждом конфиге раздел `mcp` задает название и инструкции для своего набора баз.

Что делать, если MCP-клиент недоступен?

Используйте `dotnet linq2db query --sql "..."` напрямую: команда читает те же профили и печатает результат в `json`, `json-table` или `csv`.

Где хранить строку подключения?

Передавайте ее через `--connection-string-env`: литеральная строка попадет в JSON-профиль и вызовет предупреждение в `stderr`. Файл с учетными данными исключите из git. На Linux и macOS создаваемые файлы получают права только для владельца.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы

Терминальный клиент баз данных на Rust с MCP и JSON CLI: агент читает схему и запускает запросы с правами профиля.

CLIРасширенный доступ67Звезды репозитория

Один MCP-сервер для SQLite, SQL Server, PostgreSQL и MySQL: агент читает и меняет данные, правит схему и выгружает CSV и JSON

MCP-серверШирокий доступ391Звезды репозитория
Официальный

MCP-сервер и скилл dbcode-cli: агент запускает SQL через подключения, которые уже сохранены в расширении DBCode для редактора.

MCP-серверШирокий доступ366Звезды репозитория
Официальный

Десктопное рабочее место для SQL с встроенным MCP-сервером: агент читает схему и выполняет запросы в том же клиенте, где работаете вы

MCP-серверШирокий доступ5,5 тыс.Звезды репозитория

MySQL MCP Server Pro

mysql_mcp_server_pro

MCP-сервер для MySQL: выполняет SQL с ролями доступа, ищет таблицы по комментариям и разбирает блокировки, индексы и планы запросов

MCP-серверШирокий доступ249Звезды репозитория
Официальный

Легкое рабочее место для баз данных с MCP-сервером: агент читает схему, выполняет запросы и разбирает данные в PostgreSQL, MySQL и других

MCP-серверШирокий доступ5,1 тыс.Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
LINQ to DB CLI (эта карточка)дане нужна3 334
MCP Database ServerнетAPI-ключ391одним сервером объединяет SQLite, SQL Server, PostgreSQL и MySQL и умеет менять данные; здесь запись выключена и провайдеров больше
MCP Toolbox for Databasesдане нужна16 847сервер Google с инструментами из tools.yaml; здесь инструменты фиксированы, а профили описывают базы

Коротко о README

Утилита ставится как глобальный dotnet tool. Кроме MCP, она генерирует модели базы данных и читает метаданные схемы, а профили конфигурации общие для всех команд.

Бейдж для README

Сообщить о проблеме