MySQL Schema MCP Server
Um servidor para recuperar informações do esquema de banco de dados MySQL usando o framework FastMCP.
Documentação
MySQL Schema MCP Server
Um servidor de Proposta de Mudança de Metadados (MCP) para recuperar informações de esquema de banco de dados MySQL usando o framework FastMCP.
Recursos
- Recuperar lista de bancos de dados
- Recuperar lista de tabelas dos bancos de dados
- Obter informações de esquema de tabela (colunas)
- Obter informações de índices de tabela
- Obter informações de chaves estrangeiras de tabela
Configuração
Configuração Local com uv
- Clone este repositório
- Instale o uv se você ainda não o tiver:
pip install uv - Crie um ambiente virtual e instale as dependências:
uv venv uv pip install -r requirements.txt - Crie um arquivo
.envbaseado em.env.examplecom os detalhes da sua conexão MySQL:MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=information_schema
Configuração Local com pip
- Clone este repositório
- Instale as dependências:
pip install -r requirements.txt - Crie um arquivo
.envbaseado em.env.examplecom os detalhes da sua conexão MySQL:MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=information_schema
Configuração Docker
Construindo e Executando a Imagem Docker
-
Clone este repositório
-
Construa a imagem Docker:
docker build -t mysql-mcp-server . -
Execute o contêiner Docker com variáveis de ambiente para a conexão MySQL:
docker run -p 8000:8000 \ -e MYSQL_HOST=host.docker.internal \ -e MYSQL_PORT=3306 \ -e MYSQL_USER=your_username \ -e MYSQL_PASSWORD=your_password \ -e MYSQL_DATABASE=information_schema \ mysql-mcp-serverNota:
host.docker.internalé usado para conectar-se à instância MySQL em execução na sua máquina host a partir do contêiner Docker. -
Para Mac e Windows,
host.docker.internalresolve para a máquina host. Para Linux, você pode precisar usar:docker run -p 8000:8000 \ --add-host=host.docker.internal:host-gateway \ -e MYSQL_HOST=host.docker.internal \ -e MYSQL_USER=your_username \ -e MYSQL_PASSWORD=your_password \ mysql-mcp-server
Uso
Uso Local
Inicie o servidor:
python main.py
Uso Docker
Execute o contêiner Docker (como mostrado na seção de configuração):
docker run -p 8000:8000 \
-e MYSQL_HOST=host.docker.internal \
-e MYSQL_USER=your_username \
-e MYSQL_PASSWORD=your_password \
mysql-mcp-server
Você também pode criar um arquivo .env e montá-lo no contêiner:
docker run -p 8000:8000 \
-v $(pwd)/.env:/app/.env \
mysql-mcp-server
Configuração JSON do MCP
Para usar este servidor MCP com clientes compatíveis com MCP, você precisará configurar o cliente com a configuração JSON apropriada. Aqui estão exemplos para configurações local e Docker:
Configuração MCP Local
{
"mcpServers": {
"mysql-schema": {
"command": "python",
"args": [
"main.py"
],
"cwd": "/path/to/mcp-first",
"alwaysAllow": [
"databases",
"tables",
"schema",
"indexes",
"foreign_keys"
]
}
}
}
Configuração MCP Docker
{
"mcpServers": {
"mysql-schema": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MYSQL_HOST=host.docker.internal",
"-e",
"MYSQL_USER=your_username",
"-e",
"MYSQL_PASSWORD=your_password",
"mysql-mcp-server"
],
"alwaysAllow": [
"databases",
"tables",
"schema",
"indexes",
"foreign_keys"
]
}
}
}
Ferramentas Disponíveis
O servidor fornece as seguintes ferramentas:
databases: Listar todos os bancos de dadostables: Listar todas as tabelas em um banco de dadosschema: Obter o esquema (colunas, índices e chaves estrangeiras) para uma ou mais tabelas.indexes: Obter os índices para uma tabela específicaforeign_keys: Obter as chaves estrangeiras para uma tabela específica
Exemplo
from fastmcp.client import Client
# Connect to the MCP server
client = Client("http://localhost:8000")
# List all databases
databases = client.databases()
# List tables in a specific database
tables = client.tables(database="your_database")
# Get schema for a specific table
schema = client.schema(tables=["your_table"], database="your_database")
# Get schema for multiple tables
schemas = client.schema(tables=["table1", "table2"], database="your_database")
# Get indexes for a specific table
indexes = client.indexes(table="your_table", database="your_database")
# Get foreign keys for a specific table
foreign_keys = client.foreign_keys(table="your_table", database="your_database")