MySQL MCP Server

MCP MCP Servers Open Source

MCP-сервер для MySQL: позволяет AI-агентам выполнять запросы, просматривать схему таблиц, исследовать данные и вносить изменения в MySQL-базу через естественный язык.

v0.1
v0.4.2
20.06.2026 current
Добавлен 03.07.2026 · Обновлён 07.07.2026 · MCP Servers
Установка
# Claude Desktop — claude_desktop_config.json:
{
  "mcpServers": {
    "mysql": {
      "command": "uvx",
      "args": ["mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "пароль",
        "MYSQL_DATABASE": "mydb"
      }
    }
  }
}

# Claude Code (CLI):
claude mcp add mysql -e MYSQL_HOST=localhost -e MYSQL_USER=root -e MYSQL_PASSWORD=пароль -e MYSQL_DATABASE=mydb -- uvx mysql-mcp-server

# OpenCode — ~/.config/opencode/opencode.json:
{
  "mcp": {
    "mysql": {
      "type": "local",
      "command": ["uvx", "mysql-mcp-server"],
      "environment": {
        "MYSQL_HOST": "localhost", "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "пароль", "MYSQL_DATABASE": "mydb"
      }
    }
  }
}
переведено ИИ

Тесты Загрузки на PyPI AgentAudit безопасен

MySQL MCP Server

Реализация Протокола Контекста Модели (Model Context Protocol, MCP), которая обеспечивает безопасное взаимодействие с базами данных MySQL. Этот компонент сервера облегчает коммуникацию между ИИ-приложениями (хостами/клиентами) и базами данных MySQL, делая исследование и анализ баз данных более безопасными и структурированными через управляемый интерфейс.

Примечание: MySQL MCP Server поддерживает как стандартный ввод/вывод (STDIO), так и режимы транспорта Streamable HTTP (SSE). Режим SSE рекомендуется для удаленных/хостинговых развертываний.

Варианты развертывания

  • ХостинговыйFronteir AI запускает сервер за вас; настройка на локальном компьютере не требуется.
  • ЛокальныйSmithery устанавливает и запускает сервер на вашем собственном компьютере.

Возможности

  • Вывод доступных таблиц MySQL в качестве ресурсов
  • Чтение содержимого таблиц
  • Выполнение SQL-запросов с правильной обработкой ошибок
  • Режим работы с несколькими базами данных (Опциональный MYSQL_DATABASE)
  • Поддержка транспорта SSE/HTTP (MCP_TRANSPORT=sse)
  • Поддержка SSH-туннелирования
  • Исчерпывающая информация о схеме
  • Выборка данных из таблиц
  • Безопасный доступ к базе данных через переменные окружения
  • Подробное журналирование

Установка

Ручная установка

pip install mysql-mcp-server

Установка через Smithery

Для автоматической установки MySQL MCP Server для Claude Desktop через Smithery:

npx -y @smithery/cli install designcomputer/mysql-mcp-server --client claude

Установка через Claude Code CLI

claude mcp add --transport stdio designcomputer-mysql_mcp_server uvx mysql_mcp_server

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

Установите следующие переменные окружения:

MYSQL_HOST=localhost     # Database host
MYSQL_PORT=3306         # Optional: Database port (defaults to 3306 if not specified)
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database # Optional: Omit for multi-database mode

# Advanced Configuration
MYSQL_SSL_MODE=DISABLED  # DISABLED, REQUIRED, VERIFY_CA, VERIFY_IDENTITY
MYSQL_CONNECT_TIMEOUT=10 # Timeout in seconds

# Connection behaviour (Optional)
MYSQL_SQL_MODE=TRADITIONAL           # SQL mode applied to the connection (default: TRADITIONAL)

# Compatibility (Optional)
MYSQL_CHARSET=utf8mb4
MYSQL_COLLATION=utf8mb4_unicode_ci
MYSQL_AUTH_PLUGIN=       # e.g., mysql_native_password for older MySQL versions
MYSQL_USE_PURE=false     # Force the pure-Python connector (default: false)
MYSQL_RAISE_ON_WARNINGS=false        # Raise on SQL warnings (default: false)

# SSE Transport (Optional)
MCP_TRANSPORT=stdio      # stdio or sse
MCP_SSE_HOST=0.0.0.0     # Listen on all interfaces (required for Docker/hosting)
PORT=8000                # HTTP port (fallback for MCP_SSE_PORT)
MCP_SSE_ALLOWED_HOSTS=   # Comma-separated allowed Host headers (default: localhost:{port},127.0.0.1:{port})

# SSH Tunneling (Optional)
MYSQL_SSH_ENABLE=false   # Set to true to enable
MYSQL_SSH_HOST=          # SSH jump host
MYSQL_SSH_PORT=22        # SSH port
MYSQL_SSH_USER=          # SSH username
MYSQL_SSH_KEY_PATH=      # Path to SSH private key
MYSQL_SSH_REMOTE_HOST=localhost # Host from the perspective of the jump host
MYSQL_SSH_REMOTE_PORT=3306
MYSQL_LOCAL_PORT=3330

Загрузка файла .env

При запуске сервер автоматически загружает файл .env с помощью python-dotenv, поэтому для локального использования вы можете просто:

cp .env.example .env   # then edit with your credentials

Файл читается из рабочей директории процесса (и родительских директорий), что работает, когда вы запускаете сервер самостоятельно из папки проекта.

⚠️ Claude Code / Claude Desktop: эти хосты запускают сервер из своей собственной рабочей директории, поэтому .env проекта не будет найден, и вы увидите ошибку Missing required database configuration. Вместо использования файла .env поместите ваши значения MYSQL_* в блок env конфигурации MCP (показан в разделе Использование ниже).

Режим работы с несколькими базами данных

Когда MYSQL_DATABASE не установлен, сервер работает в режиме нескольких баз данных: - list_resources возвращает все пользовательские базы данных (системные базы данных отфильтровываются) - Используйте полностью квалифицированные имена таблиц, такие как mydb.mytable, в SQL-запросах - Примечание: Поддерживаются только одиночные SQL-инструкции. Запросы из нескольких инструкций (например, USE db; SELECT ...) не поддерживаются.

Доступные инструменты

execute_sql

Выполняет любой стандартный SQL-запрос. - Аргументы: query (строка) - Возможности: Поддерживает SELECT, SHOW, DESCRIBE и DML (INSERT, UPDATE, DELETE). DML-операции помечаются как потенциально разрушающие. - Ограничение: Только одиночные инструкции. Запросы из нескольких инструкций не поддерживаются. - Межбазовый доступ: Используйте обозначение database.table для запроса к любой базе данных, независимо от настройки MYSQL_DATABASE.

get_schema_info

Предоставляет подробные метаданные о структурах базы данных. - Аргументы: table_name (опциональная строка) - Выход: Имена столбцов, типы, допустимость Null, значения по умолчанию и комментарии. - Межбазовый доступ: Передайте database.table для запроса таблицы вне базы, указанной в MYSQL_DATABASE; простые имена используют настроенную базу данных. - Правила идентификаторов: Имена должны содержать только буквенно-цифровые символы, символы подчеркивания и $ (точки допускаются как разделитель между именами базы данных и таблиц).

get_table_sample

Извлекает репрезентативную выборку данных. - Аргументы: table_name (строка), limit (опциональное целое число, максимум 20) - Пример использования: Быстрое понимание форматов и содержания данных без загрузки больших наборов результатов. - Межбазовый доступ: Передайте database.table для выборки данных из таблицы вне базы, указанной в MYSQL_DATABASE; простые имена используют настроенную базу данных. - Правила идентификаторов: Имена должны содержать только буквенно-цифровые символы, символы подчеркивания и $ (точки допускаются как разделитель между именами базы данных и таблиц).

Доступные промпты

Помимо инструментов, сервер предоставляет промпты MCP — пошаговые, управляемые рабочие процессы, которые клиент может запускать по запросу. В Claude Code они отображаются как слэш-команды (/mcp__<сервер>__<промпт>); в Claude Desktop они появляются в меню промптов (+).

Промпт Аргументы Описание
explore_database (нет) Систематическое исследование базы данных: обнаружение доступных таблиц, проверка их схем, выборка данных и резюмирование того, что там есть.
analyze_table table_name (обязательный) Детальный анализ конкретной таблицы: получение ее схемы, выборка данных и предложение полезных запросов. Принимает обозначение database.table для межбазовых запросов.

Пример (Claude Code):

/mcp__mysql__explore_database
/mcp__mysql__analyze_table customers

Оба промпта управляют существующими инструментами get_schema_info и get_table_sample; explore_database также использует перечисление ресурсов для подсчета таблиц.

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

С Claude Desktop

Добавьте это в ваш файл claude_desktop_config.json:

{
  "mcpServers": {
    "mysql": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/mysql_mcp_server",
        "run",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

Более подробные примеры и руководства для конкретных агентов см. в MCP_USECASES.md.

С Visual Studio Code

Добавьте это в ваш файл mcp.json:

{
  "mcpServers": {
    "mysql": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "mysql-mcp-server",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

Примечание: Для работы потребуется установить uv

Отладка с помощью MCP Inspector

Хотя MySQL MCP Server не предназначен для запуска автономно или напрямую из командной строки с помощью Python, вы можете использовать MCP Inspector для его отладки.

MCP Inspector предоставляет удобный способ тестирования и отладки вашей реализации MCP:

# Install dependencies
pip install -r requirements.txt
# Use the MCP Inspector for debugging (do not run directly with Python)

MySQL MCP Server предназначен для интеграции с ИИ-приложениями, такими как Claude Desktop, и не должен запускаться напрямую как автономная программа на Python.

Разработка

# Clone the repository
git clone https://github.com/designcomputer/mysql_mcp_server.git
cd mysql_mcp_server
# Create virtual environment
python -m venv venv
source venv/bin/activate  # or `venv\Scripts\activate` on Windows
# Install development dependencies
pip install -r requirements-dev.txt
# Copy the example config and edit with your credentials
cp .env.example .env
# Edit .env with your MySQL connection details
# Run tests
pytest

Соображения безопасности

  • Валидация идентификаторов: Имена таблиц и баз данных, передаваемые в get_schema_info и get_table_sample, проверяются по строгому списку разрешенных (только буквенно-цифровые символы, подчеркивание и $; одна точка допускается как разделитель database.table). Другие специальные символы отвергаются для предотвращения SQL-инъекций.
  • Шифрованный доступ: Полная поддержка SSL/TLS и SSH-туннелирования для безопасных удаленных подключений.
  • Конфиденциальность журналов: Пароли и приватные ключи SSH автоматически маскируются в журналах сервера.
  • Минимальные привилегии: Всегда используйте специализированного пользователя MySQL с минимально необходимыми правами.
  • SSE-транспорт не имеет встроенной аутентификации. SSE-сервер по умолчанию привязывается к 0.0.0.0 и принимает подключения без учетных данных. Если вы открываете его за пределами localhost, поместите его за обратный прокси (nginx, Caddy, Traefik), который обеспечивает аутентификацию. Пример с nginx и HTTP Basic Auth:

nginx location /sse { auth_basic "MCP"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_buffering off; } location /messages/ { auth_basic "MCP"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; }

Установите MCP_SSE_HOST=127.0.0.1, чтобы сервер слушал только на loopback, и прокси стал единственной публичной точкой входа. Установите MCP_SSE_ALLOWED_HOSTS на публичное имя хоста, на которое перенаправляет ваш прокси (например, MCP_SSE_ALLOWED_HOSTS=myserver.example.com:443).

См. SECURITY.md для исчерпывающего руководства по обеспечению безопасности вашего развертывания.

Рекомендации по безопасности

Эта реализация MCP требует доступа к базе данных для работы. В целях безопасности: 1. Создайте специализированного пользователя MySQL с минимальными правами 2. Никогда не используйте учетные данные root или административные аккаунты 3. Ограничьте доступ к базе данных только необходимыми операциями 4. Включите журналирование для аудита 5. Регулярно проводите аудит безопасности доступа к базе данных

См. Руководство по конфигурации безопасности MySQL для подробных инструкций по: - Созданию ограниченного пользователя MySQL - Установке соответствующих прав - Мониторингу доступа к базе данных - Рекомендациям по безопасности

⚠️ ВАЖНО: Всегда соблюдайте принцип минимальных привилегий при настройке доступа к базе данных.

Лицензия

Лицензия MIT - подробности см. в файле LICENSE.

Участие в разработке

  1. Сделайте форк репозитория
  2. Создайте свою ветку для функции (git checkout -b feature/amazing-feature)
  3. Фиксируйте ваши изменения (git commit -m 'Add some amazing feature')
  4. Отправьте изменения в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request
Комментарии
Войдите, чтобы оставить комментарий