MySQL Schema MCP Server
A server for retrieving MySQL database schema information using the FastMCP framework.
MySQL Schema MCP Server
A Metadata Change Proposal (MCP) server for retrieving MySQL database schema information using the FastMCP framework.
Features
- Retrieve database list
- Retrieve table list from databases
- Get table schema (columns) information
- Get table indexes information
- Get table foreign key information
Setup
Local Setup with uv
- Clone this repository
- Install uv if you don't have it already:
pip install uv
- Create a virtual environment and install dependencies:
uv venv uv pip install -r requirements.txt
- Create a
.env
file based on.env.example
with your MySQL connection details:MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=information_schema
Local Setup with pip
- Clone this repository
- Install dependencies:
pip install -r requirements.txt
- Create a
.env
file based on.env.example
with your MySQL connection details:MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=information_schema
Docker Setup
Building and Running the Docker Image
-
Clone this repository
-
Build the Docker image:
docker build -t mysql-mcp-server .
-
Run the Docker container with environment variables for MySQL connection:
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
Note:
host.docker.internal
is used to connect to the MySQL instance running on your host machine from inside the Docker container. -
For Mac and Windows,
host.docker.internal
resolves to the host machine. For Linux, you may need to use: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
Usage
Local Usage
Start the server:
python main.py
Docker Usage
Run the Docker container (as shown in the setup section):
docker run -p 8000:8000 \
-e MYSQL_HOST=host.docker.internal \
-e MYSQL_USER=your_username \
-e MYSQL_PASSWORD=your_password \
mysql-mcp-server
You can also create a .env
file and mount it to the container:
docker run -p 8000:8000 \
-v $(pwd)/.env:/app/.env \
mysql-mcp-server
MCP JSON Configuration
To use this MCP server with MCP-compatible clients, you'll need to configure the client with the appropriate JSON configuration. Here are examples for both local and Docker setups:
Local MCP Configuration
{
"mcpServers": {
"mysql-schema": {
"command": "python",
"args": [
"main.py"
],
"cwd": "/path/to/mcp-first",
"alwaysAllow": [
"databases",
"tables",
"schema",
"indexes",
"foreign_keys"
]
}
}
}
Docker MCP Configuration
{
"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"
]
}
}
}
Available Tools
The server provides the following tools:
databases
: List all databasestables
: List all tables in a databaseschema
: Get the schema (columns) for a specific tableindexes
: Get the indexes for a specific tableforeign_keys
: Get the foreign keys for a specific table
Example
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(table="your_table", 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")
Related Servers
Database Updater
Update various databases (PostgreSQL, MySQL, MongoDB, SQLite) using data from CSV and Excel files.
Atlan
Official MCP Server from Atlan which enables you to bring the power of metadata to your AI tools
CData MCP Server for Microsoft SQL Server
An MCP server for Microsoft SQL Server by CData. Requires a separately licensed CData JDBC Driver.
CData SAP Netweaver Gateway
Connect to SAP Netweaver Gateway data using CData's MCP Server. Requires a separately licensed CData JDBC Driver.
Airtable
Interact with Airtable's API to manage bases, tables, and records.
TalkHub Store
Integrates with Supabase to allow AI assistants to access and manage store data.
Toronto Open Data Tools
Query, analyze, and retrieve datasets from Toronto's CKAN-powered open data portal.
Gel
Provides tools and resources for coding agents to interact with the Gel database, including automatic project configuration for query builders and ORMs.
MCP JDBC Server
A lightweight MCP server for any database with a JDBC driver. Built with Quarkus and requires Java 21+.
Crunchbase
Access Crunchbase data for business information and insights. Requires a Crunchbase API key.