MCP-сервер для MySQL на базе NodeJS
Сервер Model Context Protocol, который обеспечивает доступ к базам данных MySQL. Этот сервер позволяет LLM проверять схемы баз данных и выполнять SQL-запросы.
Оглавление
- Требования
- Установка
- Компоненты
- Конфигурация
- Переменные среды
- Режим нескольких баз данных
- Разрешения, специфичные для схемы
- Тестирование
- Поиск неисправностей
- Внося вклад
- Лицензия
Требования
- Node.js v18 или выше
- MySQL 5.7 или выше (рекомендуется MySQL 8.0+)
- Пользователь MySQL с соответствующими правами для необходимых вам операций
- Для операций записи: пользователь MySQL с привилегиями INSERT, UPDATE и/или DELETE.
Установка
Существует несколько способов установки и настройки сервера MCP, но наиболее распространенным является проверка этого сайта https://smithery.ai/server/@benborla29/mcp-server-mysql .
Курсор
Для Cursor IDE вы можете установить этот MCP-сервер с помощью следующей команды в своем проекте:
- Посетите https://smithery.ai/server/@benborla29/mcp-server-mysql
- Следуйте инструкциям для курсора.
MCP Get предоставляет централизованный реестр серверов MCP и упрощает процесс установки.
Использование NPM/PNPM
Для ручной установки:
После ручной установки вам необходимо настроить приложение LLM для использования сервера MCP (см. раздел «Конфигурация» ниже).
Запуск из локального репозитория
Если вы хотите клонировать и запустить этот сервер MCP непосредственно из исходного кода, выполните следующие действия:
- Клонировать репозиторий
- Установить зависимости
- Построить проект
- Настроить рабочий стол КлодаДобавьте следующее в файл конфигурации Claude Desktop (
claude_desktop_config.json
):Заменять:/path/to/node
с полным путем к вашему двоичному файлу Node.js (найдите его с помощьюwhich node
)/full/path/to/mcp-server-mysql
с полным путем к месту, куда вы клонировали репозиторий- Установите учетные данные MySQL в соответствии с вашей средой.
- Протестируйте серверЕсли подключение к MySQL прошло успешно, вы готовы использовать его с Claude Desktop.
Компоненты
Инструменты
- mysql_query
- Выполнение SQL-запросов к подключенной базе данных
- Ввод:
sql
(строка): SQL-запрос для выполнения. - По умолчанию ограничено операциями ТОЛЬКО ЧТЕНИЕ
- Дополнительные операции записи (если включены через конфигурацию):
- INSERT: Добавить новые данные в таблицы (требуется
ALLOW_INSERT_OPERATION=true
) - ОБНОВЛЕНИЕ: изменение существующих данных (требуется
ALLOW_UPDATE_OPERATION=true
) - DELETE: Удалить данные (требуется
ALLOW_DELETE_OPERATION=true
)
- INSERT: Добавить новые данные в таблицы (требуется
- Все операции выполняются в рамках транзакции с правильной обработкой фиксации/отката.
- Поддерживает подготовленные операторы для безопасной обработки параметров.
- Настраиваемые тайм-ауты запросов и разбиение результатов на страницы
- Встроенная статистика выполнения запросов
Ресурсы
Сервер предоставляет исчерпывающую информацию о базе данных:
- Схемы таблиц
- Информация о схеме JSON для каждой таблицы
- Имена столбцов и типы данных
- Индексная информация и ограничения
- Отношения внешнего ключа
- Статистика и метрики таблиц
- Автоматически обнаруживается из метаданных базы данных
Функции безопасности
- Предотвращение SQL-инъекций с помощью подготовленных операторов
- Запрос возможностей белого/черного списка
- Ограничение скорости выполнения запроса
- Анализ сложности запроса
- Настраиваемое шифрование соединения
- Обеспечение транзакций только для чтения
Оптимизация производительности
- Оптимизированный пул соединений
- Кэширование результатов запроса
- Потоковая передача большого набора результатов
- Анализ плана выполнения запроса
- Настраиваемые тайм-ауты запросов
Мониторинг и отладка
- Комплексное ведение журнала запросов
- Сбор показателей производительности
- Отслеживание ошибок и сообщение о них
- Конечные точки проверки работоспособности
- Статистика выполнения запросов
Конфигурация
Автоматическая конфигурация с кузницей
Если вы установили с помощью Smithery, ваша конфигурация уже настроена. Вы можете просмотреть или изменить ее с помощью:
При перенастройке вы можете обновить любые данные соединения MySQL, а также параметры операции записи:
- Основные настройки подключения :
- MySQL Хост, Порт, Пользователь, Пароль, База данных
- Конфигурация SSL/TLS (если ваша база данных требует защищенных соединений)
- Разрешения на запись операции :
- Разрешить операции INSERT: установите значение true, если вы хотите разрешить добавление новых данных.
- Разрешить операции UPDATE: установите значение true, если вы хотите разрешить обновление существующих данных.
- Разрешить операции DELETE: установите значение true, если вы хотите разрешить удаление данных.
По соображениям безопасности все операции записи по умолчанию отключены. Включайте эти настройки только в том случае, если вам конкретно нужно, чтобы Клод изменил данные вашей базы данных.
Расширенные параметры конфигурации
Для большего контроля над поведением сервера MCP вы можете использовать следующие расширенные параметры конфигурации:
Переменные среды
Базовое подключение
MYSQL_SOCKET_PATH
: путь к сокету Unix для локальных подключений (например, "/tmp/mysql.sock")MYSQL_HOST
: Хост сервера MySQL (по умолчанию: "127.0.0.1") — игнорируется, если задан MYSQL_SOCKET_PATHMYSQL_PORT
: порт сервера MySQL (по умолчанию: «3306») — игнорируется, если задан MYSQL_SOCKET_PATHMYSQL_USER
: имя пользователя MySQL (по умолчанию: «root»)MYSQL_PASS
: пароль MySQLMYSQL_DB
: Имя целевой базы данных (оставьте пустым для режима с несколькими базами данных)
Конфигурация производительности
MYSQL_POOL_SIZE
: Размер пула соединений (по умолчанию: «10»)MYSQL_QUERY_TIMEOUT
: Время ожидания запроса в миллисекундах (по умолчанию: «30000»)MYSQL_CACHE_TTL
: время жизни кэша в миллисекундах (по умолчанию: «60000»)
Конфигурация безопасности
MYSQL_RATE_LIMIT
: Максимальное количество запросов в минуту (по умолчанию: «100»)MYSQL_MAX_QUERY_COMPLEXITY
: Максимальная оценка сложности запроса (по умолчанию: «1000»)MYSQL_SSL
: включить шифрование SSL/TLS (по умолчанию: «false»)ALLOW_INSERT_OPERATION
: включить операции INSERT (по умолчанию: «false»)ALLOW_UPDATE_OPERATION
: включить операции UPDATE (по умолчанию: «false»)ALLOW_DELETE_OPERATION
: Включить операции DELETE (по умолчанию: «false»)ALLOW_DDL_OPERATION
: Включить операции DDL (по умолчанию: «false»)SCHEMA_INSERT_PERMISSIONS
: разрешения INSERT, специфичные для схемыSCHEMA_UPDATE_PERMISSIONS
: разрешения UPDATE, специфичные для схемыSCHEMA_DELETE_PERMISSIONS
: разрешения DELETE, специфичные для схемыSCHEMA_DDL_PERMISSIONS
: разрешения DDL, специфичные для схемыMULTI_DB_WRITE_MODE
: включить операции записи в режиме нескольких баз данных (по умолчанию: «false»)
Конфигурация мониторинга
MYSQL_ENABLE_LOGGING
: включить ведение журнала запросов (по умолчанию: «false»)MYSQL_LOG_LEVEL
: Уровень ведения журнала (по умолчанию: «info»)MYSQL_METRICS_ENABLED
: включить метрики производительности (по умолчанию: «false»)
Режим нескольких баз данных
MCP-Server-MySQL поддерживает подключение к нескольким базам данных, когда не задана конкретная база данных. Это позволяет LLM запрашивать любую базу данных, к которой у пользователя MySQL есть доступ. Для получения полной информации см. README-MULTI-DB.md .
Включение режима нескольких баз данных
Чтобы включить режим multi-DB, просто оставьте переменную окружения MYSQL_DB
пустой. В режиме multi-DB запросы требуют квалификации схемы:
Разрешения, специфичные для схемы
Для точного контроля над операциями базы данных MCP-Server-MySQL теперь поддерживает разрешения, специфичные для схемы. Это позволяет разным базам данных иметь разные уровни доступа (только чтение, чтение-запись и т. д.).
Пример конфигурации
Полную информацию и рекомендации по безопасности см. в файле README-MULTI-DB.md .
Тестирование
Настройка базы данных
Перед запуском тестов необходимо настроить тестовую базу данных и заполнить ее тестовыми данными:
- Создать тестовую базу данных и пользователя
- Запустить скрипт настройки базы данныхЭто создаст необходимые таблицы и начальные данные. Скрипт находится в
scripts/setup-test-db.ts
- Настройте тестовую среду. Создайте файл
.env.test
в корне проекта (если он не существует): - Обновление скриптов package.json Добавьте эти скрипты в ваш package.json:
Проведение тестов
Проект включает в себя комплексный набор тестов для обеспечения функциональности и надежности:
Запуск оценок
Пакет evals загружает клиент mcp, который затем запускает файл index.ts, поэтому нет необходимости перестраиваться между тестами. Вы можете загрузить переменные среды, указав префикс команды npx. Полную документацию можно найти здесь .
Поиск неисправностей
Распространенные проблемы
- Проблемы с подключением
- Убедитесь, что сервер MySQL запущен и доступен.
- Проверьте учетные данные и разрешения
- Убедитесь, что конфигурация SSL/TLS корректна, если включена.
- Попробуйте подключиться с помощью клиента MySQL для подтверждения доступа.
- Проблемы с производительностью
- Отрегулируйте размер пула соединений
- Настройте значения времени ожидания запроса
- При необходимости включите кэширование запросов.
- Проверьте настройки сложности запроса
- Мониторинг использования ресурсов сервера
- Ограничения безопасности
- Обзор конфигурации ограничения скорости
- Проверьте настройки белого/черного списка запросов
- Проверьте настройки SSL/TLS
- Убедитесь, что у пользователя есть соответствующие разрешения MySQL.
- Разрешение пути Если вы столкнулись с ошибкой «Не удалось подключиться к серверу MCP mcp-server-mysql», явно укажите путь ко всем необходимым двоичным файлам:
Где я могу найти путь к bin-файлу моего node
? Чтобы получить его, выполните следующую команду:
Для ПУТИ
Для NODE_PATH
- Конкретные проблемы Claude Desktop
- Если вы видите журналы «Сервер отключен» в Claude Desktop, проверьте журналы в
~/Library/Logs/Claude/mcp-server-mcp_server_mysql.log
- Убедитесь, что вы используете абсолютный путь как к двоичному файлу Node, так и к серверному скрипту.
- Проверьте, правильно ли загружается ваш файл
.env
; используйте явные переменные среды в конфигурации. - Попробуйте запустить сервер напрямую из командной строки, чтобы проверить наличие проблем с подключением.
- Если вам нужны операции записи (INSERT, UPDATE, DELETE), установите соответствующие флаги в значение «true» в вашей конфигурации:
- Убедитесь, что у вашего пользователя MySQL есть соответствующие разрешения для операций, которые вы включаете.
- Для конфигурации прямого выполнения используйте:
- Если вы видите журналы «Сервер отключен» в Claude Desktop, проверьте журналы в
- Проблемы с аутентификацией
- Для MySQL 8.0+ убедитесь, что сервер поддерживает плагин аутентификации
caching_sha2_password
- Проверьте, настроен ли для вашего пользователя MySQL правильный метод аутентификации.
- При необходимости попробуйте создать пользователя с устаревшей аутентификацией:@lizhuangs
- Для MySQL 8.0+ убедитесь, что сервер поддерживает плагин аутентификации
- Я столкнулся с
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'dotenv' imported from
ошибки. Попробуйте это решение:
Спасибо @lizhuangs
Внося вклад
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на извлечение по адресу https://github.com/benborla/mcp-server-mysql
Большое спасибо следующим участникам:
Настройка разработки
- Клонировать репозиторий
- Установите зависимости:
pnpm install
- Соберите проект:
pnpm run build
- Запуск тестов:
pnpm test
Дорожная карта проекта
Мы активно работаем над улучшением этого сервера MCP. Проверьте наш CHANGELOG.md для получения подробной информации о запланированных функциях, включая:
- Расширенные возможности запросов с подготовленными заявлениями
- Расширенные функции безопасности
- Оптимизация производительности
- Комплексный мониторинг
- Расширенная информация о схеме
Если вы хотите внести свой вклад в любую из этих областей, пожалуйста, проверьте проблемы на GitHub или откройте новую, чтобы обсудить свои идеи.
Отправка изменений
- Форк репозитория
- Создайте ветку функции:
git checkout -b feature/your-feature-name
- Зафиксируйте изменения:
git commit -am 'Add some feature'
- Отправка в ветку:
git push origin feature/your-feature-name
- Отправить запрос на извлечение
Лицензия
Этот сервер MCP лицензирован по лицензии MIT. Подробности см. в файле LICENSE.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Сервер Model Context Protocol, который обеспечивает доступ только для чтения к базам данных MySQL, позволяя LLM проверять схемы баз данных и выполнять запросы только для чтения.
- Оглавление
- Требования
- Установка
- Компоненты
- Конфигурация
- Переменные среды
- Режим нескольких баз данных
- Разрешения, специфичные для схемы
- Тестирование
- Запуск оценок
- Поиск неисправностей
- Внося вклад
- Большое спасибо следующим участникам:
- Лицензия
Related Resources
Related MCP Servers
- -securityAlicense-qualityEnables LLMs to interact with MySQL databases by inspecting schemas and executing safe, read-only queries within transactions.Last updated -6JavaScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that provides read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426MIT License
- -security-license-qualityA Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -1JavaScript