MySQL Server Pro
Um servidor MySQL com operações CRUD, análise de anomalias de banco de dados e suporte para SSE e STDIO.
Documentação
mcp_mysql_server_pro
Introdução
O mcp_mysql_server_pro não se trata apenas de operações CRUD no MySQL, mas também inclui capacidades de análise de anomalias no banco de dados e facilita a extensão com ferramentas personalizadas para desenvolvedores.
- Suporta todos os modos de transferência do Model Context Protocol (MCP) (STDIO, SSE, Streamable Http)
- Suporta OAuth2.0
- Suporta execução de múltiplos SQL, separados por ";"
- Suporta consulta de nomes de tabelas e campos do banco de dados com base em comentários de tabela
- Suporta análise de plano de execução SQL
- Suporta conversão de campos chineses para pinyin
- Suporta análise de bloqueio de tabela
- Suporta análise de status de saúde do banco de dados
- Suporta controle de permissão com três papéis: somente leitura, escritor e administrador
"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 - Suporta invocação de modelo de prompt
Lista de Ferramentas
| Nome da Ferramenta | Descrição |
|---|---|
| execute_sql | Ferramenta de execução SQL que pode executar comandos ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] com base na configuração de permissão |
| get_chinese_initials | Converte nomes de campos chineses para iniciais em pinyin |
| get_db_health_running | Analisa o status de saúde do MySQL (status de conexão, status de transação, status de execução, detecção de status de bloqueio) |
| get_table_desc | Pesquisa estruturas de tabelas no banco de dados com base em nomes de tabelas, suportando consultas de múltiplas tabelas |
| get_table_index | Pesquisa índices de tabelas no banco de dados com base em nomes de tabelas, suportando consultas de múltiplas tabelas |
| get_table_lock | Verifica se há bloqueios de nível de linha ou bloqueios de nível de tabela no servidor MySQL atual |
| get_table_name | Pesquisa nomes de tabelas no banco de dados com base em comentários e descrições de tabelas |
| get_db_health_index_usage | Obtém o uso de índices do banco de dados mysql atualmente conectado, incluindo situações de índices redundantes, situações de índices com baixo desempenho e as 5 principais situações de índices não utilizados com tempos de consulta superiores a 30 segundos |
| optimize_sql | Ferramenta profissional de otimização de desempenho SQL, fornecendo sugestões de otimização especializadas com base em planos de execução MySQL, informações de estrutura de tabela, volume de dados de tabela e índices de tabela. |
| use_prompt_queryTableData | Use prompts integrados para permitir que o modelo construa uma chamada em cadeia de ferramentas no mcp (não é uma ferramenta fixa comumente usada, você precisa modificar o código para ativá-la, veja esta classe para detalhes) |
Lista de Prompts
| Nome do Prompt | Descrição |
|---|---|
| analyzing-mysql-prompt | Este é um prompt para analisar problemas relacionados ao MySQL |
| query-table-data-prompt | Este é um prompt para consultar dados de tabela usando ferramentas. Se a descrição estiver vazia, será inicializado como um assistente de consulta de banco de dados MySQL |
Instruções de Uso
Instalação e Configuração
- Instale o Pacote
pip install mysql_mcp_server_pro
- Configure as Variáveis de Ambiente
Crie um arquivo
.envcom o seguinte conteúdo:
# MySQL Database Configuration
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
# Optional, default is 'readonly'. Available values: readonly, writer, admin
MYSQL_ROLE=readonly
- Execute o Serviço
# SSE mode
mysql_mcp_server_pro --mode sse --envfile /path/to/.env
## Streamable Http mode (default)
mysql_mcp_server_pro --envfile /path/to/.env
# Streamable Http oauth Authentication
mysql_mcp_server_pro --oauth true
- cliente mcp
vá ver "Use uv para iniciar o serviço" ^_^
Nota:
- O arquivo
.envdeve ser colocado no diretório onde você executa o comando ou use o parâmetro --envfile para especificar o caminho - Você também pode definir essas variáveis diretamente no seu ambiente
- Certifique-se de que a configuração do banco de dados está correta e pode conectar
Executar com uvx, Configuração do Cliente
- Este método pode ser usado diretamente em clientes que suportam MCP, sem necessidade de baixar o código-fonte. Por exemplo, plugin Tongyi Qianwen, editor trae, etc.
{
"mcpServers": {
"mysql": {
"command": "uvx",
"args": [
"--from",
"mysql_mcp_server_pro",
"mysql_mcp_server_pro",
"--mode",
"stdio"
],
"env": {
"MYSQL_HOST": "192.168.x.xxx",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "root",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "admin"
}
}
}
}
Desenvolvimento Local com modo Streamable Http
- Use uv para iniciar o serviço
Adicione o seguinte conteúdo às suas ferramentas de cliente mcp, como cursor, cline, etc.
mcp json da seguinte forma:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:3000/mcp/"
}
}
}
Modifique o conteúdo do arquivo .env para atualizar as informações de conexão do banco de dados com os detalhes do seu banco de dados:
# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin
Comandos de início:
# Download dependencies
uv sync
# Start
uv run -m mysql_mcp_server_pro.server
# Custom env file location
uv run -m mysql_mcp_server_pro.server --envfile /path/to/.env
# oauth Authentication
uv run -m mysql_mcp_server_pro.server --oauth true
Desenvolvimento Local com Modo SSE
- Use uv para iniciar o serviço
Adicione o seguinte conteúdo às suas ferramentas de cliente mcp, como cursor, cline, etc.
mcp json da seguinte forma:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"description": "",
"isActive": true,
"url": "http://localhost:9000/sse"
}
}
}
Modifique o conteúdo do arquivo .env para atualizar as informações de conexão do banco de dados com os detalhes do seu banco de dados:
# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin
Comandos de início:
# Download dependencies
uv sync
# Start
uv run -m mysql_mcp_server_pro.server --mode sse
# Custom env file location
uv run -m mysql_mcp_server_pro.server --mode sse --envfile /path/to/.env
Desenvolvimento Local com Modo STDIO
Adicione o seguinte conteúdo às suas ferramentas de cliente mcp, como cursor, cline, etc.
mcp json da seguinte forma:
{
"mcpServers": {
"operateMysql": {
"isActive": true,
"name": "operateMysql",
"command": "uv",
"args": [
"--directory",
"/Volumes/mysql_mcp_server_pro/src/mysql_mcp_server_pro", # Replace this with your project path
"run",
"-m",
"mysql_mcp_server_pro.server",
"--mode",
"stdio"
],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "123456",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "admin"
}
}
}
}
Extensões de Ferramentas Personalizadas
-
Adicione uma nova classe de ferramenta no pacote handles, herde de BaseHandler e implemente os métodos get_tool_description e run_tool
-
Importe a nova ferramenta em init.py para disponibilizá-la no servidor
Autenticação OAuth2.0
- Inicie o serviço de autenticação. Por padrão, ele usa a autenticação integrada do modo de senha OAuth 2.0. Você pode modificar o endereço do seu próprio serviço de autenticação no arquivo env.
uv run -m mysql_mcp_server_pro.server --oauth true
-
Visite o serviço de autenticação em http://localhost:3000/login. O nome de usuário e a senha padrão estão configurados no arquivo env.
-
Copie o token e adicione-o aos cabeçalhos da solicitação, por exemplo:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:3000/mcp/",
"headers": {
"authorization": "bearer TOKEN_VALUE"
}
}
}
}
Exemplos
- Crie uma nova tabela e insira dados, o formato do prompt é o seguinte:
# 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
- Consulte dados com base em comentários de tabela, o prompt é o seguinte:
Search for data with Department name 'Executive Office' in Department organizational structure table
- Analise SQL lento, o prompt é o seguinte:
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
- Analise problemas de deadlock SQL, o prompt é o seguinte:
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' is stuck, please analyze the cause
- Analise o prompt de status de saúde da seguinte forma
Check the current health status of MySQL
