Skip to main content
Glama
kobramantra-debug

mcp-database-universal

MCP Database Server

Интерфейс рассуждений для баз данных для ИИ-агентов, поддерживающих MCP — не тонкая обёртка над SQL.

mcp-database-universal предоставляет ИИ-агентам набор из 7 инструментов рассуждений для безопасного исследования и запросов к базе данных, понимания её схемы и структуры данных, выполнения вопросов на естественном языке и визуализации связей — всё без раскрытия внутренних деталей подключения.

Возможности

  • 7 инструментов рассуждений, предназначенных для ИИ-агентов: проверка подключения, список таблиц, просмотр таблицы, выполнение параметризованных SQL-запросов, вопросы на естественном языке, профилирование данных и построение ER-диаграммы.

  • Мультидвижок: SQLite (встроенный) плюс опционально PostgreSQL, MySQL и MSSQL.

  • Безопасность прежде всего: только чтение по умолчанию, параметризованные запросы, проверка операторов, ограничения по строкам/времени/объёму вывода.

  • Вывод, удобный для LLM: типы переведены, NULL обработаны, результаты отформатированы в Markdown-таблицах с контекстом.

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

  • Запросы на естественном языке: перевод вопросов на обычном языке в SQL и возврат результатов.

Related MCP server: database-explorer-mcp

Поддерживаемые движки

Движок

Требование

Дополнительная установка

SQLite

встроенный

—

PostgreSQL

psycopg

pip install "mcp-database-universal[postgres]"

MySQL

PyMySQL

pip install "mcp-database-universal[mysql]"

MSSQL

pyodbc + ODBC-драйвер

pip install "mcp-database-universal[mssql]"

все

—

pip install "mcp-database-universal[all]"

Установка

pip install mcp-database-universal

# With optional engines:
pip install "mcp-database-universal[postgres]"
pip install "mcp-database-universal[mysql]"
pip install "mcp-database-universal[mssql]"
# or everything:
pip install "mcp-database-universal[all]"

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

Запустите сервер через STDIO (транспорт по умолчанию для MCP-клиентов):

DATABASE_URL=sqlite:///app.db python -m mcp_database_universal

URL-адреса подключения:

sqlite:///path/to/db.db              SQLite (file)
sqlite:///:memory:                   SQLite (in-memory)
postgresql://user:pass@host:5432/db  PostgreSQL
mysql://user:pass@host:3306/db       MySQL
mssql://user:pass@host:1433/db       MSSQL (uses ODBC Driver 18)

Docker

docker build -t mcp-db .

# Mount a SQLite database read-only:
docker run --rm -i \
  -v /host/path/app.db:/data/app.db:ro \
  -e DATABASE_URL=sqlite:////data/app.db \
  mcp-db

# Or in-memory:
docker run --rm -i -e DATABASE_URL=sqlite:///:memory: mcp-db

Конфигурация

Вся конфигурация выполняется через переменные окружения.

Переменная

По умолчанию

Описание

DATABASE_URL

(обязательно)

URL-адрес подключения к базе данных.

DATABASE_READ_ONLY

true

Принудительный режим только для чтения (блокирует запись, даже если DATABASE_WRITE_ENABLED).

DATABASE_WRITE_ENABLED

false

Разрешить записывающие операторы, когда DATABASE_READ_ONLY=false.

DATABASE_MAX_ROWS

1000

Максимальное количество строк, возвращаемых за запрос.

DATABASE_MAX_QUERY_TIME

30

Таймаут запроса в секундах.

DATABASE_MAX_OUTPUT_BYTES

50000

Ограничение размера полезной нагрузки результата.

DATABASE_SAMPLE_SIZE

5

Количество примеров строк, показываемых в статистике таблиц/столбцов.

DATABASE_PROFILE_TOP_N

10

Top-N распределение значений в профилировании.

OPENAI_API_KEY

—

API-ключ для режима natural_query на основе LLM.

ANTHROPIC_API_KEY

—

API-ключ для режима natural_query на основе LLM.

Инструменты

Инструмент

Описание

test_connection

Проверка подключения к БД; сообщает движок, версию, имя, размер, количество таблиц.

list_tables

Обзор всех таблиц с количеством строк, столбцов, связями внешних ключей.

inspect_table

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

query

Выполнение безопасного параметризованного SQL-запроса и получение результатов в Markdown.

natural_query

Вопрос на естественном языке; получение сгенерированного SQL и результатов.

profile_database

Профиль данных: распределения, доля NULL, связи, размеры.

schema_graph

Mermaid ER-диаграмма связей таблиц.

Пример: query с параметрами

{
  "sql": "SELECT * FROM users WHERE id = :id AND active = :active",
  "params": "{\"id\": 42, \"active\": true}"
}

Параметры используют плейсхолдеры :name; передайте значения в виде JSON-строки в params.

Пример: natural_query

question: "How many users are there?"
-> SELECT COUNT(*) FROM users
question: "Show me all orders"
-> SELECT * FROM orders LIMIT 100

Рабочий пример на небольшой демонстрационной базе данных находится в examples/ вместе с готовыми фрагментами конфигурации для распространённых MCP-клиентов.

Конфигурация MCP-клиента

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "database": {
      "command": "python",
      "args": ["-m", "mcp_database_universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Cursor / другие клиенты на основе CLI

{
  "mcpServers": {
    "database": {
      "command": "uvx",
      "args": ["mcp-database-universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Примечание для Windows: асинхронный драйвер Postgres требует цикла событий Windows selector. Пакет автоматически устанавливает эту политику на win32, поэтому дополнительная настройка не требуется.

Разработка

pip install -e ".[dev]"
pytest

Интеграционные тесты для PostgreSQL/MySQL используют Docker Compose и автоматически пропускаются, если серверы недоступны:

docker compose -f tests/integration/docker-compose.yml up -d
pytest

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

  • Сервер по умолчанию только для чтения; операторы INSERT/UPDATE/DELETE/DROP/ALTER и другие записывающие операторы блокируются.

  • Запись возможна только когда оператор явно задаёт DATABASE_READ_ONLY=false и DATABASE_WRITE_ENABLED=true.

  • Результаты запросов ограничены количеством строк, таймаутом и размером вывода — предотвращаются неконтролируемые запросы.

Лицензия

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connect AI agents to SQL databases (SQLite, PostgreSQL, MySQL) with a unified interface for querying data, exploring schemas, inserting rows, and exporting results to CSV. Includes safety features like dangerous query blocking and write guards.
    5 npm
    40 PyPI
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to connect to and interact with PostgreSQL, MySQL, SQLite, and MongoDB databases through natural language, supporting schema exploration, query execution, data export, and more.
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with PostgreSQL or MySQL databases using natural language. Supports SQL queries, schema discovery, and pre-built aggregations without writing SQL.
    139 npm
    MIT