# 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: ```bash git clone git@github.com:sajithamma/mysql-mcp-server.git cd mysql-mcp-server ``` 2. Create and activate a virtual environment: ```bash # Create virtual environment python3.12 -m venv venv # Activate virtual environment # On Windows: venv\Scripts\activate # On macOS/Linux: source venv/bin/activate ``` 3. Install dependencies: ```bash pip install -r requirements.txt ``` 4. Run the fixture to create the database: ```bash 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: ```python @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: ```python 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: ```bash fastmcp run mcpserver.py:mcp --transport sse --host 127.0.0.1 --port 8000 ``` 2. In a separate terminal, run the client: ```bash 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.