MCP server for one MySQL database — schema inspection, read-only queries and guarded writes for AI agents.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Documented (README)
claude mcp add mcp-mysql-client -- npx -y mcp-mysql-client{
"mcpServers": {
"mcp-mysql-client": {
"command": "npx",
"args": ["-y", "mcp-mysql-client"],
"env": {
"MYSQL_HOST": "<mysql_host>"
}
}
}
}MYSQL_HOSTResumen de MCP Servers
# MySQL MCP
[](https://www.npmjs.com/package/mcp-mysql-client)
[](https://github.com/gistrec/mcp-mysql-client/actions/workflows/ci.yml)
[](./LICENSE)
**MySQL MCP** подключает AI-приложение к одной базе MySQL или MariaDB: посмотреть структуру, задать вопрос данным на естественном языке, разобраться в медленном запросе — и, если вы сами это разрешили, изменить данные.
Сервер привязан к одной базе: она задана конфигурацией, и ни один инструмент не может уйти в другую. По умолчанию доступно только чтение.
- **6 инструментов.** Подключение и права, список таблиц, структура таблицы, читающий запрос, план запроса, изменяющий запрос.
- **Тип запроса определяет сервер.** SQL разбирается до подключения: `DELETE` в читающем инструменте будет отклонён, даже если права на запись включены.
- **Чтение не может писать.** Читающие запросы идут внутри `START TRANSACTION READ ONLY` — запись отклонит сама MySQL, даже если разбор SQL кто-то обманет.
- **Ответ не переполнит контекст.** Строки читаются потоком и обрываются на лимите, а не выкачиваются целиком; в ответе честный признак `truncated`.
- **Права только снаружи.** INSERT, UPDATE и DELETE включаются переменными окружения и требуют перезапуска — из диалога их получить нельзя. DDL недоступен всегда.
Начните с запроса, который только читает данные:
> Покажи структуру базы и посчитай, сколько записей появилось за последнюю неделю.
---
## Быстрый старт
Claude Code:
```bash
claude mcp add mysql-myapp \
-e MYSQL_HOST=db.example.com \
-e MYSQL_USER=myapp_ro \
-e MYSQL_PASS='пароль' \
-e MYSQL_DB=myapp \
-e MYSQL_SSL=true \
-- npx -y mcp-mysql-client
```
Или в `.mcp.json` / `claude_desktop_config.json`:
```json
{
"mcpServers": {
"mysql-myapp": {
"command": "npx",
"args": ["-y", "mcp-mysql-client"],
"env": {
"MYSQL_HOST": "db.example.com",
"MYSQL_PORT": "3306",
"MYSQL_USER": "myapp_ro",
"MYSQL_PASS": "пароль",
"MYSQL_DB": "myapp",
"MYSQL_SSL": "true"
}
}
}
}
```
Один сервер — одна база. Нужно несколько баз: добавьте несколько записей со своими учётными данными; так права остаются изолированными, и сервер, подключённый к тестовой базе, физически не видит боевую.
## Что можно поручить
| Запрос | Что делает сервер |
| --- | --- |
| «Что вообще есть в этой базе?» | `list_tables` — таблицы, размеры, оценки числа строк |
| «Как устроена таблица orders?» | `describe_table` — столбцы, индексы, внешние ключи в обе стороны |
| «Сколько заказов за июль и на какую сумму?» | `query` — SELECT с агрегацией |
| «Почему этот запрос медленный?» | `explain` — план, индексы, оценка строк |
| «Под кем я подключён и что мне можно?» | `server_info` — база, пользователь, GRANT, лимиты сервера |
| «Проставь статус отменённым заказам» | `execute` — только при `ALLOW_UPDATE_OPERATION=true` |
## Что может измениться
По умолчанию — ничего: сервер стартует в режиме только чтения. Запись включается по одной операции:
```json
"ALLOW_INSERT_OPERATION": "true",
"ALLOW_UPDATE_OPERATION": "true",
"ALLOW_DELETE_OPERATION": "false"
```
Что при этом остаётся невозможным:
- **DDL** — `CREATE`, `ALTER`, `DROP`, `TRUNCATE`, `RENAME` — ни при каких настройках.
- **Смена базы, `SET`, `CALL`, `PREPARE`, `LOAD DATA`, блокировки, `GRANT`** и прочее, что меняет смысл следующего запроса или выполняет непроверенный текст.
- **`SELECT ... INTO OUTFILE`** — запись файла на сервер базы.
- **`UPDATE` и `DELETE` без `WHERE`** — требуют явного подтверждения `allow_full_table=true` в вызове.
- **Несколько инструкций в одном вызове** — выполняется ровно одна.
Права MySQL — отдельное ограничение поверх этого. Разрешение `ALLOW_UPDATE_OPERATION` ничего не добавляет пользователю, у которого нет `GRANT UPDATE`. Рабочая практика: отдельный пользователь с минимальными правами, а не `root`.
## Переменные окружения
| Переменная | По умолчанию | Назначение |
| --- | --- | --- |
| `MYSQL_HOST` | `127.0.0.1` | Хост сервера |
| `MYSQL_PORT` | `3306` | Порт |
| `MYSQL_SOCKET_PATH` | — | Unix-сокет вместо host/port |
| `MYSQL_USER` | — | Пользователь (обязательно) |
| `MYSQL_PASS` | — | Пароль (синоним `MYSQL_PASSWORD`) |
| `MYSQL_PASS_FILE` | — | Прочитать пароль из файла вместо переменной |
| `MYSQL_DB` | — | База данных (обязательно, синоним `MYSQL_DATABASE`) |
| `MYSQL_SSL` | `false` | Требовать TLS |
| `MYSQL_SSL_CA` | — | Путь к корневому сертификату; сам по себе включает TLS |
| `MYSQL_SSL_REJECT_UNAUTHORIZED` | `true` | Проверять сертификат сервера |
| `ALLOW_INSERT_OPERATION` | `false` | Разрешить INSERT |
| `ALLOW_UPDATE_OPERATION` | `false` | Разрешить UPDATE |
| `ALLOW_DELETE_OPERATION` | `false` | Разрешить DELETE |
| `MYSQL_MAX_ROWS` | `1000` | Потолок строк в одном ответе |
| `MYSQL_TIMEOUT_MS` | `30000` | Таймаут запроса |
| `MYSQL_CONNECT_TIMEOUT_MS` | `10000` | Таймаут подключения |
| `MYSQL_POOL_SIZE` | `3` | Соединений в пуле |
| `MYSQL_MAX_RETRIES` | `2` | Повторы при обрыве связи и взаимных блокировках |
| `MYSQL_READ_ONLY_TX` | `true` | Выполнять чтение в read-only транзакции |
| `ASKADS_TELEMETRY` | — | `0` отключает анонимную статистику запусков |
Пароль в конфигурации MCP-клиента лежит открытым текстом. `MYSQL_PASS_FILE` позволяет держать его в файле с нужными правами.
## Переход с `@benborla29/mcp-server-mysql`
Имена переменных совпадают, поэтому достаточно заменить пакет в команде запуска:
```diff
- "args": ["-y", "@benborla29/mcp-server-mysql"]
+ "args": ["-y", "mcp-mysql-client"]
```
Что изменится в поведении:
- `MYSQL_DB` обязателен — сервер всегда привязан к одной базе;
- ответы ограничены `MYSQL_MAX_ROWS` и помечаются `truncated`;
- DDL недоступен даже при включённых правах на запись;
- `UPDATE`/`DELETE` без `WHERE` требуют подтверждения в вызове;
- набор инструментов другой: `query`, `execute`, `explain`, `list_tables`, `describe_table`, `server_info`.
## Диагностика
Первым делом — `server_info`: он покажет, к чему подключён сервер, какие права у пользователя MySQL и какие ограничения включены.
| Симптом | Причина |
| --- | --- |
| `errno 1045` | Неверные `MYSQL_USER` / `MYSQL_PASS` |
| `errno 1044` | Пользователь есть, прав на базу нет |
| `errno 1142` | Не хватает `GRANT` на операцию или таблицу — `ALLOW_*` тут не поможет |
| `errno 3159` | Сервер требует TLS: `MYSQL_SSL=true` |
| `ECONNREFUSED` / `ETIMEDOUT` | Хост, порт, файрвол или неподнятый VPN |
| `ER_NOT_SUPPORTED_AUTH_MODE` | Нужен TLS для `caching_sha2_password` |
| Сервер не подключается | Ошибка конфигурации видна прямо в диалоге: сервер стартует даже без учётных данных и объясняет, чего не хватает |
## Техническая документация
- [Инструменты](docs/TOOLS.md) — параметры и ответы
- [Разработка](docs/DEVELOPMENT.md) — сборка, тесты, живая проверка
- [Публикация](docs/PUBLISHING.md) — релиз в npm и MCP-реестр
- [CLAUDE.md](CLAUDE.md) — устройство репозитория для AI-агентов
## Лицензия
[MIT](./LICENSE)
Lo que la gente pregunta sobre mcp-mysql-client
¿Qué es gistrec/mcp-mysql-client?
+
gistrec/mcp-mysql-client es mcp servers para el ecosistema de Claude AI. MCP server for one MySQL database — schema inspection, read-only queries and guarded writes for AI agents. Tiene 0 estrellas en GitHub y su última actualización registrada es del 2026-08-23.
¿Cómo se instala mcp-mysql-client?
+
Puedes instalar mcp-mysql-client clonando el repositorio (https://github.com/gistrec/mcp-mysql-client) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar gistrec/mcp-mysql-client?
+
Nuestro agente de seguridad ha analizado gistrec/mcp-mysql-client y le ha asignado un Trust Score de 87/100 (tier: Trusted). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene gistrec/mcp-mysql-client?
+
gistrec/mcp-mysql-client es mantenido por gistrec. La última actividad registrada en GitHub es del 2026-08-23, con 0 issues abiertos.
¿Hay alternativas a mcp-mysql-client?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega mcp-mysql-client en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/gistrec-mcp-mysql-client)<a href="https://claudewave.com/repo/gistrec-mcp-mysql-client"><img src="https://claudewave.com/api/badge/gistrec-mcp-mysql-client" alt="Featured on ClaudeWave: gistrec/mcp-mysql-client" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!