Fire in da houseTop Tip:Paying $100+ per month for Perplexity, MidJourney, Runway, ChatGPT and other tools is crazy - get all your AI tools in one site starting at $15 per month with Galaxy AI Fire in da houseCheck it out free

go-mcp-mysql

MCP.Pizza Chef: Zhwt

go-mcp-mysql is a ready-to-use Model Context Protocol (MCP) server designed for seamless interaction with MySQL databases. It enables CRUD operations and supports a read-only mode to prevent unintended writes. The server can also perform query plan checks using EXPLAIN statements. It requires no Node.js or Python environment, simplifying deployment and integration. Ideal for developers seeking lightweight, automated MySQL access via MCP.

Use This MCP server To

Perform CRUD operations on MySQL databases via MCP Enable read-only access to MySQL to prevent write operations Automate MySQL query execution with pre-execution EXPLAIN checks Integrate MySQL data access into AI workflows without extra runtimes Deploy a lightweight MCP server for MySQL without Node.js or Python Use MCP to safely explore and query MySQL schemas and tables

README

go-mcp-mysql

Overview

Zero burden, ready-to-use Model Context Protocol (MCP) server for interacting with MySQL and automation. No Node.js or Python environment needed. This server provides tools to do CRUD operations on MySQL databases and tables, and a read-only mode to prevent surprise write operations. You can also make the MCP server check the query plan by using a EXPLAIN statement before executing the query by adding a --with-explain-check flag.

Please note that this is a work in progress and may not yet be ready for production use.

Installation

  1. Get the latest release and put it in your $PATH or somewhere you can easily access.

  2. Or if you have Go installed, you can build it from source:

go install -v github.com/Zhwt/go-mcp-mysql@latest

Usage

Method A: Using Command Line Arguments

{
  "mcpServers": {
    "mysql": {
      "command": "go-mcp-mysql",
      "args": [
        "--host", "localhost",
        "--user", "root",
        "--pass", "password",
        "--port", "3306",
        "--db", "mydb"
      ]
    }
  }
}

Method B: Using DSN With Custom Options

{
  "mcpServers": {
    "mysql": {
      "command": "go-mcp-mysql",
      "args": [
        "--dsn", "username:password@tcp(localhost:3306)/mydb?parseTime=true&loc=Local"
      ]
    }
  }
}

Please refer to MySQL DSN for more details.

Note: For those who put the binary outside of your $PATH, you need to replace go-mcp-mysql with the full path to the binary: e.g.: if you put the binary in the Downloads folder, you may use the following path:

{
  "mcpServers": {
    "mysql": {
      "command": "C:\\Users\\<username>\\Downloads\\go-mcp-mysql.exe",
      "args": [
        ...
      ]
    }
  }
}

Optional Flags

  • Add a --read-only flag to enable read-only mode. In this mode, only tools beginning with list, read_ and desc_ are available. Make sure to refresh/restart the MCP server after adding this flag.
  • By default, CRUD queries will be first executed with a EXPLAIN ? statement to check whether the generated query plan matches the expected pattern. Add a --with-explain-check flag to disable this behavior.

Tools

Schema Tools

  1. list_database

    • List all databases in the MySQL server.
    • Parameters: None
    • Returns: A list of matching database names.
  2. list_table

    • List all tables in the MySQL server.
    • Parameters:
      • name: If provided, list tables with the specified name, same as SQL SHOW TABLES LIKE '%name%'. Otherwise, list all tables.
    • Returns: A list of matching table names.
  3. create_table

    • Create a new table in the MySQL server.
    • Parameters:
      • query: The SQL query to create the table.
    • Returns: x rows affected.
  4. alter_table

    • Alter an existing table in the MySQL server. The LLM is informed not to drop an existing table or column.
    • Parameters:
      • query: The SQL query to alter the table.
    • Returns: x rows affected.
  5. desc_table

    • Describe the structure of a table.
    • Parameters:
      • name: The name of the table to describe.
    • Returns: The structure of the table.

Data Tools

  1. read_query

    • Execute a read-only SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: The result of the query.
  2. write_query

    • Execute a write SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: x rows affected, last insert id: <last_insert_id>.
  3. update_query

    • Execute an update SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: x rows affected.
  4. delete_query

    • Execute a delete SQL query.
    • Parameters:
      • query: The SQL query to execute.
    • Returns: x rows affected.

License

MIT

go-mcp-mysql FAQ

How do I install go-mcp-mysql?
Download the latest release from GitHub or build from source using 'go install github.com/Zhwt/go-mcp-mysql@latest'.
Does go-mcp-mysql require Node.js or Python?
No, it is a standalone Go-based MCP server that requires no Node.js or Python environment.
How can I prevent accidental writes to my MySQL database?
Use the read-only mode to restrict the server to read operations only.
What is the --with-explain-check flag used for?
It enables the server to run EXPLAIN on queries before execution to check query plans.
Is go-mcp-mysql production-ready?
It is currently a work in progress and may not be fully production-ready yet.
Can I use go-mcp-mysql with different LLM providers?
Yes, it works with any MCP-compatible client and LLM providers like OpenAI, Claude, and Gemini.
How do I configure connection details for MySQL?
Connection parameters such as host, user, and password are passed as command line arguments or configuration files.
Can go-mcp-mysql handle complex MySQL queries?
Yes, it supports executing complex queries and can check query plans before running them.