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

  1. Clone este repositório
  2. Instale o uv se você ainda não o tiver:
    pip install uv
    
  3. Crie um ambiente virtual e instale as dependências:
    uv venv
    uv pip install -r requirements.txt
    
  4. Crie um arquivo .env baseado em .env.example com 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

  1. Clone este repositório
  2. Instale as dependências:
    pip install -r requirements.txt
    
  3. Crie um arquivo .env baseado em .env.example com 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

  1. Clone este repositório

  2. Construa a imagem Docker:

    docker build -t mysql-mcp-server .
    
  3. 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-server
    

    Nota: host.docker.internal é usado para conectar-se à instância MySQL em execução na sua máquina host a partir do contêiner Docker.

  4. Para Mac e Windows, host.docker.internal resolve 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 dados
  • tables: Listar todas as tabelas em um banco de dados
  • schema: Obter o esquema (colunas, índices e chaves estrangeiras) para uma ou mais tabelas.
  • indexes: Obter os índices para uma tabela específica
  • foreign_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")