Vediem malú analytickú konzultačnú firmu. To znamená, že robím dve veci: samotnú konzultačnú prácu a všetko ostatné — fakturáciu, sledovanie platieb, urgovanie neuhradených faktúr, administratívu. Tá druhá časť nie je obľúbená nikoho.
Claude Code používam ako hlavný vývojársky nástroj a v istom momente som si povedal: čo keby môj AI asistent zvládol aj fakturáciu? Nie cez nejaký hotový plugin, ale priamym napojením na môj účtovný systém.
Tak som si ho vytvoril. Vlastný MCP server, ktorý prepája Claude Code s iDokladom, českou fakturačnou platformou, ktorú používam. Teraz stačí povedať „vyfakturuj klientovi X 40 hodín po 120 €" a je to.
Čo je MCP?
Model Context Protocol je otvorený štandard, ktorý umožňuje AI modelom komunikovať s externými nástrojmi a dátovými zdrojmi. Predstavte si to ako USB port pre AI — štandardizovaný spôsob, ako pripojiť nové schopnosti.
Claude Code podporuje MCP natívne. Definujete server, vystavíte nejaké nástroje a Claude ich môže volať počas konverzácie. Žiadne API wrappery, žiadne triky s prompt engineeringom. Model vidí vaše nástroje ako plnohodnotné funkcie, ktoré môže zavolať.
Kľúčový poznatok: MCP servery sú len programy, ktoré komunikujú špecifickým protokolom cez stdin/stdout. Môžete ich napísať v Pythone, TypeScripte alebo čomkoľvek inom. Bežia lokálne na vašom počítači, čo znamená, že vaše dáta nikdy neopustia váš stroj (okrem samotných API volaní na službu, s ktorou sa integrujete).
Prečo iDoklad?
iDoklad je populárna fakturačná platforma v Česku a na Slovensku. Má solídne REST API (v3), správne spracováva DPH pre európsku fakturáciu a generuje riadne PDF faktúry. Používam ho roky.
Problém: každý mesiac som otvoril webové rozhranie, ručne vytvoril faktúry, odoslal ich a potom priebežne kontroloval, ktoré boli uhradené. Nie je to ťažká práca, ale je to typ opakovanej administratívy, ktorá vám po malých kúskoch požiera deň.
S MCP serverom môžem zostať v termináli a nechať Clauda, nech sa postará o mechaniku.
Čo to robí
Server vystavuje 15 nástrojov v štyroch kategóriách:
Fakturácia — Vytváranie faktúr, ich filtrovanie, zobrazenie detailov, stiahnutie PDF a odoslanie emailom. Proces vytvárania najprv stiahne predvolenú šablónu z iDokladu, potom aplikuje vaše dáta, takže výstup zodpovedá vášmu existujúcemu štýlu faktúr.
Kontakty — Vyhľadávanie klientov, zobrazenie detailov, registrácia nových. Keď onboardujem nového klienta, jednoducho poviem Claudovi názov firmy, IČO a adresu.
Platby — Sledovanie, čo bolo uhradené, označovanie faktúr ako zaplatených a zobrazenie všetkých neuhradených alebo po splatnosti. Toto používam najčastejšie. „Čo je nezaplatené?" je asi moja najčastejšie písaná otázka.
Analytika — Tržby podľa klientov, tržby podľa mesiacov, súhrny faktúr, top klienti podľa celkového obratu. Užitočné pre štvrťročné hodnotenia alebo keď jednoducho chcem vedieť, ako sa darí roku.
Ako to funguje
Architektúra je priamočiara. Python, asynchrónne HTTP cez httpx a oficiálne MCP Python SDK.
server.py → MCP vstupný bod (stdio transport)
├── config.py → Konfigurácia cez environment premenné
├── auth.py → OAuth2 životný cyklus tokenov
├── client.py → HTTP wrapper pre iDoklad API
└── tools/
├── invoices.py
├── contacts.py
├── payments.py
└── statistics.py
Každý modul nástrojov sleduje rovnaký vzor: funkcia get_tools(), ktorá deklaruje dostupné nástroje, a funkcia handle_tool(), ktorá ich vykonáva. Claude vidí popisy nástrojov a ich parametre, rozhodne sa, kedy ich zavolať, a server sa postará o zvyšok.
Autentifikácia
Toto bola najzložitejšia časť. iDoklad používa OAuth2 Authorization Code flow — ten typ, kde sa otvorí prehliadač, prihlásite sa, udelíte povolenie a ste presmerovaní späť s tokenom.
Pre CLI nástroj je to nepohodlné. Riešenie: samostatný príkaz idoklad-mcp-login, ktorý:
- Spustí dočasný lokálny server na porte 11470
- Otvorí prehliadač na autorizačnej stránke iDokladu
- Zachytí callback s autorizačným kódom
- Vymení ho za access + refresh tokeny
- Uloží ich do
~/.idoklad-mcp/tokens.json
Toto urobíte raz. Potom server automaticky obnovuje tokeny pred ich expiráciou (so 60-sekundovou rezervou). Ak expiruje samotný refresh token, jednoducho spustíte login príkaz znova.
Vytváranie faktúry
Tu to začína byť zaujímavé. Keď Claude zavolá create_issued_invoice, server:
- Stiahne predvolenú šablónu faktúry z iDokladu (aby nastavenia DPH, číslovanie a formátovanie zodpovedali vášmu účtu)
- Aplikuje ID partnera a položky, ktoré ste zadali
- Odošle výsledok na API
- Vráti detaily vytvorenej faktúry
Môžete špecifikovať typ sadzby DPH pre každú položku (nulová, znížená alebo základná 21 %) a server sa postará o matematiku. Typická interakcia vyzerá takto:
„Vytvor faktúru pre ACME Corp — 40 hodín analytického poradenstva po 120 €/hodina, základná DPH."
Claude vyhľadá klienta, zavolá nástroj a faktúra existuje. Potom stačí povedať „pošli ju" a emailom odíde PDF.
Každodenné používanie
Takto vyzerá typický mesiac teraz:
Koniec mesiaca: „Vytvor faktúry pre všetkých aktívnych klientov podľa odpracovaných hodín za tento mesiac." Prilepím hodiny, Claude vytvorí každú faktúru a odošle ich.
Kontrola v polovici mesiaca: „Ktoré faktúry sú stále neuhradené?" Claude stiahne zoznam, ukáže mi, kto mešká, a ja sa rozhodnem, či pošlem pripomienku.
Štvrťročné hodnotenie: „Ukáž mi tržby podľa klientov za Q4." Zobrazí sa tabuľka s celkovými sumami. Žiadny spreadsheet, žiadny dashboard — len otázka a odpoveď.
Nový klient: „Pridaj ACME Corp do iDokladu — tu sú ich údaje." Kontakt vytvorený, pripravený na fakturáciu.
Celý fakturačný workflow, ktorý predtým znamenal prepínanie do webovej aplikácie, preklikávanie formulárov a manuálne sledovanie platieb, sa teraz odohráva v tom istom termináli, kde robím všetko ostatné.
Čo som sa naučil
MCP je jednoduchší, než vyzerá. Dokumentácia protokolu môže pôsobiť hutne, ale vytvorenie servera je v podstate: definujte nástroje s JSON schémami, spracujte volania, vráťte výsledky. Python SDK sa postará o protokolovú vrstvu.
OAuth2 v CLI nástrojoch je otravné, ale riešiteľné. Tanec s presmerovaním v prehliadači pôsobí hacky pre terminálový nástroj, ale je to správny prístup z hľadiska bezpečnosti. Získate riadnu autorizáciu bez ukladania hesiel.
Popisy nástrojov sú dôležitejšie, než si myslíte. Claude používa vaše popisy nástrojov na rozhodovanie, kedy a ako ich zavolať. Vágne popisy vedú k nesprávnym volaniam. Strávil som viac času ladením popisov než písaním samotnej logiky.
Modulárne je lepšie ako monolitické. Rozdelenie nástrojov do samostatných súborov podľa domény (faktúry, kontakty, platby, štatistiky) výrazne zrýchlilo vývoj. Každý modul je nezávislý, testovateľný a ľahko rozšíriteľný.
Začnite tým, čo naozaj používate. Nestaval som všetkých 15 nástrojov naraz. Začal som s „zobraz nezaplatené faktúry", pretože to som kontroloval najčastejšie. Potom som pridal vytváranie, potom platby, potom analytiku. Stavajte pre svoj reálny workflow, nie pre zoznam funkcií.
Čo ďalej
Momentálne je fakturácia polo-automatizovaná. Poviem Claudovi, čo má vyfakturovať, a on sa postará o vytvorenie a odoslanie. Ale stále musím vyhľadať hodiny a zistiť, čo patrí na ktorú faktúru. To je ďalší krok, ktorý treba odstrániť.
Plán je prepojiť to s mojím systémom riadenia úloh — GitHub Issues a Projects, kde už sledujem všetku klientskú prácu. Každá úloha má klienta, projekt a zaznamenaný čas. Na konci mesiaca by mal stačiť jeden prompt:
„Vyfakturuj všetkých klientov za január."
Claude by stiahol všetky dokončené úlohy a zaznamenané hodiny z GitHubu, zoskupil ich podľa klienta a projektu, vytvoril zodpovedajúce faktúry v iDoklade a odoslal ich. Mesačná fakturácia v jednej vete namiesto celého popoludnia.
To je skutočný prísľub MCP — nie len prepojenie jedného nástroja, ale reťazenie viacerých integrácií dohromady, aby AI zvládlo celé workflow od začiatku do konca.
Zdroje:
