MCP-сервер для MySQL: позволяет AI-агентам выполнять запросы, просматривать схему таблиц, исследовать данные и вносить изменения в MySQL-базу через естественный язык.
# 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"
}
}
}
}
Реализация Протокола Контекста Модели (Model Context Protocol, MCP), которая обеспечивает безопасное взаимодействие с базами данных MySQL. Этот компонент сервера облегчает коммуникацию между ИИ-приложениями (хостами/клиентами) и базами данных MySQL, делая исследование и анализ баз данных более безопасными и структурированными через управляемый интерфейс.
Примечание: MySQL MCP Server поддерживает как стандартный ввод/вывод (STDIO), так и режимы транспорта Streamable HTTP (SSE). Режим SSE рекомендуется для удаленных/хостинговых развертываний.
MYSQL_DATABASE)MCP_TRANSPORT=sse)pip install mysql-mcp-server
Для автоматической установки MySQL MCP Server для Claude Desktop через Smithery:
npx -y @smithery/cli install designcomputer/mysql-mcp-server --client claude
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_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.
Добавьте это в ваш файл 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
Хотя 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-инъекций.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.
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)