+ mariadb mcp

This commit is contained in:
2026-05-14 13:30:55 +03:00
parent 4ff85e1215
commit 667ece7c20
6 changed files with 91 additions and 0 deletions

7
.cursor/mcp.json Normal file
View File

@ -0,0 +1,7 @@
{
"mcpServers": {
"intai-mariadb": {
"url": "http://127.0.0.1:8765/sse"
}
}
}

View File

@ -28,3 +28,12 @@ PHP_OPT_POST_MAX_SIZE=800M
PHP_OPT_UPLOAD_MAX_FILESIZE=200M
PHP_OPT_MAX_EXECUTION_TIME=600
### MCP MariaDB (Cursor IDE) ############################
# Имя Docker-сети, в которой запущен сервис db (docker network ls | grep default).
# Пример: intai-docker_default — имя зависит от каталога проекта и COMPOSE_PROJECT_NAME.
INTAI_DOCKER_NETWORK=intai-docker_default
# Порт на хосте для MCP (SSE); тот же порт должен быть в .cursor/mcp.json (url).
MCP_MARIADB_PORT=8765
# Опционально: зафиксировать ревизию MariaDB/mcp при сборке образа (ветка или тег).
# MARIADB_MCP_GIT_REF=main

12
.env.mcp-mariadb.example Normal file
View File

@ -0,0 +1,12 @@
# Копия: cp .env.mcp-mariadb.example .env.mcp-mariadb
# Пароль должен совпадать с MYSQL_ROOT_PASSWORD у сервиса db (docker-compose.base.yml).
DB_HOST=db
DB_PORT=3306
DB_USER=root
DB_PASSWORD=123456
# Необязательно: дефолтная БД для запросов
# DB_NAME=myapp
MCP_READ_ONLY=true
MCP_MAX_POOL_SIZE=5

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
/.idea
/.env
/.env.mcp-mariadb
/docker-compose*
!/docker-compose.base.yml
!/docker-compose*.example

View File

@ -0,0 +1,31 @@
# MariaDB MCP для Cursor: контейнер в той же Docker-сети, что и сервис db.
#
# 1) Узнайте имя сети стека с MariaDB: docker network ls | grep default
# (часто <имя_папки_проекта>_default, например intai-docker_default)
# 2) Скопируйте .env.mcp-mariadb.example в .env.mcp-mariadb и поправьте пароль/БД.
# 3) В корневом .env задайте INTAI_DOCKER_NETWORK (см. .env.example).
# 4) Запуск (файл с суффиксом .example можно указать напрямую):
# docker compose -f docker-compose.mcp-mariadb.yml.example up -d --build
#
# Cursor читает .cursor/mcp.json (SSE на 127.0.0.1:${MCP_MARIADB_PORT}).
services:
mcp-mariadb:
build:
context: ./dockerfiles/mariadb-mcp
args:
MARIADB_MCP_GIT_REF: ${MARIADB_MCP_GIT_REF:-main}
restart: unless-stopped
env_file:
- .env.mcp-mariadb
environment:
LOG_FILE: /tmp/mcp_server.log
ports:
- "127.0.0.1:${MCP_MARIADB_PORT:-8765}:9001"
networks:
- intai_db
networks:
intai_db:
external: true
name: ${INTAI_DOCKER_NETWORK:?Set INTAI_DOCKER_NETWORK in .env — see .env.example}

View File

@ -0,0 +1,31 @@
# MariaDB MCP Server (SSE) — upstream: https://github.com/MariaDB/mcp
# Build clones MariaDB/mcp at MARIADB_MCP_GIT_REF (branch or tag).
FROM python:3.11-slim AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential curl ca-certificates git \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:${PATH}"
WORKDIR /app
ARG MARIADB_MCP_GIT_REF=main
RUN git clone --depth 1 --branch "${MARIADB_MCP_GIT_REF}" https://github.com/MariaDB/mcp.git . \
|| (git clone --depth 1 https://github.com/MariaDB/mcp.git . && git fetch --depth 1 origin "${MARIADB_MCP_GIT_REF}" && git checkout FETCH_HEAD)
RUN uv sync --no-dev
FROM python:3.11-slim
WORKDIR /app
ENV PATH="/app/.venv/bin:${PATH}"
COPY --from=builder /app/.venv /app/.venv
COPY --from=builder /app/src /app/src
EXPOSE 9001
CMD ["python", "src/server.py", "--host", "0.0.0.0", "--transport", "sse"]