- Go 99.4%
- Dockerfile 0.6%
|
|
||
|---|---|---|
| .qwen | ||
| cmd | ||
| docs | ||
| internal | ||
| .gitignore | ||
| .woodpecker.yml | ||
| Dockerfile | ||
| Dockerfile.clickhouse | ||
| Dockerfile.mariadb | ||
| Dockerfile.memcached | ||
| Dockerfile.postgres | ||
| Dockerfile.redis | ||
| Dockerfile.sqlite | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
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