Dokumentace


MCP server pro AI strávníků

Připravili jsme MCP server – rozhraní (v podstatě API), přes které si ke svému účtu strávníka připojíte vlastního AI asistenta – třeba Claude nebo ChatGPT – a objednáváte obědy obyčejnou řečí: „Co je zítra k obědu?“, „Objednej mi na příští týden každý den první hlavní jídlo“, „Kolik mám kreditu?“. Asistent pracuje s vaším účtem podle stejných pravidel jako mobilní aplikace – stejné uzávěrky, ceny, limity i oprávnění. Nic, co byste v aplikaci udělat nemohli, neudělá ani asistent.

Adresa MCP serveru: https://www.objednavkaobedu.cz/mcp

Propojení funguje přes otevřený standard MCP (Model Context Protocol), který podporují běžné AI aplikace. Na straně Objednávky obědů nemusíte nic zapínat ani nastavovat – stačí se při připojení přihlásit svým účtem.

Pro AI asistenty a vývojáře: strojově čitelný popis v Markdownu – /mcp.md (všechny nástroje s parametry, oprávnění, chybové kódy; generuje se přímo ze serveru) a /llms.txt.

Funkce je ve zkušebním provozu (BETA). Vše podstatné funguje, ale může se objevit chyba nebo nečekané chování. Pokud na něco narazíte, dejte nám vědět – postup je v části Hlášení problémů.

Co asistent umí

Které funkce jsou u vás k dispozici, záleží na nastavení vaší jídelny – stejně jako v mobilní aplikaci.

Jak asistenta připojit

Ve všech aplikacích se zadává stejná adresa serveru:

https://www.objednavkaobedu.cz/mcp

Přihlašovací jméno ani heslo do AI aplikace nezadáváte – aplikace vás při připojení přesměruje na přihlašovací stránku Objednávky obědů.

Claude (claude.ai, aplikace Claude pro počítač)

  1. Otevřete nastavení konektorů (v současné verzi Customize → Connectors, dříve Nastavení → Connectors).
  2. Klikněte na + / Add custom connector (přidat vlastní konektor).
  3. Jako název zadejte např. Objednávka obědů, jako adresu (URL) https://www.objednavkaobedu.cz/mcp. Pokročilá nastavení (OAuth Client ID a Secret) nechte prázdná.
  4. Klikněte na Add a potom Connect – otevře se přihlášení do Objednávky obědů (viz níže).
  5. V konverzaci ověřte, že je konektor zapnutý (nabídka nástrojů / konektorů u pole pro zprávu), a zeptejte se třeba „Co je tento týden k obědu?“.

Vlastní konektory jsou dostupné i v bezplatném tarifu (s omezeným počtem). U firemních tarifů (Team, Enterprise) je musí nejdřív povolit správce organizace. Konektor přidaný na webu pak obvykle funguje i v mobilní aplikaci Claude. Aktuální postup najdete v nápovědě Claude.

ChatGPT

  1. V nastavení ChatGPT zapněte režim pro vývojáře (Developer mode). Je dostupný na webu pro placené tarify; ve firemních tarifech ho musí povolit správce.
  2. V části s aplikacemi / konektory přidejte novou aplikaci (+) pro vzdálený MCP server.
  3. Zadejte adresu https://www.objednavkaobedu.cz/mcp a jako způsob ověření zvolte OAuth (bez vlastního Client ID).
  4. Dokončete přihlášení do Objednávky obědů a aplikaci v konverzaci zapněte.

ChatGPT se u akcí, které něco mění, sám ptá na potvrzení – to je navíc k potvrzení, které vyžaduje náš server. Aktuální postup najdete v dokumentaci OpenAI.

Jiná AI aplikace

Funguje každá aplikace, která umí připojit vzdálený MCP server (transport „Streamable HTTP“) s přihlášením přes OAuth. Zadejte adresu serveru, zbytek (registrace aplikace, přihlášení) proběhne automaticky. Technické podrobnosti jsou v části Pro vývojáře.

Přihlášení a povolení přístupu

  1. Přihlásíte se stejně jako do objednávkového systému – jménem a heslem, případně přes účet Microsoft, pokud se jím do systému přihlašujete. Máte-li více účtů, vyberete ten, ke kterému chcete asistenta připojit.
  2. Zobrazí se obrazovka Povolení přístupu k účtu. Zkontrolujte adresu aplikace, která o přístup žádá (název si aplikace uvádí sama, rozhodující je adresa – u Claude a ChatGPT jde o jejich vlastní domény).
  3. Projděte si oprávnění, o která aplikace žádá, a klikněte na Povolit přístup. Pokud jste připojení sami nespouštěli, klikněte na Odmítnout.

Oprávnění jsou čtyři:

OprávněníCo asistent smí
Prohlíženízobrazit jídelníčky, vaše objednávky, platby a zůstatek kreditu, zprávy a údaje vašeho profilu
Objednávkyobjednávat a rušit jídla, upravovat objednávky (poznámka, příloha, doplněk, balení, výdejní místo), nastavovat automatické objednávky, hodnotit jídla a označovat zprávy jako přečtené
Platbyzakládat platby – dobití kreditu a úhradu košíku (i z vašeho kreditu); platbu kartou nebo převodem vždy dokončujete sami
Profil a hesloměnit údaje vašeho profilu (jméno, kontakty, adresu, fakturační údaje, upozornění) a heslo k účtu

Kterou část oprávnění aplikace požaduje, určuje AI aplikace. Bez oprávnění k dané oblasti asistent příslušné akce vůbec nevidí.

Přihlášení si prohlížeč pamatuje 14 dní, takže při dalším připojení (např. z jiné AI aplikace) už stačí jen potvrdit přístup. Pokud na obrazovce vidíte cizí účet, použijte tlačítko Nejsem to já – odhlásit.

Bezpečnost

Hlášení problémů

Když asistent narazí na chybu, která vypadá jako chyba systému, nebo mu řeknete, že něco nefunguje, může nám problém nahlásit sám – popíše, co dělal, co čekal a co se stalo. Hlášení nemá vliv na objednávky ani účet a asistent vám sdělí jeho číslo (např. MCP-123); to se hodí, pokud nás budete kontaktovat. O nahlášení ho můžete také výslovně požádat.

Obvyklá pravidla – prošlá uzávěrka, nízký kredit, jídlo, které už nelze objednat – chybou nejsou; asistent vám je vysvětlí stejně, jako by je zobrazila mobilní aplikace.

Případně se obraťte přímo na podporu: podpora@objednavkaobedu.cz.

Omezení

Pro vývojáře

Technický popis pro ty, kdo MCP server připojují z vlastního klienta. Server vystupuje vždy jako jeden přihlášený strávník a volá stejnou logiku jako mobilní aplikace (API strávníka). Pro napojení firemních systémů slouží firemní API.

Endpoint a transport

Autorizace (OAuth 2.1)

Oprávnění (scopes)

ScopeNa obrazovce souhlasuNástroje
mcp:ordering:readProhlíženívšechny čtecí nástroje a report_problem
mcp:ordering:writeObjednávkyobjednávky, storno, úpravy porcí, výdejní místo, automatické objednávky, hodnocení, přečtení zprávy
mcp:payments:writePlatbyadd_credit, basket_payment
mcp:account:writeProfil a hesloupdate_profile, change_password

tools/list vrací jen nástroje, na které má token scope. Volání nástroje bez scope skončí HTTP 403, JSON-RPC chybou -32002 s data.required_scope a hlavičkou WWW-Authenticate: Bearer error="insufficient_scope", scope="…" (step-up: klient projde autorizací znovu s rozšířeným scope – refresh token nové scopes nepřidá).

Nástroje

NástrojCo děláScope
Jídelny a jídelníček (čtení)
list_canteensjídelní lístky, ze kterých lze objednávat (i propojených účtů), s nastavením objednáváníread
list_accessible_canteenszjednodušený seznam jídelních lístků vlastního účtu (id + název)read
get_canteen_infodetail jídelního lístku – adresa, uzávěrky, kontakty, platební volbyread
get_organization_infoprovozovatel stravování – kontakt, fakturační údaje, zapnuté funkceread
list_menujídelníček za období (max. 31 dní) s cenami, možností objednat a vlastními objednávkamiread
permanent_offer_catalogstálá nabídka na daný denread
menu_pdftýdenní jídelníček v PDFread
Objednávky
order_historyobjednávky za období (max. 31 dní)read
cancel_optionsporce objednaného jídla (varianty podle přílohy, doplňku, balení) s indexyread
order_fee_rulespravidla poplatků k objednávceread
basket_foodnezaplacený košík (jídelní lístek s platbou předem)read
basket_credit_previewkolik z košíku pokryje kredit a kolik zbývá zaplatitread
place_orderobjednání jídla – nastaví výsledný počet porcí (0 = odebrat); u platby předem vloží do košíkuordering:write
cancel_orderstorno objednávky celé nebo vybraných porcíordering:write
cancel_purchasedstorno zaplacené e-shopové objednávky s vrácením na kreditordering:write
save_order_notepoznámka pro kuchyň k objednávceordering:write
set_supplementvýběr přílohy pro porciordering:write
set_accessorypřidání / odebrání doplňku k porciordering:write
set_packagingvýběr balení pro porciordering:write
change_order_pickup_pointzměna výdejního (odběrného) místa pro objednávky dneordering:write
Automatické objednávky
list_auto_orderspravidla automatického objednáváníread
add_auto_orderpřidání pravidla (nebo změna počtu porcí u existujícího)ordering:write
cancel_auto_ordersmazání pravidla (už vytvořené objednávky zůstávají)ordering:write
Kredit a platby
get_balancezůstatek kreditu a režim úhradread
credit_movementspohyby na kreditu za rokread
list_paymentsdoklady za rok (faktury, účtenky, dobití, dobropisy)read
payment_documentPDF dokladuread
add_creditdobití kreditu – vrátí odkaz na platební bránu nebo údaje pro převodpayments:write
basket_paymentúhrada košíku (nejdřív z kreditu, zbytek přes bránu)payments:write
Účet a profil
get_profileprofil strávníkaread
list_linked_accountspropojené účty a účty, za které lze jednat (zástup)read
get_conditions_documentobchodní podmínky nebo zásady GDPR (PDF nebo text)read
get_terms_acceptance_linkzda je třeba odsouhlasit podmínky + odkaz, kde to strávník udělá sámread
update_profileúprava profilu (mění jen předaná pole)account:write
change_passwordzměna heslaaccount:write
Zprávy
list_messagesschránka zpráv s náhledemread
get_messagecelý text zprávy (neoznačí ji jako přečtenou)read
get_important_messagenejnovější nepřečtená důležitá zprávaread
unread_message_countpočet nepřečtených zprávread
mark_message_readoznačení zprávy jako přečtenéordering:write
Hodnocení jídel
list_food_ratingsjídla, která lze hodnotit, s dosavadním hodnocenímread
rate_foodhodnocení jídla (1–5 hvězdiček, komentář)ordering:write
remove_food_ratingsmazání hodnoceníordering:write
snooze_food_rating_promptodložení výzvy k hodnocení („Teď ne“)ordering:write
Ostatní
report_problemnahlášení problému vývojářům (BETA) – vrací report_idread

Zápisové nástroje: náhled → potvrzení

Společné argumenty

Chyby

Obchodní chyba nástroje přijde jako výsledek s isError: true (HTTP 200) a ve structuredContent má error (stabilní kód), message, případně detail (původní hláška systému v jazyce lang) a klíče beta + report s výzvou k report_problem. Nejčastější kódy:

KódVýznam
deadlineuzávěrka pro objednání / změnu minula
creditnedostatečný kredit nebo neuhrazené doklady
accessbez přístupu k jídelnímu lístku, účtu nebo zástupu
terms_not_acceptedstrávník musí odsouhlasit obchodní podmínky (viz get_terms_acceptance_link)
soup_limitlimit polévek vůči hlavním chodům
permanent_offer_date_requiredstálá nabídka: chybí date_on
not_found, rule_not_found, message_not_found, document_not_foundzáznam nenalezen (nebo nepatří strávníkovi)
not_rateablejídlo už nelze hodnotit
invalid_arguments, invalid_date, range_too_large, invalid_indexeschybné argumenty; období max. 31 dní
current_password_required, invalid_current_passwordzměna hesla: chybí / nesedí současné heslo
idempotency_conflict, idempotency_busyklíč použit s jinými argumenty / stejná operace právě probíhá
too_largedokument je příliš velký
rate_limitedpřekročen limit (např. hlášení problémů)
rejected, errorjiné odmítnutí systémem – důvod je v message / detail

Chyby protokolu jsou standardní JSON-RPC: -32700 neplatný JSON, -32600 neplatný požadavek, -32601 neznámá metoda, -32602 neznámý nástroj nebo neplatné argumenty (podle JSON Schema nástroje), -32603 vnitřní chyba, -32002 chybějící scope (HTTP 403). Neplatný nebo prošlý token a zablokovaný či neschválený účet vrací HTTP 401.

Hlášení problémů a limity

Naposledy aktualizováno:

Pomozte nám vylepšit dokumentaci

Našli jste nesrovnalost nebo potřebujete něco doplnit? Napište nám na info@objednavkaobedu.cz

Nemáte ještě Objednávku obědů?

Ozveme se a domluvíme nezávaznou schůzku — osobně nebo online.

Pojďme to probrat