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

简体中文 English MseeP.ai Security Assessment Badge MCPHub

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 FerramentaDescrição
execute_sqlFerramenta 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_initialsConverte nomes de campos chineses para iniciais em pinyin
get_db_health_runningAnalisa 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_descPesquisa estruturas de tabelas no banco de dados com base em nomes de tabelas, suportando consultas de múltiplas tabelas
get_table_indexPesquisa índices de tabelas no banco de dados com base em nomes de tabelas, suportando consultas de múltiplas tabelas
get_table_lockVerifica se há bloqueios de nível de linha ou bloqueios de nível de tabela no servidor MySQL atual
get_table_namePesquisa nomes de tabelas no banco de dados com base em comentários e descrições de tabelas
get_db_health_index_usageObté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_sqlFerramenta 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_queryTableDataUse 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 PromptDescrição
analyzing-mysql-promptEste é um prompt para analisar problemas relacionados ao MySQL
query-table-data-promptEste é 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

  1. Instale o Pacote
pip install mysql_mcp_server_pro
  1. Configure as Variáveis de Ambiente Crie um arquivo .env com 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
  1. 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

  1. cliente mcp

vá ver "Use uv para iniciar o serviço" ^_^

Nota:

  • O arquivo .env deve 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

  1. Adicione uma nova classe de ferramenta no pacote handles, herde de BaseHandler e implemente os métodos get_tool_description e run_tool

  2. Importe a nova ferramenta em init.py para disponibilizá-la no servidor

Autenticação OAuth2.0

  1. 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
  1. 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. image

  2. Copie o token e adicione-o aos cabeçalhos da solicitação, por exemplo: image

{
  "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

  1. 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

image image

  1. 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

image

  1. 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
  1. 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

image

  1. Analise o prompt de status de saúde da seguinte forma
Check the current health status of MySQL

image