45 lines
2.6 KiB
Markdown
45 lines
2.6 KiB
Markdown
# 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é.
|