Pohoda MCP

by dg

255 downloads
Not rated
GitHub

About

MCP server for Pohoda accounting software (Czech) - read and create invoices, orders, inventory, contacts via mServer XML API.

Details

Author
dg
Downloads
255
Categories
Productivity, Other, Finance, Automation

Setup

Install Pohoda MCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/dg/pohoda-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

MCP server pro účetní softwarePohodaod Stormware. Komunikuje s Pohodou přesmServer XML API.

Propojte svého AI asistenta přímo s účetnictvím. Ptejte se na faktury, procházejte adresář, kontrolujte zásoby, vytvářejte nové doklady nebo si nechte vytisknout fakturu do PDF. Stačí napsat, co potřebujete, a MCP server se postará o komunikaci s Pohodou.

- PHP 8.1+
- ext-curl, ext-dom, ext-simplexml
- Pohoda s aktivním mServerem (schéma verze 2)

Před použitím MCP serveru je potřeba v Pohodě zapnout a nakonfigurovat mServer.

V programu Pohoda otevřete agenduÚčetní jednotky, v menu zvolteDatabáze > POHODA mServer.

Otevře se dialogové okno se seznamem konfigurací mServeru. Pro každou konfiguraci je uveden název, port, stav spuštění, host a PID.

Klikněte naNovýa na záložceZákladnínastavte:

- NázevmServeru
- Účetní jednotku, se kterou bude mServer komunikovat
- Portpro komunikaci (výchozí 444)

Na záložceHTTPSlze zapnout zabezpečenou komunikaci:

Na záložceMonitoringlze zapnout logování komunikace:

Vyberte konfiguraci a klikněte naSpustit(nebo dvakrát klikněte na záznam). mServer začne naslouchat na nastaveném portu.

Alternativně lze mServer ovládat z příkazové řádky pomocí přepínače/HTTPnadpohoda.exe. Jako poslední parametr se uvádí název konfigurace (v uvozovkách, pokud obsahuje mezery):

& "C:\Program Files (x86)\STORMWARE\POHODA\Pohoda.exe" /HTTP start "eShop-1" & "C:\Program Files (x86)\STORMWARE\POHODA\Pohoda.exe" /HTTP stop "eShop-1" & "C:\Program Files (x86)\STORMWARE\POHODA\Pohoda.exe" /HTTP restart "eShop-1" & "C:\Program Files (x86)\STORMWARE\POHODA\Pohoda.exe" /HTTP list

Další příkazy:stop /f(vynucené ukončení),list:xml(výpis konfigurací do XML). Pro automatické spuštění při startu systému Stormware doporučujePlánovač úloh Windows(ne Windows službu).

git clone https://github.com/dg/pohoda-mcp.git cd pohoda-mcp composer install

Server se konfiguruje přes proměnné prostředí:

Pokud jsou nastavenyPOHODA_EXE_PATHaPOHODA_CONFIG_NAME, server před prvním tool callem ověří, že mServer běží — pokud ne, sám ho spustí přespohoda.exe /HTTP start. Při ukončení MCP serveru ho zase zastaví, ale jen pokud ho sám startoval (pokud mServer už běžel, necháme ho běžet). Windows-only (mServer je součást Pohody).

Přidejte do.mcp.jsonnebo do project settings:

{ "mcpServers": { "pohoda": { "command": "php", "args": ["/cesta/k/pohoda-mcp/server.php"], "env": { "POHODA_URL": "http://localhost:444", "POHODA_ICO": "12345678", "POHODA_USERNAME": "Admin", "POHODA_PASSWORD": "", "POHODA_EXE_PATH": "C:\\Program Files (x86)\\STORMWARE\\POHODA\\Pohoda.exe", "POHODA_CONFIG_NAME": "mServer1" } } } }

Poslední dvě proměnné jsou volitelné — slouží k automatickému spuštění mServeru při prvním tool callu (viz výše).

Ověří, jestli mServer běží a odpovídá. Základní volání vrací pouze stručný text zGET /status(Pohoda odpovídá prostým stringem, ne XML). S parametremcompanyDetail=truenavíc přes autentizovaný dotaz vrátí název účetní jednotky, název databáze a aktuální účetní rok.

list_documents, list_stock, list_contacts

Tři čtecí nástroje rozdělené podle druhu záznamu. Niche/číselníkové agendy (centre,activity,store,bankAccount,cashRegister,numericalSeries) nejsou dostupné přes dedikovaný tool, použijraw_xml.

Doklady. Parametragenda— jedna z následujících:

  • Agendainvoicevyžaduje parametrinvoiceType:issuedInvoiceneboreceivedInvoice.
Filtry:id,dateFrom,dateTill,company,ico,number(přesná shoda celé hodnoty, ne substring),lastChanges(záznamy změněné odYYYY-MM-DDThh:mm:ss),limit(default 100, klientský ořez).

Zásoby. Filtry:id,code,name,EAN,storage(cesta ve členění skladu, např."ZBOZI/Elektro"),store(zkratka skladu),internet(true/false),lastChanges,limit.

Adresář. Filtry:id,company,ico,lastChanges,limit.

Vytvoření vydané nebo přijaté faktury. Podporuje:

- adresu partnera přímo nebo vazbu na adresář (partnerId)
- variabilní symbol, datum splatnosti, datum zdanitelného plnění
- předkontaci, způsob platby, bankovní účet
- středisko, činnost, zakázku
- cizí měnu s kurzem
- položky s vazbou na skladovou kartu (stockCode)

Vytvoření záznamu v adresáři (firma/kontakt).

Vytvoření skladové karty. Kromě základních údajů (kód, název, cena) podporuje:

- EAN, PLU pro pokladny
- příznaky pro prodej a e-shop
- popis, doplněk názvu, krátký název
- minimální a maximální zásobu, hmotnost
- dodavatele, záruku

Vytvoření přijaté nebo vydané objednávky s položkami.

Tisk nebo export do PDF libovolného záznamu. Umí:

- tisk na tiskárnu (výchozí nebo konkrétní)
- export do PDF souboru na serveru (pdfPathje povinný pro PDF cestu)
- vrácení PDF jako Base64 přímo v odpovědi (pdfBase64=true, vyžadujepdfPath)

Agenda se zadává česky:vydane_faktury,prijate_faktury,zasoby,adresar,pokladna,banka,interni_doklady,zakazky,vydejky,prijemky,prodejky,vydane_objednavky,prijate_objednavky,vydane_nabidky,prijate_nabidkyatd.

ID tiskové sestavy (reportId) se liší podle instalace a vlastních úprav. V Pohodě ho zjistíte vEditoru tiskových sestav(menu Soubor → Tiskové sestavy), kde u každé sestavy vidíte sloupec ID, nebo přes pravé tlačítko myši na sestavě v dialogu tisku →Vlastnosti. Standardní dodávané sestavy mají ID v řádech stovek až tisíců (typicky 200–3000+).

Odeslání libovolného XML. Pokrývá případy, na které ostatní nástroje nestačí. XML se vloží přímo do<dat:dataPackItem>obálky, musí tedy obsahovat vlastní namespace deklarace.

Číselníky povolených hodnot jsou vystavené jako MCP resources, takže si je klient může vyzvednout bez tool callu:

Knihovnu lze použít i přímo jako PHP klienta pro mServer, nezávisle na MCP. Hodí se pro vlastní skripty, cronjoby nebo integraci do existující aplikace.

use DG\Pohoda\PohodaClient; $client = new PohodaClient( url: 'http://localhost:444', ico: '12345678', username: 'Admin', password: '', ); // Najdi fakturu podle čísla dokladu $list = $client->listRecords('invoice', ['number' => '26010192'], 'issuedInvoice'); $faId = (int) $list->items[0]->data['invoice'][0]['invoiceHeader']['id']; // Vytiskni ji do PDF $client->printRecord([ 'agenda' => 'vydane_faktury', 'recordId' => $faId, 'reportId' => 3000, 'pdfPath' => 'C:\\tmp\\faktura.pdf', ]);

Veřejné metodyPohodaClient:getStatus(),listRecords(),createInvoice(),createAddress(),createStock(),createOrder(),printRecord(),sendRawXml().

Pokud skript nemůže předpokládat, že je mServer už spuštěný, hodí se třídaMServerController. Je to tenký obal nadpohoda.exe /HTTP start|stop, který spouští Pohodu non-blocking a po startu pollujePohodaClient::getStatus(), dokud mServer nezačne odpovídat. Windows-only.

Nejjednodušší cesta je předat hoPohodaClientu — ten si pak sám lazy nastartuje mServer před prvním HTTP requestem a při destrukci ho zase zastaví (jen pokud ho sám startoval; pokud už běžel, necháme ho běžet):

use DG\Pohoda\MServerController; use DG\Pohoda\PohodaClient; $client = new PohodaClient(url: 'http://127.0.0.1:555', ico: '12345678', username: 'Admin', password: ''); $client->setController(new MServerController( exePath: 'C:\Program Files (x86)\STORMWARE\POHODA\Pohoda.exe', configName: 'mServer1', )); // ... práce s $client — autostart se postará o sebe ...

Pokud chceš lifecycle řídit ručně, controller umí stejné věci přímo:

$ctrl = new MServerController(exePath: '...', configName: 'mServer1'); $wasRunning = false; try { $client->getStatus(); $wasRunning = true; } catch (\RuntimeException) { $ctrl->start($client); // vrátí se až když mServer odpovídá (nebo vyhodí po timeoutu) } // ... práce s $client ... if (!$wasRunning) { $ctrl->stop(); }

Při volání HTTP endpointů používejhttp://127.0.0.1:555, nehttp://localhost:555— PHP resolver zkouší prolocalhostnejdřív IPv6 (::1), kam mServer nenaslouchá, a čeká se zbytečně na timeout.

- start(PohodaClient $client, int $timeoutSeconds = 30)— spustí Pohodu s/HTTP start, čeká až HTTP status API odpoví. Při timeoutu vyhodíRuntimeException.
- stop()— pošle/HTTP stopfire-and-forget, nečeká na ukončení.

server.php vstupní bod MCP serveru (stdio transport) src/ McpTools.php tenký MCP adaptér (#[McpTool] atributy) PohodaClient.php HTTP klient a doménové metody pro mServer API XmlBuilder.php stavba XML požadavků přes XMLWriter Response.php parsovaná odpověď z mServeru ResponseItem.php jeden záznam z odpovědi MServerController.php spouštění a zastavování mServeru přes pohoda.exe

MCP server for Fiken — Norway's popular accounting software. Manage invoices, contacts, journal entries, and bank accounts via AI agents.

Contract and template management for drafting, reviewing, and sending binding contracts.

Australian trade business OS with 67 MCP tools across 23 domains — autonomous business formation, lead management, quoting, job scheduling, invoicing, crypto payments, and growth analytics for tradies.

AI-native business management MCP server — 31 tools for invoicing, expenses, clients, products, quotes & tax compliance. 40 currencies, OCR, Stripe Connect. MIT licensed.

Qasper gives AI agents the tools to discover local service businesses, check availability, and book appointments in real time.

AI-native trade business management for Australian tradies. 11 MCP tools for leads, quotes, jobs, invoicing, financials, and client CRM.

ClearPolicy is a document signing and compliance tracking tool for organizations. Once connected, your AI assistant can import documents, send signature requests, track who has and hasn't signed, and manage your contacts — all by prompt.

An MCP server for integrating with Clio practice management software, tailored for Australian legal professionals.

Connect AI assistants to Dashform — build and manage AI-powered forms, funnels, quizzes, and lead qualification workflows through MCP.

MCP-enabled invoicing platform for invoice creation, PDF export, and billing operations.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.