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 datasourcelist_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
- Update the version in
pyproject.toml. - Build the package:
python3 -m build
- Upload to TestPyPI first:
python3 -m twine upload --repository testpypi dist/*
- Upload to PyPI:
python3 -m twine upload dist/*
Development
Run tests:
pytest -q
Build artifacts:
python3 -m build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ef78eddfc7aaaa8963a1ab9d98bcd84f49c1acc9ae7cb206101c2cde96dbf87
|
|
| MD5 |
5cbfe84dc6ef5b458caa39c9af1f3ee7
|
|
| BLAKE2b-256 |
0f583258f3b3a779c627b92ace9df93a85a7e4949bb04ee75108c93759de359a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf34b99f296047e50fd5fc57f7b7863ba00604792cdd872d922525050d026daf
|
|
| MD5 |
5ef7f6b86f49d5e8d10c23a32487e576
|
|
| BLAKE2b-256 |
a55530a84ea52237f18f01285801433655bab67c0227f8deaf25ee7e405b42ed
|