Skip to main content
Glama

MCP Server for MySQL

MIT License
5,426
418
  • Linux
  • Apple

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-сервер с помощью следующей команды в своем проекте:

  1. Посетите https://smithery.ai/server/@benborla29/mcp-server-mysql
  2. Следуйте инструкциям для курсора.

MCP Get предоставляет централизованный реестр серверов MCP и упрощает процесс установки.

Использование NPM/PNPM

Для ручной установки:

# Using npm npm install -g @benborla29/mcp-server-mysql # Using pnpm pnpm add -g @benborla29/mcp-server-mysql

После ручной установки вам необходимо настроить приложение LLM для использования сервера MCP (см. раздел «Конфигурация» ниже).

Запуск из локального репозитория

Если вы хотите клонировать и запустить этот сервер MCP непосредственно из исходного кода, выполните следующие действия:

  1. Клонировать репозиторий
    git clone https://github.com/benborla/mcp-server-mysql.git cd mcp-server-mysql
  2. Установить зависимости
    npm install # or pnpm install
  3. Построить проект
    npm run build # or pnpm run build
  4. Настроить рабочий стол КлодаДобавьте следующее в файл конфигурации Claude Desktop ( claude_desktop_config.json ):
    { "mcpServers": { "mcp_server_mysql": { "command": "/path/to/node", "args": [ "/full/path/to/mcp-server-mysql/dist/index.js" ], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "your_password", "MYSQL_DB": "your_database", "ALLOW_INSERT_OPERATION": "false", "ALLOW_UPDATE_OPERATION": "false", "ALLOW_DELETE_OPERATION": "false", "PATH": "/Users/atlasborla/Library/Application Support/Herd/config/nvm/versions/node/v22.9.0/bin:/usr/bin:/bin", // <--- Important to add the following, run in your terminal `echo "$(which node)/../"` to get the path "NODE_PATH": "/Users/atlasborla/Library/Application Support/Herd/config/nvm/versions/node/v22.9.0/lib/node_modules" // <--- Important to add the following, run in your terminal `echo "$(which node)/../../lib/node_modules"` } } } }
    Заменять:
    • /path/to/node с полным путем к вашему двоичному файлу Node.js (найдите его с помощью which node )
    • /full/path/to/mcp-server-mysql с полным путем к месту, куда вы клонировали репозиторий
    • Установите учетные данные MySQL в соответствии с вашей средой.
  5. Протестируйте сервер
    # Run the server directly to test node dist/index.js
    Если подключение к MySQL прошло успешно, вы готовы использовать его с Claude Desktop.

Компоненты

Инструменты

  • mysql_query
    • Выполнение SQL-запросов к подключенной базе данных
    • Ввод: sql (строка): SQL-запрос для выполнения.
    • По умолчанию ограничено операциями ТОЛЬКО ЧТЕНИЕ
    • Дополнительные операции записи (если включены через конфигурацию):
      • INSERT: Добавить новые данные в таблицы (требуется ALLOW_INSERT_OPERATION=true )
      • ОБНОВЛЕНИЕ: изменение существующих данных (требуется ALLOW_UPDATE_OPERATION=true )
      • DELETE: Удалить данные (требуется ALLOW_DELETE_OPERATION=true )
    • Все операции выполняются в рамках транзакции с правильной обработкой фиксации/отката.
    • Поддерживает подготовленные операторы для безопасной обработки параметров.
    • Настраиваемые тайм-ауты запросов и разбиение результатов на страницы
    • Встроенная статистика выполнения запросов

Ресурсы

Сервер предоставляет исчерпывающую информацию о базе данных:

  • Схемы таблиц
    • Информация о схеме JSON для каждой таблицы
    • Имена столбцов и типы данных
    • Индексная информация и ограничения
    • Отношения внешнего ключа
    • Статистика и метрики таблиц
    • Автоматически обнаруживается из метаданных базы данных

Функции безопасности

  • Предотвращение SQL-инъекций с помощью подготовленных операторов
  • Запрос возможностей белого/черного списка
  • Ограничение скорости выполнения запроса
  • Анализ сложности запроса
  • Настраиваемое шифрование соединения
  • Обеспечение транзакций только для чтения

Оптимизация производительности

  • Оптимизированный пул соединений
  • Кэширование результатов запроса
  • Потоковая передача большого набора результатов
  • Анализ плана выполнения запроса
  • Настраиваемые тайм-ауты запросов

Мониторинг и отладка

  • Комплексное ведение журнала запросов
  • Сбор показателей производительности
  • Отслеживание ошибок и сообщение о них
  • Конечные точки проверки работоспособности
  • Статистика выполнения запросов

Конфигурация

Автоматическая конфигурация с кузницей

Если вы установили с помощью Smithery, ваша конфигурация уже настроена. Вы можете просмотреть или изменить ее с помощью:

smithery configure @benborla29/mcp-server-mysql

При перенастройке вы можете обновить любые данные соединения MySQL, а также параметры операции записи:

  • Основные настройки подключения :
    • MySQL Хост, Порт, Пользователь, Пароль, База данных
    • Конфигурация SSL/TLS (если ваша база данных требует защищенных соединений)
  • Разрешения на запись операции :
    • Разрешить операции INSERT: установите значение true, если вы хотите разрешить добавление новых данных.
    • Разрешить операции UPDATE: установите значение true, если вы хотите разрешить обновление существующих данных.
    • Разрешить операции DELETE: установите значение true, если вы хотите разрешить удаление данных.

По соображениям безопасности все операции записи по умолчанию отключены. Включайте эти настройки только в том случае, если вам конкретно нужно, чтобы Клод изменил данные вашей базы данных.

Расширенные параметры конфигурации

Для большего контроля над поведением сервера MCP вы можете использовать следующие расширенные параметры конфигурации:

{ "mcpServers": { "mcp_server_mysql": { "command": "/path/to/npx/binary/npx", "args": [ "-y", "@benborla29/mcp-server-mysql" ], "env": { // Basic connection settings "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "", "MYSQL_DB": "db_name", "PATH": "/path/to/node/bin:/usr/bin:/bin", // Performance settings "MYSQL_POOL_SIZE": "10", "MYSQL_QUERY_TIMEOUT": "30000", "MYSQL_CACHE_TTL": "60000", // Security settings "MYSQL_RATE_LIMIT": "100", "MYSQL_MAX_QUERY_COMPLEXITY": "1000", "MYSQL_SSL": "true", // Monitoring settings "ENABLE_LOGGING": "true", "MYSQL_LOG_LEVEL": "info", "MYSQL_METRICS_ENABLED": "true", // Write operation flags "ALLOW_INSERT_OPERATION": "false", "ALLOW_UPDATE_OPERATION": "false", "ALLOW_DELETE_OPERATION": "false" } } } }

Переменные среды

Базовое подключение

  • MYSQL_SOCKET_PATH : путь к сокету Unix для локальных подключений (например, "/tmp/mysql.sock")
  • MYSQL_HOST : Хост сервера MySQL (по умолчанию: "127.0.0.1") — игнорируется, если задан MYSQL_SOCKET_PATH
  • MYSQL_PORT : порт сервера MySQL (по умолчанию: «3306») — игнорируется, если задан MYSQL_SOCKET_PATH
  • MYSQL_USER : имя пользователя MySQL (по умолчанию: «root»)
  • MYSQL_PASS : пароль MySQL
  • MYSQL_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 запросы требуют квалификации схемы:

-- Use fully qualified table names SELECT * FROM database_name.table_name; -- Or use USE statements to switch between databases USE database_name; SELECT * FROM table_name;

Разрешения, специфичные для схемы

Для точного контроля над операциями базы данных MCP-Server-MySQL теперь поддерживает разрешения, специфичные для схемы. Это позволяет разным базам данных иметь разные уровни доступа (только чтение, чтение-запись и т. д.).

Пример конфигурации

SCHEMA_INSERT_PERMISSIONS=development:true,test:true,production:false SCHEMA_UPDATE_PERMISSIONS=development:true,test:true,production:false SCHEMA_DELETE_PERMISSIONS=development:false,test:true,production:false SCHEMA_DDL_PERMISSIONS=development:false,test:true,production:false

Полную информацию и рекомендации по безопасности см. в файле README-MULTI-DB.md .

Тестирование

Настройка базы данных

Перед запуском тестов необходимо настроить тестовую базу данных и заполнить ее тестовыми данными:

  1. Создать тестовую базу данных и пользователя
    -- Connect as root and create test database CREATE DATABASE IF NOT EXISTS mcp_test; -- Create test user with appropriate permissions CREATE USER IF NOT EXISTS 'mcp_test'@'localhost' IDENTIFIED BY 'mcp_test_password'; GRANT ALL PRIVILEGES ON mcp_test.* TO 'mcp_test'@'localhost'; FLUSH PRIVILEGES;
  2. Запустить скрипт настройки базы данных
    # Run the database setup script pnpm run setup:test:db
    Это создаст необходимые таблицы и начальные данные. Скрипт находится в scripts/setup-test-db.ts
  3. Настройте тестовую среду. Создайте файл .env.test в корне проекта (если он не существует):
    MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_USER=mcp_test MYSQL_PASS=mcp_test_password MYSQL_DB=mcp_test
  4. Обновление скриптов package.json Добавьте эти скрипты в ваш package.json:
    { "scripts": { "setup:test:db": "ts-node scripts/setup-test-db.ts", "pretest": "pnpm run setup:test:db", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage" } }

Проведение тестов

Проект включает в себя комплексный набор тестов для обеспечения функциональности и надежности:

# First-time setup pnpm run setup:test:db # Run all tests pnpm test

Запуск оценок

Пакет evals загружает клиент mcp, который затем запускает файл index.ts, поэтому нет необходимости перестраиваться между тестами. Вы можете загрузить переменные среды, указав префикс команды npx. Полную документацию можно найти здесь .

OPENAI_API_KEY=your-key npx mcp-eval evals.ts index.ts

Поиск неисправностей

Распространенные проблемы

  1. Проблемы с подключением
    • Убедитесь, что сервер MySQL запущен и доступен.
    • Проверьте учетные данные и разрешения
    • Убедитесь, что конфигурация SSL/TLS корректна, если включена.
    • Попробуйте подключиться с помощью клиента MySQL для подтверждения доступа.
  2. Проблемы с производительностью
    • Отрегулируйте размер пула соединений
    • Настройте значения времени ожидания запроса
    • При необходимости включите кэширование запросов.
    • Проверьте настройки сложности запроса
    • Мониторинг использования ресурсов сервера
  3. Ограничения безопасности
    • Обзор конфигурации ограничения скорости
    • Проверьте настройки белого/черного списка запросов
    • Проверьте настройки SSL/TLS
    • Убедитесь, что у пользователя есть соответствующие разрешения MySQL.
  4. Разрешение пути Если вы столкнулись с ошибкой «Не удалось подключиться к серверу MCP mcp-server-mysql», явно укажите путь ко всем необходимым двоичным файлам:
{ "env": { "PATH": "/path/to/node/bin:/usr/bin:/bin" } }

Где я могу найти путь к bin-файлу моего node ? Чтобы получить его, выполните следующую команду:

Для ПУТИ

echo "$(which node)/../"

Для NODE_PATH

echo "$(which node)/../../lib/node_modules"
  1. Конкретные проблемы Claude Desktop
    • Если вы видите журналы «Сервер отключен» в Claude Desktop, проверьте журналы в ~/Library/Logs/Claude/mcp-server-mcp_server_mysql.log
    • Убедитесь, что вы используете абсолютный путь как к двоичному файлу Node, так и к серверному скрипту.
    • Проверьте, правильно ли загружается ваш файл .env ; используйте явные переменные среды в конфигурации.
    • Попробуйте запустить сервер напрямую из командной строки, чтобы проверить наличие проблем с подключением.
    • Если вам нужны операции записи (INSERT, UPDATE, DELETE), установите соответствующие флаги в значение «true» в вашей конфигурации:
      "env": { "ALLOW_INSERT_OPERATION": "true", // Enable INSERT operations "ALLOW_UPDATE_OPERATION": "true", // Enable UPDATE operations "ALLOW_DELETE_OPERATION": "true" // Enable DELETE operations }
    • Убедитесь, что у вашего пользователя MySQL есть соответствующие разрешения для операций, которые вы включаете.
    • Для конфигурации прямого выполнения используйте:
      { "mcpServers": { "mcp_server_mysql": { "command": "/full/path/to/node", "args": [ "/full/path/to/mcp-server-mysql/dist/index.js" ], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "your_password", "MYSQL_DB": "your_database" } } } }
  2. Проблемы с аутентификацией
    • Для MySQL 8.0+ убедитесь, что сервер поддерживает плагин аутентификации caching_sha2_password
    • Проверьте, настроен ли для вашего пользователя MySQL правильный метод аутентификации.
    • При необходимости попробуйте создать пользователя с устаревшей аутентификацией:
      CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
      @lizhuangs
  3. Я столкнулся с Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'dotenv' imported from ошибки. Попробуйте это решение:
npx -y -p @benborla29/mcp-server-mysql -p dotenv mcp-server-mysql

Спасибо @lizhuangs

Внося вклад

Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на извлечение по адресу https://github.com/benborla/mcp-server-mysql

Большое спасибо следующим участникам:

Настройка разработки

  1. Клонировать репозиторий
  2. Установите зависимости: pnpm install
  3. Соберите проект: pnpm run build
  4. Запуск тестов: pnpm test

Дорожная карта проекта

Мы активно работаем над улучшением этого сервера MCP. Проверьте наш CHANGELOG.md для получения подробной информации о запланированных функциях, включая:

  • Расширенные возможности запросов с подготовленными заявлениями
  • Расширенные функции безопасности
  • Оптимизация производительности
  • Комплексный мониторинг
  • Расширенная информация о схеме

Если вы хотите внести свой вклад в любую из этих областей, пожалуйста, проверьте проблемы на GitHub или откройте новую, чтобы обсудить свои идеи.

Отправка изменений

  1. Форк репозитория
  2. Создайте ветку функции: git checkout -b feature/your-feature-name
  3. Зафиксируйте изменения: git commit -am 'Add some feature'
  4. Отправка в ветку: git push origin feature/your-feature-name
  5. Отправить запрос на извлечение

Лицензия

Этот сервер MCP лицензирован по лицензии MIT. Подробности см. в файле LICENSE.

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Сервер Model Context Protocol, который обеспечивает доступ только для чтения к базам данных MySQL, позволяя LLM проверять схемы баз данных и выполнять запросы только для чтения.

  1. Оглавление
    1. Требования
      1. Установка
        1. Курсор
        2. Использование NPM/PNPM
        3. Запуск из локального репозитория
      2. Компоненты
        1. Инструменты
        2. Ресурсы
        3. Функции безопасности
        4. Оптимизация производительности
        5. Мониторинг и отладка
      3. Конфигурация
        1. Автоматическая конфигурация с кузницей
        2. Расширенные параметры конфигурации
      4. Переменные среды
        1. Базовое подключение
        2. Конфигурация производительности
        3. Конфигурация безопасности
        4. Конфигурация мониторинга
      5. Режим нескольких баз данных
        1. Включение режима нескольких баз данных
      6. Разрешения, специфичные для схемы
        1. Пример конфигурации
      7. Тестирование
        1. Настройка базы данных
        2. Проведение тестов
      8. Запуск оценок
        1. Поиск неисправностей
          1. Распространенные проблемы
        2. Внося вклад
          1. Большое спасибо следующим участникам:
            1. Настройка разработки
            2. Дорожная карта проекта
            3. Отправка изменений
          2. Лицензия

            Related MCP Servers

            • -
              security
              A
              license
              -
              quality
              Enables LLMs to interact with MySQL databases by inspecting schemas and executing safe, read-only queries within transactions.
              Last updated -
              6
              JavaScript
              MIT License
              • Apple
            • -
              security
              A
              license
              -
              quality
              A 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,426
              TypeScript
              MIT License
              • Linux
              • Apple
            • -
              security
              A
              license
              -
              quality
              A 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,426
              MIT License
            • -
              security
              -
              license
              -
              quality
              A Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.
              Last updated -
              1
              JavaScript

            View all related MCP servers

            MCP directory API

            We provide all the information about MCP servers via our MCP API.

            curl -X GET 'https://glama.ai/api/mcp/v1/servers/benborla/mcp-server-mysql'

            If you have feedback or need assistance with the MCP directory API, please join our Discord server