Skip to main content

A read-only MySQL MCP server for Codex, Claude Code, and other MCP clients.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mysql_mcp-0.1.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mysql_mcp-0.1.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file mysql_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: mysql_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for mysql_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5ef78eddfc7aaaa8963a1ab9d98bcd84f49c1acc9ae7cb206101c2cde96dbf87
MD5 5cbfe84dc6ef5b458caa39c9af1f3ee7
BLAKE2b-256 0f583258f3b3a779c627b92ace9df93a85a7e4949bb04ee75108c93759de359a

See more details on using hashes here.

File details

Details for the file mysql_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mysql_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for mysql_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf34b99f296047e50fd5fc57f7b7863ba00604792cdd872d922525050d026daf
MD5 5ef7f6b86f49d5e8d10c23a32487e576
BLAKE2b-256 a55530a84ea52237f18f01285801433655bab67c0227f8deaf25ee7e405b42ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page