mcpField
M
mysql

mysql

github.com/sanjay3290Data & databases448414 installsUpdated 7w ago
Repository

About mysql

mysql is a skill for running read-only queries against configured MySQL databases. It helps users inspect database schemas and retrieve data while enforcing query, result-size, and execution-time limits.

Key features

  1. 01Run SELECT, SHOW, DESCRIBE, EXPLAIN, and WITH queries
  2. 02List configured databases and tables
  3. 03Inspect database schemas
  4. 04Enforce read-only sessions and single statements
  5. 05Limit query time and result size

Use cases

  1. 01Retrieve records from a configured database
  2. 02Explore tables and schema before querying
  3. 03Review analytics or operational data without writes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/sanjay3290/ai-skills --skill mysql

After installing, type/mysqlin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitignore
connections.example.json
README.md
requirements.txt
scripts/
query.py

Details

From the project README

MySQL Read-Only Query Skill

Execute safe, read-only queries against configured MySQL databases.

Requirements

  • Python 3.8+
  • mysql-connector-python: pip install -r requirements.txt

Setup

Create connections.json in the skill directory or ~/.config/claude/mysql-connections.json.

Security: Set file permissions to 600 since it contains credentials:

chmod 600 connections.json
{
  "databases": [
    {
      "name": "production",
      "description": "Main app database - users, orders, transactions",
      "host": "db.example.com",
      "port": 3306,
      "database": "app_prod",
      "user": "readonly_user",
      "password": "your-password",
      "ssl_disabled": false
    }
  ]
}
Config Fields
FieldRequiredDescription
nameYesIdentifier for the database (case-insensitive)
descriptionYesWhat data this database contains (used for auto-selection)
hostYesDatabase hostname
portNoPort number (default: 3306)
databaseYesDatabase name
userYesUsername
passwordYesPassword
ssl_disabledNoSet to true to disable SSL (default: false)
ssl_caNoPath to CA certificate file
ssl_certNoPath to client certificate file
ssl_keyNoPath to client private key file

Usage

List configured databases
python3 scripts/query.py --list
Query a database
python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"
List tables
python3 scripts/query.py --db production --tables
Show schema
python3 scripts/query.py --db production --schema
Limit results
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100

Database Selection

Match user intent to database description:

User asks aboutLook for description containing
users, accountsusers, accounts, customers
orders, salesorders, transactions, sales
analytics, metricsanalytics, metrics, reports
logs, eventslogs, events, audit

If unclear, run --list and ask user which database.

Safety Features

  • Read-only session: Connection uses MySQL SET SESSION TRANSACTION READ ONLY (primary protection)
  • Query validation: Only SELECT, SHOW, DESCRIBE, EXPLAIN, WITH queries allowed
  • Single statement: Multiple statements per query rejected
  • SSL support: Configurable SSL with CA, client cert, and key support
  • Query timeout: 30-second max_execution_time enforced (MySQL 5.7.8+)
  • Memory protection: Max 10,000 rows per query to prevent OOM
  • Column width cap: 100 char max per column for readable output
  • Credential sanitization: Error messages don't leak passwords

Troubleshooting

ErrorSolution
Config not foundCreate connections.json in skill directory
Authentication failedCheck username/password in config
Connection timeoutVerify host/port, check firewall/VPN
SSL errorTry "ssl_disabled": true for local databases
Permission warningRun chmod 600 connections.json
max_execution_time not supportedUpgrade to MySQL 5.7.8+ or MariaDB 10.1.1+

Exit Codes

  • 0: Success
  • 1: Error (config missing, auth failed, invalid query, database error)

Workflow

  1. Run --list to show available databases
  2. Match user intent to database description
  3. Run --tables or --schema to explore structure
  4. Execute query with appropriate LIMIT

Comments

Markdown supported