# mcp_mysql_v1.0.py — MCP server pro MySQL **Verze:** 1.0 | **Datum:** 2026-06-17 MCP server (FastMCP + `mysql-connector-python`) pro dotazování MySQL na Toweru. Vzor: `mcp_postgres.py`. Server id v `.mcp.json`: **`mysql`** → tooly `mcp__mysql__*`. ## Připojení - Host: `192.168.1.76:3306` - User: `root` / heslo `Vlado9674+` (uloženo přímo ve skriptu, stejně jako u postgres) - Default DB: **žádná** (None) — DB se předává argumentem `db`, nebo tabulky kvalifikuj `db.tabulka`. - `use_pure=True`, `charset=utf8mb4`, autocommit, lazy connection cache s `ping(reconnect=True)`. ## Dostupné databáze (mimo systémové) `fio` (transactions), `studie` (iwrs_*, covance_*, CTMS_contacts), `medicus`, `medevio`, `kanboard`, `OrdinaceDropBoxBackup`, `puzzle`, `torrents`, `MYSQL_DATABASE`. ## Tooly - `ping()` — verze + latence. - `list_databases(include_system=False)` — seznam DB. - `list_tables(db)` — tabulky vč. enginu, odhadu řádků, komentáře. - `describe_table(table, db)` — sloupce (typ/null/key/default/comment), indexy, přesný COUNT(*). Pozn.: klíče metadat z `information_schema` jsou VELKÝMI písmeny (`COLUMN_NAME`, …). - `query(sql, db=None, params_json=None, limit=100)` — **read-only** (SELECT/WITH/SHOW/EXPLAIN/DESCRIBE). Zápisy odmítá. `params_json` = JSON pole pro `%s` placeholdery, např. `'["6192081885"]'`. Limit max 1000 (Python-side cutoff). - `explain(sql, db=None)` — EXPLAIN FORMAT=JSON (nespouští dotaz). - `preview_execute(sql, db, params_json)` — zápis v transakci + ROLLBACK, vrací would_affect_rows. ⚠️ DDL (CREATE/ALTER/DROP/TRUNCATE) v MySQL commituje implicitně → rollback ho nevrátí (hlásí `ddl_autocommits`). - `execute(sql, db, params_json, confirmed=False)` — zápis; vyžaduje `confirmed=True` po preview a schválení uživatelem. ## fio.transactions (26 877 řádků) Bankovní pohyby z Fio. Klíčové sloupce: `id_operace` (PK), `transaction_date`, `amount` (decimal, výdaj záporně), `currency`, `vs`/`ks`/`ss`, `protiucet`+`kod_banky`, `nazev_protiuctu`, `typ`, `zprava_pro_prijemce`, `uziv_identifikace`, `komentar`, `stazeno_kdy`. Příklad — platba pojištění Pajero (VS 6192081885): ```sql SELECT id_operace, transaction_date, amount, currency, vs, komentar FROM fio.transactions WHERE vs = '6192081885'; -- 27100937414 | 2025-06-13 | -9674.00 CZK | ČSOB a.s. | Pojištění Pajero 27.06.2025-26.06.2026 povinné ručení + plné asistenční služby ``` ## Aktivace Po přidání do `.mcp.json` je potřeba restart Claude Code (reload MCP serverů), pak jsou tooly `mcp__mysql__*` dostupné.