Publikováno 25. června 2026
rejstrik-mcp: české firemní registry pro AI agenty
Jak jsem postavil bezklíčový MCP server, který agentům zpřístupňuje české registry, výroční zprávy v PDF a deterministickou finanční analýzu.
Když člověk prověřuje českou firmu ručně, pořád dokola přepíná mezi ARES, Sbírkou listin a dalšími veřejnými registry. Nejdřív musí správně určit subjekt, potom najít konkrétní podání, stáhnout PDF, přečíst účetní výkazy, porovnat několik let a teprve nakonec si poskládat obrázek o tom, co se ve firmě děje.
Samotná data přitom veřejná jsou. Problém je v cestě k nim. Část informací je dostupná jako strukturovaná odpověď registru, ale finanční čísla často zůstávají pouze ve výroční zprávě v PDF formátu — někdy s textovou vrstvou, jindy jako naskenované stránky. Při porovnání několika let je navíc potřeba hlídat jednotky, protože jeden výkaz může uvádět celé koruny a jiný tisíce korun.
Právě kvůli tomu vznikl rejstrik-mcp: ne jako další web nad registry, ale jako otevřená integrační vrstva pro AI agenty. Claude Code, Codex nebo jiný MCP klient může firmu vyhledat, stáhnout její podané dokumenty, přečíst je a využít server pro kontroly a výpočty.
V Claude Code stačí:
claude mcp add rejstrik -- uvx rejstrik-mcp
V Codexu lze stejný balíček přidat do ~/.codex/config.toml:
[mcp_servers.rejstrik]
command = "uvx"
args = ["rejstrik-mcp"]
Potom už se lze ptát běžným jazykem:
- „Najdi firmu podle názvu a ukaž její poslední účetní závěrky.“
- „Analyzuj hospodaření firmy za poslední tři roky.“
- „Prověř insolvenci, DPH, vedení firmy, dotace a smlouvy z Registru smluv.“
Agent si sám vybere potřebné nástroje a poskládá jejich výsledky do odpovědi. Uživatel se nemusí učit další rozhraní ani ručně obcházet jednotlivé registry.
Odkud projekt přišel
Tenhle směr mi dával smysl už při vývoji obchodnirejstrik-ai. Tam se ukázalo, že cesta od názvu firmy přes veřejné registry a podané dokumenty až k validovaným finančním datům není jen jedna funkce produktu. Je to samostatná integrační vrstva, kterou lze použít i v jiných aplikacích.
U rejstrik-mcp jsem proto nekopíroval celý produkt. Oddělil jsem obecnější část: přístup k českým registrům, práci se Sbírkou listin, předání dokumentů agentovi a deterministické výpočty. obchodnirejstrik-ai nad podobnými daty staví hotový report pro koncového uživatele, zatímco rejstrik-mcp poskytuje stavební bloky pro libovolného agenta nebo další aplikaci.
Proč MCP a ne pouze skill
Skill je především znovupoužitelný pracovní postup. Může agentovi vysvětlit, v jakém pořadí má hledat dokumenty, která čísla má z výkazu opsat nebo jak má výsledek interpretovat. Samotný problém rejstrik-mcp ale nebyl jen v instrukcích. Agent potřeboval nástroje, které registry skutečně zavolají, stáhnou PDF a nad strukturovanými vstupy vždy provedou stejné výpočty.
MCP pro tuto část poskytuje společný kontrakt. Nástroj má jméno, přesně popsané parametry a strukturu odpovědi. Stejný server tak může použít více podporovaných klientů a oprava parseru nebo výpočtu zůstává na jednom místě. Skill by nad MCP mohl dál popsat doporučený postup celé analýzy, ale bez integrační vrstvy by byl hlavně návodem a sadou lokálních skriptů.
Tyto přístupy se proto nevylučují. MCP dává agentovi schopnosti a skill může určovat, jak je nejlépe poskládat. rejstrik-mcp už pro nejčastější scénáře nabízí vestavěné prompty analyze-company a company-health-check, které klienta provedou celým postupem.
Co je klient a co server
MCP klientem je v tomto projektu aplikace, ve které běží rozhovor s modelem — například Claude Code nebo Codex. Klient rozumí otázce, rozhoduje o dalším kroku a volá dostupné nástroje. V uvedené instalaci je MCP serverem lokálně spuštěný Python balíček rejstrik-mcp. Neobsahuje vlastní AI model; přijímá přesně definované požadavky, komunikuje s registry, pracuje s dokumenty a vrací strukturovaná data.
Server zpřístupňuje třináct nástrojů ve třech skupinách:
- vyhledání firmy a dokumentů:
find_company,list_filings,get_filing,read_filing_textaread_filing_page_images; - analýza a prezentace výsledku:
analyze_financials,estimate_valuationarender_card; - další veřejné kontroly:
check_insolvency,get_statutory_bodies,check_vat,get_subsidiesaget_contracts.
Klient například zavolá find_company, z odpovědi získá IČO a následně přes list_filings najde dostupné účetní závěrky. Server stáhne vybrané PDF a vrátí cestu k souboru. Klient dokument přečte a nalezené hodnoty pošle zpět do analyze_financials. Server je normalizuje a vrátí výpočty, trendy a rizikové signály. MCP je v tomto toku společný jazyk mezi aplikací s modelem a Pythonem, který obstarává data a matematiku.
Bez klíče není nouzový režim
První verze projektu měly dva režimy. Vedle základního použití bez klíče mohl server po nastavení OPENAI_API_KEY nebo ANTHROPIC_API_KEY sám volat model a vytěžovat dokumenty. Tahle větev postupně přidávala závislosti, konfiguraci i druhé místo, na kterém bylo potřeba řešit schopnosti a cenu modelu.
Ve verzi 0.8.0 jsem ji odstranil. Aktuální server je výhradně bezklíčový: žádný klíč k modelovému API nepotřebuje ani nepřijímá. Dokument čte model, který už používá MCP klient, a server dělá jen práci, která má být opakovatelná a kontrolovatelná.
Typický tok vypadá takto:
- Agent vyhledá firmu podle názvu nebo IČO přes ARES.
- Server načte Sbírku listin a stáhne vybranou účetní závěrku.
- Klient přečte lokální PDF, textovou vrstvu nebo obrázky naskenovaných stran.
- Agent přepíše hodnoty do schématu
FinancialStatement, včetně období, jednotky a čísel zdrojových stran. - Server normalizuje jednotky a spočítá ukazatele, index IN05, trendy a varovné signály.
- Výsledek vrátí jako strukturovaná data, Markdown nebo interaktivní kartu ve formátu MCP Apps.
Server tedy nepotřebuje OCR službu, vektorovou databázi ani skrytou modelovou vrstvu. Neznamená to, že by z procesu zmizela AI. Model je stále užitečný při čtení různorodých dokumentů a vysvětlení výsledku, jen neběží pod druhým účtem uvnitř serveru.
Co se počítá deterministicky
Agent z dokumentu přečte účetní hodnoty, ale samotná finanční matematika nevzniká jako volný text modelu. Server kontroluje deklarovanou jednotku výkazu, převádí hodnoty na společné měřítko a umí upozornit na podezřelý tisícinásobný rozdíl mezi roky.
Nad normalizovanými daty počítá likviditu, zadluženost, rentabilitu, marže, obrat aktiv, úrokové krytí, víceleté trendy a index IN05. Dokáže také připravit orientační ocenění podle účetní hodnoty, kapitalizovaných zisků a oborového násobku EV/EBITDA z dat Damodaran Europe. Ocenění je pouze orientační a není investičním doporučením.
Vedle finančních výkazů může agent prověřit insolvenci, registraci a spolehlivost plátce DPH, statutární orgány, přijaté státní dotace a smlouvy z Registru smluv. Výsledný report lze zobrazit jako interaktivní kartu v klientech s podporou MCP Apps nebo jako běžný textový přehled.
V čem je projekt jiný
Chytrý rejstřík nabízí hotovou komerční databázi, web, API i vlastní MCP nad širokým množstvím předzpracovaných firemních dat. Je vhodný pro uživatele, kteří chtějí spravovanou službu, monitoring a širší obchodní databázi; vzdálený přístup používá přihlašovací token, placený tarif a denní limity.
Projekt s otevřeným zdrojovým kódem cz-agents-mcp zase pokrývá ARES, insolvenci, DPH, sankce, zahraniční registry a další KYC/AML scénáře. Některé klienty pro registry jsem z tohoto projektu adaptoval s uvedením autorství.
Odlišení rejstrik-mcp proto není v tom, že by jako jediný zpřístupňoval české registry agentům. Je v konkrétní cestě ke skutečně podaným účetním dokumentům: server najde a stáhne PDF ze Sbírky listin, zpřístupní text nebo obrázky jeho stran a nad hodnotami přečtenými modelem provede bezklíčovou finanční analýzu. Projekt nesoutěží šíří databáze, ale snaží se jít hlouběji od registru až k původnímu dokumentu.
Běžné testy nestačí
U veřejných registrů existují dva odlišné druhy poruch. První vzniká uvnitř projektu: chyba v parseru, výpočtu nebo schématu. Druhý přichází zvenčí: provozovatel změní rozhraní, přesune portál nebo začne automatizované požadavky blokovat.
Běžné CI se proto při každém pushi a pull requestu spouští bez sítě nad uloženými vzorky odpovědí. Kontroluje formátování, parsery, servisní vrstvu, finanční výpočty, příkazovou řádku i registraci MCP nástrojů. Díky tomu nejsou výsledky testů závislé na momentální dostupnosti státních systémů.
Vedle toho běží každé pondělí v 6:00 UTC samostatný canary test. Ověřuje nový i starší portál Sbírky listin a selže teprve tehdy, když neodpovídá ani jeden. V takovém případě GitHub Actions automaticky založí nebo aktualizuje issue. Tento test nepotvrzuje správnost všech dat ve všech registrech; je to úzký provozní signál, že alespoň jedna cesta k podaným dokumentům stále funguje.
Před vydáním lze ručně spustit širší živý test. Ten ověří vyhledání firmy přes ARES, seznam podání, stažení PDF, živé kontroly insolvence a DPH i vytvoření reportu nad zkušebními výkazy. Samostatný postup pro vydání potom po vytvoření tagu sestaví balíček a publikuje ho na PyPI a GitHub Release.
Není to tedy jedna věc označená neurčitě jako CI/CD. Offline testy jsou průběžná integrace, týdenní kanárek je provozní monitoring a automatizace nad verzovacím tagem zajišťuje vydání.
Co jsem se naučil
Nejtěžší částí projektu nebylo přidat co nejvíc AI funkcí. Důležitější bylo správně určit hranici mezi modelem a běžným softwarem. Model dobře čte různorodé dokumenty a umí vysvětlit jejich obsah. Identifikace firmy, práce s jednotkami, finanční vzorce, přístup k registrům a chování při chybě ale potřebují pevná pravidla a testy.
Stejně důležité bylo přijmout, že integrace veřejných dat není jednorázově dokončená práce. Registry se mění i ve chvíli, kdy se zdrojový kód projektu nezměnil. Proto je vedle jednotkových testů potřeba sledovat i skutečné živé zdroje a otevřeně rozlišovat mezi tím, co testujeme offline, a tím, co jsme ověřili proti reálnému světu.
To je pro mě hlavní pointa rejstrik-mcp. Není to další vrstva „AI magie“ nad veřejnými údaji, ale auditovatelné rozhraní mezi agentem, původními dokumenty a deterministickým výpočtem. Zdrojový kód je veřejný pod licencí MIT na GitHubu.