mysql-mcp-server

mysql-mcp-server

1

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

  1. Clone the repository:
git clone git@github.com:sajithamma/mysql-mcp-server.git
cd mysql-mcp-server
  1. 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
  1. Install dependencies:
pip install -r requirements.txt
  1. Run the fixture to create the database:
python sqlite_fixture.py

Project Structure

The project consists of two main components:

  1. mcpserver.py - The MCP server implementation
  2. mcpclient.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

  1. Start the MCP server:
fastmcp run mcpserver.py:mcp --transport sse --host 127.0.0.1 --port 8000
  1. 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:

  1. List all tables in the database
  2. Get detailed schema information for any table
  3. 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.