mcp_mysql_server
Введение
mcp_mysql_server_pro не только поддерживает операции MySQL CRUD, но также включает в себя возможности анализа аномалий базы данных и позволяет разработчикам легко расширять возможности с помощью специальных инструментов.
Поддерживает режимы STDIO и SSE
Поддерживает многократное выполнение SQL, разделенное символом «;»
Поддерживает запросы имен таблиц и полей базы данных на основе комментариев к таблицам.
Поддерживает анализ плана выполнения SQL
Поддерживает преобразование китайского поля в пиньинь
Поддерживает анализ блокировки таблиц
Поддерживает анализ состояния работоспособности базы данных
Поддерживает управление разрешениями с тремя ролями: только чтение, запись и администратор
"readonly": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN"], # Read-only permissions "writer": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE"], # Read-write permissions "admin": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] # Administrator permissionsПоддерживает вызов шаблона подсказки
Related MCP server: SQL Server Express MCP Server
Список инструментов
Название инструмента | Описание |
выполнить_sql | Инструмент выполнения SQL, который может выполнять команды ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] на основе конфигурации разрешений |
получить_китайские_инициалы | Преобразовать китайские названия полей в инициалы пиньинь |
get_db_health_running | Анализ состояния работоспособности MySQL (состояние соединения, состояние транзакции, состояние выполнения, обнаружение состояния блокировки) |
получить_таблицу_описание | Поиск структур таблиц в базе данных на основе имен таблиц, поддержка многотабличных запросов |
получить_табличный_индекс | Поиск индексов таблиц в базе данных на основе имен таблиц, поддержка многотабличных запросов |
получить_таблицу_блокировку | Проверьте, есть ли блокировки на уровне строк или таблиц на текущем сервере MySQL. |
получить_имя_таблицы | Поиск названий таблиц в базе данных на основе комментариев и описаний таблиц. |
get_db_health_index_usage | Получите данные об использовании индекса текущей подключенной базы данных MySQL, включая ситуации с избыточными индексами, ситуации с неэффективной работой индексов и 5 основных неиспользуемых ситуаций с индексами, время запроса которых превышает 30 секунд. |
Список подсказок
Имя подсказки | Описание |
анализ-mysql-prompt | Это подсказка для анализа проблем, связанных с MySQL. |
запрос-таблица-данных-подсказка | Это приглашение для запроса табличных данных с помощью инструментов. Если описание пустое, оно будет инициализировано как помощник по запросам базы данных MySQL |
Инструкция по применению
Режим SSE
Используйте uv для запуска службы
Добавьте следующий контент в инструменты клиента mcp, например, cursor, cline и т. д.
mcp json следующим образом:
{
"mcpServers": {
"operateMysql": {
"name": "operateMysql",
"description": "",
"isActive": true,
"baseUrl": "http://localhost:9000/sse"
}
}
}Измените содержимое файла .env, чтобы обновить информацию о подключении к базе данных, указав сведения о вашей базе данных:
# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=readonly # Optional, default is 'readonly'. Available values: readonly, writer, adminКоманды запуска:
# Download dependencies
uv sync
# Start
uv run server.pyРежим STDIO
Добавьте следующий контент в инструменты клиента mcp, например, cursor, cline и т. д.
mcp json следующим образом:
{
"mcpServers": {
"operateMysql": {
"isActive": true,
"name": "operateMysql",
"command": "uv",
"args": [
"--directory",
"G:\\python\\mysql_mcp\\src", # Replace this with your project path
"run",
"server.py",
"--stdio"
],
"env": {
"MYSQL_HOST": "192.168.xxx.xxx",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "root",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "readonly" # Optional, default is 'readonly'. Available values: readonly, writer, admin
}
}
}
} Расширения для пользовательских инструментов
Добавьте новый класс инструмента в пакет handles, унаследуйте его от BaseHandler и реализуйте методы get_tool_description и run_tool.
Импортируйте новый инструмент в init .py, чтобы сделать его доступным на сервере.
Примеры
Создайте новую таблицу и вставьте данные, формат запроса должен быть следующим:
# Task
Create an organizational structure table with the following structure: department name, department number, parent department, is valid.
# Requirements
- Table name: department
- Common fields need indexes
- Each field needs comments, table needs comment
- Generate 5 real data records after creationЗапрос данных на основе комментариев к таблице, выполнив следующий запрос:
Search for data with Department name 'Executive Office' in Department organizational structure tableПроанализируйте медленный SQL, запросив следующее:
select * from t_jcsjzx_hjkq_cd_xsz_sk xsz
left join t_jcsjzx_hjkq_jcd jcd on jcd.cddm = xsz.cddm
Based on current index situation, review execution plan and provide optimization suggestions in markdown format, including table index status, execution details, and optimization recommendationsПроанализируйте проблемы взаимоблокировки SQL, выполнив следующие действия:
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' is stuck, please analyze the causeПроанализируйте запрос о состоянии здоровья следующим образом:
Check the current health status of MySQLAppeared in Searches
- Developing and redeveloping web frontend and Python backend projects, including frontend-backend integration and debugging
- Using Laravel Helper Functions and Resolving MySQL Table Query Errors
- A platform for managing code repositories and DevOps workflows
- Frontend Development Tool for Detecting Errors
- Searching for Reddit discussions about server-sent events (SSE)