mcp-mysql-server

MCP.Pizza Chef: f4ww4z

Five tools do the work: connect to a database, run a read-only lookup, run anything that is not a lookup, list the tables, and describe one table's columns. The third one is the catch. It refuses only statements that begin with SELECT, so dropping a table, emptying one, or deleting rows with no conditions all go through unchallenged, and the software has no read-only mode. Your database username and password sit in the config file as plain text.

Coding
Data

Use This MCP server To

Ask how many orders came in last month List the tables in a database I inherited See which columns a table actually holds Pull the ten customers who spent the most Correct a wrong value in a single record

README

@f4ww4z/mcp-mysql-server

Trust Score smithery badge

A Model Context Protocol server that provides MySQL database operations. This server enables AI models to interact with MySQL databases through a standardized interface.

mcp-mysql-server MCP server

Installation

Installing via Smithery

To install MySQL Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @f4ww4z/mcp-mysql-server --client claude

Manual Installation

npx @f4ww4z/mcp-mysql-server

Configuration

The server requires the following environment variables to be set in your MCP settings configuration file:

recommended use

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["-y", "@f4ww4z/mcp-mysql-server", "mysql://user:password@localhost:port/database"],
    }
  }
}
{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["-y", "@f4ww4z/mcp-mysql-server"],
      "env": {
        "MYSQL_HOST": "your_host",
        "MYSQL_USER": "your_user",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

codex

mac

~/.codex/config.toml

[mcp_servers.mcp-mysql-server]
command = "npx"
args = [
  "-y",
  "@f4ww4z/mcp-mysql-server",
  "mysql://user:password@127.0.0.1:3306/database"
]

windows

%USERPROFILE%\.codex\config.toml

[mcp_servers.mcp-mysql-server]
command = "npx"
args = [
  "-y",
  "@f4ww4z/mcp-mysql-server",
  "mysql://user:password@127.0.0.1:3306/database"
]

Running evals

The evals package loads an mcp client that then runs the index.ts file, so there is no need to rebuild between tests. You can load environment variables by prefixing the npx command. Full documentation can be found here.

OPENAI_API_KEY=your-key  npx mcp-eval src/evals/evals.ts src/index.ts

Available Tools

1. connect_db

Establish connection to MySQL database using provided credentials.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "connect_db",
  arguments: {
    host: "localhost",
    user: "your_user",
    password: "your_password",
    database: "your_database"
  }
});

2. query

Execute SELECT queries with optional prepared statement parameters.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "query",
  arguments: {
    sql: "SELECT * FROM users WHERE id = ?",
    params: [1]
  }
});

3. execute

Execute INSERT, UPDATE, or DELETE queries with optional prepared statement parameters.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "execute",
  arguments: {
    sql: "INSERT INTO users (name, email) VALUES (?, ?)",
    params: ["John Doe", "john@example.com"]
  }
});

4. list_tables

List all tables in the connected database.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "list_tables",
  arguments: {}
});

5. describe_table

Get the structure of a specific table.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "describe_table",
  arguments: {
    table: "users"
  }
});

Features

  • Secure connection handling with automatic cleanup
  • Prepared statement support for query parameters
  • Comprehensive error handling and validation
  • TypeScript support
  • Automatic connection management

Security

  • Uses prepared statements to prevent SQL injection
  • Supports secure password handling through environment variables
  • Validates queries before execution
  • Automatically closes connections when done

Error Handling

The server provides detailed error messages for common issues:

  • Connection failures
  • Invalid queries
  • Missing parameters
  • Database errors

Contributing

Contributions are welcome! Please feel free to submit a Pull Request to https://github.com/f4ww4z/mcp-mysql-server

License

MIT

mcp-mysql-server FAQ

What credentials does it need?
A database username and password, not a key. They live in your config file as plain text, either as separate settings or inside a single connection address.
How many tools does it add?
Five: connect, a read-only lookup, a write, list the tables, and describe one table.
Can it destroy data?
Yes, easily. The writing tool refuses only statements beginning with SELECT, so dropping a table or deleting every row is allowed with no confirmation.
Is there a read-only mode?
Not in the software itself. The only real way to make it read-only is to give it a database login that has no permission to change anything.
Can I use this to answer a question about my own data?
Yes. Ask in plain English and it will list the tables, look at their columns, then run the lookup and report back.
How hard is the setup?
One short block in your config with your connection details. There is also a one-line install through Smithery for Claude Desktop.
Which apps does it work in?
Claude Desktop is the documented one, and the readme adds a Codex setup for both Mac and Windows.
How well does the safety claim hold up?
It advertises protection against injected commands, which covers values passed in separately. The query text itself is still written freely by the model, so your real safety limit is whatever the database login is permitted to do.
Is it actively maintained?
There have been no commits since November 2025, so it is quiet rather than abandoned.