mysql-mcp-server
The MySQL MCP Server is a database management tool built using FastMCP, designed to manage SQLite databases interactively. It features a server and a client component that facilitate listing tables, describing table schemas, and executing SQL queries. This project emphasizes ease of use with its natural language command support.
MySQL MCP Server
A powerful database management tool built with FastMCP that provides an interactive interface for managing SQLite databases. This project includes both a server component and a client interface for easy database operations.
Features
- List all tables in the database
- Get detailed schema information for any table
- Execute SQL queries with formatted results
- Interactive client interface for database operations
Prerequisites
- Python 3.8 or higher
- pip (Python package installer)
Setup
- Clone the repository:
git clone git@github.com:sajithamma/mysql-mcp-server.git
cd mysql-mcp-server
- Create and activate a virtual environment:
# Create virtual environment
python3.12 -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
- Run the fixture to create the database:
python sqlite_fixture.py
Project Structure
The project consists of two main components:
mcpserver.py
- The MCP server implementationmcpclient.py
- The client interface
Server Component
The server provides the following tools:
@mcp.tool()
def list_tables() -> List[str]:
"""List all tables in the SQLite database."""
# Implementation details...
@mcp.tool()
def describe_table(table_name: str) -> Dict[str, Any]:
"""Get the schema information for a specific table."""
# Implementation details...
@mcp.tool()
def run_query(query: str) -> Dict[str, Any]:
"""Execute a SQL query and return the results."""
# Implementation details...
Client Component
The client provides an interactive interface for database operations:
async def main():
server = MCPServerSse(
name="SQLite Database Manager",
params={
"url": "http://localhost:8000/sse",
},
)
# Client implementation...
Running the Application
- Start the MCP server:
fastmcp run mcpserver.py:mcp --transport sse --host 127.0.0.1 --port 8000
- In a separate terminal, run the client:
python mcpclient.py
Usage
Once both the server and client are running, you can interact with the database using natural language commands. The client supports the following operations:
- List all tables in the database
- Get detailed schema information for any table
- Execute SQL queries to retrieve or modify data
Example commands:
- "Show me all tables in the database"
- "Describe the structure of the users table"
- "Run a query to select all records from the users table"
Environment Variables
Create a .env
file in the project root with the following variables:
# Add any required environment variables here
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.