No description
  • Go 99.4%
  • Dockerfile 0.6%
Find a file
Ymnuk 73d3b7e2f9
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Небольшая переработка CI/CD
2026-05-06 21:39:40 +03:00
.qwen Добавление ClickHouse 2026-04-12 23:28:49 +03:00
cmd Небольшой рефакторинг 2026-05-06 21:10:21 +03:00
docs Реализация Memcache 2026-05-06 13:36:03 +03:00
internal Небольшой рефакторинг 2026-05-06 21:10:21 +03:00
.gitignore Исправление бенчмарков для ClickHouse 2026-04-12 23:51:46 +03:00
.woodpecker.yml Небольшая переработка CI/CD 2026-05-06 21:39:40 +03:00
Dockerfile Сборка раздельных образов 2026-05-06 14:24:25 +03:00
Dockerfile.clickhouse Небольшая переработка CI/CD 2026-05-06 21:39:40 +03:00
Dockerfile.mariadb Небольшая переработка CI/CD 2026-05-06 21:39:40 +03:00
Dockerfile.memcached Небольшая переработка CI/CD 2026-05-06 21:39:40 +03:00
Dockerfile.postgres Небольшая переработка CI/CD 2026-05-06 21:39:40 +03:00
Dockerfile.redis Небольшая переработка CI/CD 2026-05-06 21:39:40 +03:00
Dockerfile.sqlite Небольшая переработка CI/CD 2026-05-06 21:39:40 +03:00
go.mod Сборка раздельных образов 2026-05-06 14:24:25 +03:00
go.sum Сборка раздельных образов 2026-05-06 14:24:25 +03:00
LICENSE first commit 2026-04-08 14:24:48 +03:00
README.md Сборка раздельных образов 2026-05-06 14:24:25 +03:00

MCP Database Suite

Набор MCP-серверов для взаимодействия LLM-агентов с популярными СУБД.

Поддерживаемые СУБД

СУБД Бинарник Статус Порт по умолчанию
PostgreSQL mcp-postgres Реализовано 5432
SQLite mcp-sqlite Реализовано
MariaDB mcp-mariadb Реализовано 3306
ClickHouse mcp-clickhouse Реализовано 9000
Redis mcp-redis Реализовано 6379
Memcached mcp-memcached Реализовано 11211

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

Каждый сервер — отдельный бинарник, который подключается к одной БД. Запустите столько экземпляров, сколько нужно:

# PostgreSQL
mcp-postgres --host=localhost --port=5432 --user=admin --password=secret --database=mydb

# MariaDB
mcp-mariadb --host=localhost --port=3306 --user=admin --password=secret --database=mydb

# SQLite
mcp-sqlite --db-path=/data/mydb.sqlite

# ClickHouse
mcp-clickhouse --host=localhost --port=9000 --user=default --password=secret --database=default

# Redis
mcp-redis --host=localhost --port=6379

# Memcached
mcp-memcached --host=localhost --port=11211

Серверы работают в двух режимах:

  • STDIO (по умолчанию) — для подключения к IDE (Cursor, VS Code, Claude Desktop)
  • HTTP/SSE — для веб-приложений и удалённого доступа

Установка

Бинарники

Скачайте готовый бинарник из Releases:

# Linux x86_64
curl -fsSL "https://git.ymnuktech.ru/ymnuk/mcp-db-suite/releases/download/v1.0.0/mcp-postgres-v1.0.0-linux-amd64" \
  -o ~/.local/bin/mcp-postgres && chmod +x ~/.local/bin/mcp-postgres

# Linux ARM64
curl -fsSL "https://git.ymnuktech.ru/ymnuk/mcp-db-suite/releases/download/v1.0.0/mcp-postgres-v1.0.0-linux-arm64" \
  -o ~/.local/bin/mcp-postgres && chmod +x ~/.local/bin/mcp-postgres

# Windows x64
Invoke-WebRequest -Uri "https://git.ymnuktech.ru/ymnuk/mcp-db-suite/releases/download/v1.0.0/mcp-postgres-v1.0.0-windows-amd64.exe" -OutFile mcp-postgres.exe

Доступные платформы: linux/amd64, linux/arm64, linux/armv7, windows/amd64.

Docker

Каждый сервер — отдельный тег в одном репозитории (scratch base, ~12MB):

# PostgreSQL
docker build --target postgres -t mcp-db-suite:postgres .

# MariaDB
docker build --target mariadb -t mcp-db-suite:mariadb .

# и т.д.

Запуск:

docker run -it mcp-db-suite:v1.0.0-redis --host=redis --port=6379
docker run -it mcp-db-suite:v1.0.0-postgres --host=db --port=5432 --user=admin --password=secret --database=mydb

Запуск:

# Redis (тег v1.0.0-rdis)
docker run -it git.ymnuktech.ru/mcp-db-suite:v1.0.0-redis --host=redis --port=6379

# PostgreSQL (тег v1.0.0-postgres)
docker run -it git.ymnuktech.ru/mcp-db-suite:v1.0.0-postgres --host=db --port=5432 --user=admin --password=secret --database=mydb

# Все серверы доступны через теги:
# - mcp-db-suite:latest
# - mcp-db-suite:v1.0.0-postgres
# - mcp-db-suite:v1.0.0-mariadb
# - mcp-db-suite:v1.0.0-sqlite
# - mcp-db-suite:v1.0.0-clickhouse
# - mcp-db-suite:v1.0.0-redis
# - mcp-db-suite:v1.0.0-memcached

TLS с CA certificates:

Образы собираются на scratch (без встроенных сертификатов). Для TLS подключения к БД используй:

# Монтирование системных сертификатов с хоста
docker run -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro \
  mcp-db-suite:postgres --host=db.example.com --port=5432 ...

Или укажи файл сертификата через env:

export SSL_CERT_FILE=/path/to/cert.crt
docker run -v /path/to/cert.crt:/path/to/cert.crt:ro \
  mcp-db-suite:postgres --host=db.example.com --port=5432 ...

Примечание: Образы собираются для linux/amd64, linux/arm64, linux/arm/v7 (multi-arch через buildx).

Из исходников

git clone https://git.ymnuktech.ru/ymnuk/mcp-db-suite
cd mcp-db-suite

go build -o mcp-postgres    ./cmd/mcp-postgres
go build -o mcp-mariadb    ./cmd/mcp-mariadb
go build -o mcp-sqlite    ./cmd/mcp-sqlite
go build -o mcp-clickhouse ./cmd/mcp-clickhouse
go build -o mcp-redis     ./cmd/mcp-redis
go build -o mcp-memcached ./cmd/mcp-memcached

Доступные инструменты

SQL-серверы (PostgreSQL, MariaDB, SQLite, ClickHouse)

Инструмент Описание
listTables Список таблиц и их описания
listColumns Столбцы указанной таблицы
exec Выполнить SQL-запрос (SELECT, INSERT, UPDATE, DELETE, DDL)
explain План выполнения SQL-запроса

Key-Value серверы (Redis, Memcached)

Инструмент Описание
get Получить значение по ключу
set Установить значение (с опциональным TTL)
del Удалить ключ
keys Найти ключи по паттерну
ttl Получить TTL ключа (Redis: >0, Memcached: -1)

Подключение к IDE

Cursor / VS Code (mcp.json)

{
  "mcpServers": {
    "postgres": {
      "command": "mcp-postgres",
      "args": [
        "--host=localhost",
        "--port=5432",
        "--user=admin",
        "--password=secret",
        "--database=mydb"
      ]
    },
    "sqlite": {
      "command": "mcp-sqlite",
      "args": ["--db-path=/data/mydb.sqlite"]
    },
    "redis": {
      "command": "mcp-redis",
      "args": ["--host=localhost", "--port=6379"]
    },
    "memcached": {
      "command": "mcp-memcached",
      "args": ["--host=localhost", "--port=11211"]
    }
  }
}

Claude Desktop

{
  "mcpServers": {
    "mariadb": {
      "command": "mcp-mariadb",
      "args": [
        "--host=localhost",
        "--port=3306",
        "--user=admin",
        "--password=secret",
        "--database=mydb",
        "--table-prefix=wp_"
      ]
    },
    "clickhouse": {
      "command": "mcp-clickhouse",
      "args": [
        "--host=localhost",
        "--port=9000",
        "--user=default",
        "--password=secret",
        "--database=default"
      ]
    }
  }
}

HTTP/SSE режим

Для удалённого доступа или веб-приложений:

mcp-postgres --host=localhost --user=admin --database=mydb \
  --listen=127.0.0.1:8080 --api-key=secret
  • MCP endpoint: http://127.0.0.1:8080/mcp
  • Health check: http://127.0.0.1:8080/health
  • Auth: заголовок Authorization: Bearer secret

Конфигурация через переменные окружения

Любой параметр можно задать через env:

export MCP_DB_HOST=db.example.com
export MCP_DB_USER=admin
export MCP_DB_PASSWORD=secret
export MCP_DB_NAME=mydb

mcp-postgres  # подключится к db.example.com

Приоритет: CLI > env > default.

Опции командной строки

SQL-серверы (PostgreSQL, MariaDB, SQLite, ClickHouse)

Флаг Описание
--host Хост БД (по умолчанию: localhost)
--port Порт БД (PostgreSQL: 5432, MariaDB: 3306, ClickHouse: 9000)
--user Пользователь БД
--password Пароль
--database Имя базы данных
--schema Схема PostgreSQL (по умолчанию: public)
--table-prefix Префикс таблиц MariaDB
--db-path Путь к SQLite файлу
--limit Лимит строк для exec
--db-pool Размер пула (по умолчанию: 1)
--listen Адрес HTTP/SSE
--api-key API-ключ
--version, -v Показать версию
--help, -h Показать справку

Key-Value серверы (Redis, Memcached)

Флаг Описание
--host Хост (по умолчанию: localhost)
--port Порт (Redis: 6379, Memcached: 11211)
--password Пароль (Redis)
--database Номер БД (Redis)
--limit Лимит для keys (по умолчанию: 100)
--timeout Таймаут в мс (Memcached, по умолчанию: 100)
--listen Адрес HTTP/SSE
--api-key API-ключ
--version, -v Показать версию

Версии

mcp-postgres    --version     # mcp-postgres 1.0.0
mcp-mariadb   --version     # mcp-mariadb 1.0.0
mcp-sqlite    --version     # mcp-sqlite 1.0.0
mcp-clickhouse --version   # mcp-clickhouse 1.0.0
mcp-redis     --version     # mcp-redis 1.0.0
mcp-memcached --version   # mcp-memcached 1.0.0

При запуске сервер также выводит версию в лог:

[mcp-postgres] Version: 1.0.0
[mcp-postgres] Connected to PostgreSQL at localhost:5432/mydb (schema=public)
[mcp-postgres] Starting in STDIO mode

Безопасность

  • Read-only — ограничение через учётную запись БД. Сервер выполняет любой SQL, поэтому создавайте пользователя без прав на запись.
  • Пароли — передаются отдельным параметром, не в DSN-строке. Никаких проблем со спецсимволами.
  • HTTP-аутентификация — Bearer token через --api-key. Для TLS используйте reverse proxy (nginx, caddy).

Документация

Файл Описание
docs/ARCHITECTURE.md Архитектура, принципы, жизненный цикл запроса
docs/CONFIGURATION.md Подробное описание параметров для каждой СУБД
docs/SQL-SPECIFICATION.md Спецификация SQL-инструментов
docs/KEYVAL-SPECIFICATION.md Спецификация Key-Value инструментов (Redis, Memcached)
docs/ROADMAP.md План развития проекта
docs/DECISIONS.md Обоснования архитектурных решений (FAQ)

Разработка

# Тесты
go test ./internal/... -count=1

# С race detector
go test ./internal/... -race

# Покрытие
go test ./internal/... -coverprofile=cover.out
go tool cover -func=cover.out

Лицензия

MIT