mcp-mysql-server

mcp-mysql-server

0

The MySQL MCP Server for Smithery is a Python-based connector that enables direct connection to MySQL databases from Smithery. It supports essential database operations like listing databases and tables and executing read-only SQL queries with built-in security validation.

MySQL MCP Server for Smithery (Python)

A MySQL connector for Smithery that allows you to connect to your MySQL database directly from Smithery, built with Python.

Features

  • Connect to MySQL Databases: Configure and connect to MySQL databases
  • List Databases: View all accessible databases
  • List Tables: View all tables in a specified database
  • Describe Tables: Get detailed schema information for tables
  • Execute Queries: Run read-only SQL queries (SELECT, SHOW, DESCRIBE, EXPLAIN)
  • Security: Built-in query validation ensures only read-only operations are allowed

Installation in Smithery

After adding the MCP server in Smithery, you'll be able to enter your MySQL database credentials:

  • Host: Database server hostname (default: localhost)
  • Port: Database server port (default: 3306)
  • User: Your MySQL username
  • Password: Your MySQL password
  • Database: (Optional) The specific database to connect to

Manual Installation

  1. Clone this repository:
git clone https://github.com/aqaralife/mysql-mcp-python-server.git
  1. Install dependencies:
cd mysql-mcp-python-server
npm install
pip install -r requirements.txt
  1. Make the scripts executable (Unix/Linux/Mac):
chmod +x mcp_server.py run.js

Manual Usage

To start the server:

node run.js

Or, directly run the Python script:

python mcp_server.py

Available Tools

connect_db

Establishes a connection to a MySQL database.

Parameters:

  • host: Database server hostname
  • port: Database server port
  • user: Database username
  • password: Database password
  • database: (Optional) Database name

list_databases

Lists all accessible databases.

Parameters: None

list_tables

Lists all tables in a database.

Parameters:

  • database: (Optional) Database name, uses default if connected

describe_table

Shows the schema for a table.

Parameters:

  • table: Table name
  • database: (Optional) Database name, uses default if connected

execute_query

Executes a read-only SQL query.

Parameters:

  • query: SQL query (only SELECT, SHOW, DESCRIBE, and EXPLAIN allowed)
  • database: (Optional) Database name, uses default if connected

Security

The server includes built-in validation to ensure only read-only operations are permitted:

  • Only SELECT, SHOW, DESCRIBE, and EXPLAIN queries are allowed
  • Queries containing SQL commands like INSERT, UPDATE, DELETE, DROP, etc. are automatically rejected
  • Multiple statements in a single query (separated by semicolons) are not allowed

Troubleshooting

If you encounter issues:

  1. Python Not Found: The server will automatically detect python3 or python. If neither works, ensure Python is installed and in your PATH.

  2. Missing Modules: The server will attempt to install required packages automatically. If this fails, manually run:

    pip install mysql-connector-python>=8.0.0
    
  3. Connection Issues: Verify your database credentials and ensure the MySQL server is running and accessible.

  4. Smithery Connection Issues: Make sure the settings in Smithery are correctly configured with your database credentials.

  5. Server Unresponsive: Check the log output in Smithery's console for errors.

License

MIT

Contact

If you have any questions, please create an issue.