Každé úložiště akumuluje strukturovaná data, která někdo nakonec potřebuje jako dokument: změny ve vydání, přispěvatelé roku, inventář API, seznam otevřených rizik. Data jsou již ve formátu JSON; chybějícím krokem je formátovaný PDF nebo Word soubor, který zákazník, auditor nebo manažer skutečně otevře. S GroupDocs.Assembly.Mcp běžícím lokálně vedle Claude Code (claude mcp add s dnx GroupDocs.Assembly.Mcp --yes), agent vyplní Word šablonu uloženou v repozitáři z JSON souboru v repozitáři a zapíše PDF, aniž by kdokoli formátoval tabulku:

Vygenerujte PDF poznámek k vydání 4.2.0 z data/release-4.2.0.json pomocí templates/release-notes.docx a certifikát o příspěvku pro každého přispěvatele v data/contributors-2026.json.

Verze krok za krokem s konfigurací a řešením problémů je v dokumentaci: Jak vygenerovat PDF nebo Word zprávu z JSON dat v repozitáři pomocí Claude Code.

Proč nechat kódovacího agenta psát dokument?

Coding agents jsou velmi dobří v produkci dat a poměrně špatní v tvorbě dokumentů. Požádejte je o „poznámky k vydání jako PDF“ a napíšou soubor Markdown, pak skript, který jej převádí, a pak ladí písma skriptu. Při dalším vydání to udělají znovu mírně odlišně. Výstup vypadá jako cokoliv, co výchozí nastavení konverzní knihovny poskytne, ne jako dokumenty, které vaše společnost posílá.

Šablona opraví vzhled a umístí jej pod správu verzí. templates/release-notes.docx je běžný Word soubor s logem, styly nadpisů a tabulkou, plus několik značek <<…>>. Kdo vlastní rozvržení, upravuje jej ve Wordu; agent se ho nikdy nedotkne. JSON je generován vaším nástrojem pro vydání, nebo agentem z git log, a to je část, ve které je kódovací agent dobrý.

Také to dělá práci přezkoumatelnou. Pull request, který mění data/release-4.2.0.json, ukazuje přesně, které změny se objeví v poznámkách k vydání, řádek po řádku, v diffu, který recenzent může přečíst za minutu. Pull request, který mění vygenerované PDF, vůbec nic neukazuje. Uchovávání dat a rozvržení jako samostatných, verzovaných souborů a zacházení s dokumentem jako s něčím, co z nich renderujete, je stejný nápad jako oddělení zdrojového kódu a výstupu sestavení, a platí pro dokumenty ze stejných důvodů.

Jak vypadá repozitář

repo/
  data/
    release-4.2.0.json       {"release":{...}, "changes":[...4 items]}
    contributors-2026.json   {"contributors":[...3 items]}
  templates/
    release-notes.docx       <<[release.Version]>>, <<foreach [c in
                             changes]>> table row, counts
    certificate.docx         <<[contributor.Name]>> ...
  out/                       GROUPDOCS_MCP_OUTPUT_PATH, in .gitignore
        |
        |  Claude Code -> GroupDocs.Assembly MCP server (local, stdio)
        v
  release-notes-4.2.0.pdf    pnair.pdf  tvarga.pdf  mrossi.pdf

Volání

Nejprve agent zkontroluje, co šablona očekává, aby vám mohl říct, jestli v JSON něco chybí:

-> get_template_fields {"template":{"filePath":
     "repo/templates/release-notes.docx"}}
<- { "dataSourceNames": [ "release", "changes" ],
     "fields": [ "release.Product", "release.Version", "release.Date",
                 "changes[].Type", "changes[].Title",
                 "changes[].PullRequest", "changes[].Author" ] }

Pak jedno volání ji vykreslí:

-> assemble_document {"template":{"filePath":
     "repo/templates/release-notes.docx"},
     "data":{"filePath":"repo/data/release-4.2.0.json"},
     "format":"pdf","outputName":"release-notes-4.2.0.pdf"}
<- Assembled 'release-notes.docx' with 'release-4.2.0.json' (JSON
   object) as PDF
   Saved to: .../release-notes-4.2.0.pdf

Řádek tabulky šablony se opakuje jednou na změnu a její poslední řádek počítá změny a odlišné autory pomocí changes.Count() a changes.Select(c => c.Author).Distinct().Count(). Tato čísla pocházejí z dat v čase vykreslení, ne od agenta.

Certifikáty jsou rozvětvené: jedno PDF na prvek pole contributors, pojmenované podle přezdívky přispěvatele:

-> assemble_per_record {"template":{"filePath":
     "repo/templates/certificate.docx"},
     "data":{"filePath":"repo/data/contributors-2026.json"},
     "recordsPath":"contributors","fileNameField":"Handle",
     "format":"pdf"}
<- Assembled 3 of 3 document(s) from 'certificate.docx' with
   'contributors-2026.json', one per record (each record as
   'contributor'), as PDF.
   Saved to:
   .../pnair.pdf
   .../tvarga.pdf
   .../mrossi.pdf

recordsPath říká serveru, kde se pole nachází, když je JSON soubor objektem, což je obvyklý tvar reálných datových souborů.

Udělejte z toho zvyk, ne jen výzvu

Agenti dodržují projektové instrukce o tom, kdy použít nástroj. Několik řádků v CLAUDE.md nebo AGENTS.md to promění v konvenci:

Documents for people (release notes, reports, certificates) are generated
with the groupdocs-assembly MCP server from templates/*.docx and data/*.json.
Call get_template_fields first; never edit a template. Generated files land
in out/, which is in .gitignore. Dates in JSON as yyyy-MM-ddTHH:mm:ss.

Uchovávejte výstupy mimo git. Ve výchozím nastavení server zapisuje vedle své složky úložiště; nastavte GROUPDOCS_MCP_OUTPUT_PATH v registraci serveru na složku out/ repozitáře a přidejte tuto složku do .gitignore. JSON a šablona jsou zdroj; PDF je artefakt sestavení, regenerovaný během sekund, a jeho commitování jen vytváří diffy, které nikdo nemůže přezkoumat.

Upřímná omezení

  • Režim hodnocení: každé PDF začíná “Evaluation Only. Created with GroupDocs.Assembly 26.7…”. V pořádku pro vyzkoušení; před tím, než něco opustí tým, server licencujte.
  • Šablony jsou důvěryhodný vstup. Značky obrázků a dokumentů načítají cesty a URL, které vrací jejich výrazy, takže šablonu z pull requestu považujte za kód a serveru dejte jednu složku úložiště.
  • Data: zapisujte je jako 2026-11-03T00:00:00 a formátujte je v šabloně (<<[release.Date]:"d MMMM yyyy">>). Řetězec pouze s datem byl v našem testu posunut o den na stroji UTC+2; Docker image běží v UTC.
  • Generování po záznamu čte pouze JSON a maxDocuments (výchozí 100) zastaví nečekaně velké pole dříve, než se něco zapíše.
  • get_template_fields je statické: hodnoty vypočítané uvnitř projekcí Select nebo GroupBy nejsou sledovány.

Často kladené otázky

Může Claude Code vygenerovat PDF z JSON ve svém repozitáři bez cloudové služby?
Ano. MCP server běží lokálně jako podproces Claude Code a čte šablonu a JSON ze složky, na kterou ukážete.

Může to běžet v CI?
Server je MCP server, takže potřebuje MCP klienta: Claude Code v režimu bez hlavy, nebo jakýkoli agent runner. Docker image (ghcr.io/groupdocs-assembly/assembly-net-mcp) je pohodlná forma pro pipeline.

Word nebo PDF?
Obojí. Vynechte format a výstup bude DOCX jako šablona; "format":"pdf" dává PDF. get_supported_formats vypisuje každý cíl pro šablonu.

Prohloubení