go-mcp-mysql

by Zhwt

61 stars
564 downloads
Not rated
GitHub

About

Zero burden, ready-to-use Model Context Protocol (MCP) server for interacting with MySQL and automation. No Node.js or Python environment needed.

Details

Author
Zhwt
GitHub stars
61
Downloads
564
Categories
Database

- No Node.js or Python runtime required (Go binary).
- CRUD operations on databases and tables.
- Read-only mode prevents accidental write operations.
- Optional EXPLAIN plan check before query execution.
- Schema tools: list, create, alter, and describe tables.
- Data tools: read, write, update, and delete queries.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name go-mcp-mysql
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Download the latest binary from GitHub releases and place it in your $PATH (or build from source with go install). Configure your MCP client (e.g., Claude Desktop) with a JSON entry specifying the binary path and connection parameters either via --host, --user, --pass, --port, --db or via a DSN string using --dsn. Optional flags --read-only (restricts tools to list_, read_, and desc_ only) and --with-explain-check (disables the default EXPLAIN plan check) can be added.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

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

McpServers

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

go-mcp-mysql

Trust Score

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.