Skip to main content

mysql-mcp

mysql-mcp is a read-only MySQL MCP server that can be used by Codex, Claude Code, and other Model Context Protocol clients.

It exposes two tools:

  • query_mysql: execute a read-only SQL query against a configured datasource
  • list_datasources: list the available datasource names from the config file

Features

  • Read-only query workflow through MCP stdio transport
  • Multiple datasource definitions in one YAML config file
  • Simple installation from PyPI once published
  • Works with Codex and Claude Code global MCP configuration

Installation

From PyPI

pipx install mysql-mcp

Or with uv:

uv tool install mysql-mcp

Local development

python3 -m pip install -e ".[dev]"

Configuration

Create a YAML config file. You can start from config.example.yaml:

datasources:
  dev:
    host: "127.0.0.1"
    port: 3306
    user: "mysql"
    password: "${MYSQL_PASSWORD}"
    database: "app_dev"
    pool_size: 5
    pool_name: "dev_pool"

query:
  default_timeout: 30
  max_rows: 10000

The MCP process must receive any referenced environment variables such as MYSQL_PASSWORD.

Running the server

cp config.example.yaml config.yaml
mysql-mcp /absolute/path/to/config.yaml

Codex setup

Add it as a global MCP server:

codex mcp add mysql-mcp \
  --env MYSQL_PASSWORD=your-password \
  -- mysql-mcp /absolute/path/to/config.yaml

If you prefer not to preinstall the package, you can also run it through uvx:

codex mcp add mysql-mcp \
  --env MYSQL_PASSWORD=your-password \
  -- uvx mysql-mcp /absolute/path/to/config.yaml

Claude Code setup

Add this to ~/.claude/settings.json:

{
  "mcpServers": {
    "mysql-mcp": {
      "type": "stdio",
      "command": "mysql-mcp",
      "args": ["/absolute/path/to/config.yaml"],
      "env": {
        "MYSQL_PASSWORD": "your-password"
      }
    }
  }
}

Or use uvx:

{
  "mcpServers": {
    "mysql-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mysql-mcp", "/absolute/path/to/config.yaml"],
      "env": {
        "MYSQL_PASSWORD": "your-password"
      }
    }
  }
}

Publish to PyPI

  1. Update the version in pyproject.toml.
  2. Build the package:
python3 -m build
  1. Upload to TestPyPI first:
python3 -m twine upload --repository testpypi dist/*
  1. Upload to PyPI:
python3 -m twine upload dist/*

Development

Run tests:

pytest -q

Build artifacts:

python3 -m build

Metadata

Release files for mysql-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mysql-mcp 0.1.0
File Size Uploaded Provenance
mysql_mcp-0.1.0.tar.gz 8.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mysql-mcp 0.1.0
File Interpreter ABI Platform
mysql_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 16.5 kB

Release files / mysql_mcp-0.1.0.tar.gz

Download URL mysql_mcp-0.1.0.tar.gz
Size 8.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5ef78eddfc7aaaa8963a1ab9d98bcd84f49c1acc9ae7cb206101c2cde96dbf87
BLAKE2b-256 checksum
How to use checksums
0f583258f3b3a779c627b92ace9df93a85a7e4949bb04ee75108c93759de359a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / mysql_mcp-0.1.0-py3-none-any.whl

Download URL mysql_mcp-0.1.0-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bf34b99f296047e50fd5fc57f7b7863ba00604792cdd872d922525050d026daf
BLAKE2b-256 checksum
How to use checksums
a55530a84ea52237f18f01285801433655bab67c0227f8deaf25ee7e405b42ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Security for mysql-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page