MCP server
TAS vystavuje své AI nástroje externím MCP klientům (Claude Code, Claude Desktop, claude.ai, MCP Inspector) přes jeden HTTP endpoint. Tento článek popisuje, jak vydat přístup, jak zvolit rozsah nástrojů a jak připojit konkrétního klienta. Funkce je dostupná od verze 5.19; článek popisuje stav ve verzi 5.19.4.
Předpoklady
- TAS ve verzi 5.19 nebo novější,
- role
AdminneboAPI Token Administratorpro přístup k obrazovce API Access, - systémový uživatel, pod jehož identitou budou nástroje běžet (u API tokenu a confidential OAuth klienta),
- MCP klient, který umí Streamable HTTP transport.
Co MCP server umožňuje
Model Context Protocol je standard, kterým AI klient objevuje a volá nástroje cizí aplikace. TAS ven vystavuje stejný katalog nástrojů, jaký používá jeho vlastní AI chat. Připojený klient tak umí například založit případ, dohledat existující případ v přehledech uživatele, přečíst znalostní dokumenty organizace nebo spustit ruční událost workflow.
Server je bezestavový. Každý požadavek vytvoří novou instanci MCP serveru, vyřídí jednu JSON-RPC zprávu a zavře se. TAS si neudržuje žádné session ID ani stav mezi voláními, kontinuitu drží klient.
Vlastnost | Hodnota |
Protokol | MCP over Streamable HTTP |
Metoda |
|
Cesta |
|
Identifikace serveru |
|
Podporované verze protokolu |
|
Autentizace | API token nebo OAuth access token |
Adresa endpointu
Endpoint sedí na backendu, ne na doméně frontendu. Na části instalací je backend proxovaný pod cestou /api, takže adresa je https://<instance>/api/mcp. Jinde backend běží na rootu a adresa je https://<instance>/mcp.
Správnou adresu zjistíte z discovery dokumentu, který odpovídá na obou originech:
curl -s https://<instance>/.well-known/oauth-protected-resource
Odpověď:
{
"resource": "https://<instance>/api",
"authorization_servers": ["https://<instance>/api"],
"bearer_methods_supported": ["header"],
"resource_name": "tas"
}Hodnota resource je základní adresa backendu. MCP endpoint je <resource>/mcp.
Rychlý start
- Vydejte API token. V TAS přejděte na
Administrace > API Access > API Tokensa klikněte na Generate Token. Vyberte systémového uživatele, platnost ve dnech a popis. - Ověřte spojení voláním metody
initialize(viz níže). - Připojte klienta podle sekce Připojení klientů.
Ověřovací volání:
curl -s -X POST https://<instance>/api/mcp \
-H "Authorization: Bearer $TAS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"curl","version":"1"}}}'
Očekávaná odpověď:
{"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},
"serverInfo":{"name":"tas-mcp-server","version":"5.19.4",
"instructions":"tas stateless MCP server exposing local integration tools."},
"jsonrpc":"2.0","id":1}Accept musí obsahovat application/json i text/event-stream zároveň. Jinak server odpoví 406.Vydání přístupu
Všechny druhy přístupu se spravují na obrazovce API Access (/administration/api-access), rozdělené do tří záložek: API Tokens, OAuth Clients a OAuth Grants.

Který druh přístupu zvolit
Přístup | Vhodné pro | Jedná jako | Životnost |
API token | Vlastní skript, server-to-server integrace, rychlý test | Zvolený systémový uživatel | Dlouhá (výchozí 365 dní), statický řetězec |
OAuth: confidential | Strojová integrace, která nemá nosit trvalé tajemství | Spárovaný systémový uživatel | Krátká (8 hodin), vyměňuje se za client secret |
OAuth: public | Aplikace, které připojuje sám uživatel (Claude, ChatGPT) | Přihlášený uživatel, každý zvlášť | 8 hodin access token, rotující refresh token (30 dní) |
Vydání API tokenu
- Přejděte na
Administrace > API Access > API Tokens. - Klikněte na Generate Token.
- V poli System user vyberte systémového uživatele. Token nemá vlastní oprávnění, dědí role tohoto uživatele.
- Vyplňte Expiration (days) a Description.
- Potvrďte tlačítkem Generate Token a token zkopírujte.


/mcp. Neposílejte ho v URL, neukládejte do repozitáře a v konfiguracích klientů ho čtěte z proměnné prostředí.OAuth klienti
TAS je od verze 5.19 plnohodnotný OAuth 2.1 autorizační server. Pro MCP je podstatný hlavně public klient. Tak se připojuje Claude nebo ChatGPT: každý uživatel schvaluje přístup sám za sebe a nástroje pak běží pod jeho vlastními rolemi.
- Přejděte na
Administrace > API Access > OAuth Clients. - Klikněte na Create client.
- Vyplňte Client name.
- Zvolte Client type:
- Confidential (integration): server-to-server integrace přihlašující se client secretem jako zvolený systémový uživatel, bez souhlasu uživatele,
- Public (connected application): aplikace, kterou připojuje uživatel, bez client secretu, přes authorization code a PKCE.
- U confidential klienta vyberte System user a platnost secretu. U public klienta vyplňte Redirect URIs, jedno URI na řádek.
- Potvrďte tlačítkem Create client a uložte si Client ID.

https. Výjimkou je http pro localhost. Adresy se porovnávají přesně a nesmí obsahovat fragment.Zaregistrované redirect URI se dají zpětně přečíst a opravit v detailu klienta. Překlep v callbacku tedy neznamená zakládat klienta znovu.

U confidential klienta se při vytvoření zobrazí i client secret, stejně jednorázově jako API token. Pokud vyprší nebo unikne, nahradíte ho akcí Generate new secret na řádku klienta, aniž by klient přišel o svou identitu a aniž by bylo nutné přenastavovat připojenou aplikaci na nové Client ID.
Souhlas uživatele
Když public klient pošle uživatele na /oauth/authorize, TAS ho nejprve přihlásí kteroukoli nakonfigurovanou autoritou a poté zobrazí souhlasovou obrazovku. Ta jmenuje aplikaci, účet, pod kterým bude jednat, i cíl přesměrování.

Po potvrzení tlačítkem Allow vymění klient jednorázový kód s platností 60 sekund za access token (8 hodin) a rotující refresh token. Access token se na endpointu /mcp chová stejně jako API token.
Dynamická registrace klientů
Aplikace jako Claude se běžně registrují samy přes dynamickou registraci (POST /oauth/register). V TAS je tato možnost ve výchozím stavu vypnutá. Dokud ji nezapnete, je nutné public klienta založit ručně podle postupu výše.
Přepínač najdete v Administrace > Configuration > Application > Authentication pod klíčem application.authentication.oauthDynamicClientRegistration. Změna platí okamžitě, bez restartu.

/.well-known/oauth-authorization-server klíč registration_endpoint. Klienti podle jeho přítomnosti poznávají, zda se mají pokusit zaregistrovat, takže obě věci se zapínají a vypínají společně.Ve stejné sekci konfigurace se nastavuje i životnost tokenů: application.authentication.accessExpire (výchozí 28800 sekund, tedy 8 hodin) a application.authentication.refreshExpire (výchozí 2592000 sekund, tedy 30 dní). Samostatný konfigurační blok pro OAuth neexistuje.
Přehled udělených souhlasů
Záložka OAuth Grants ukazuje administrátorovi všechny vydané souhlasy: klienta, uživatele, datum vzniku, poslední použití a platnost. Odvolání souhlasu odpojí jednu aplikaci u jednoho uživatele.

Tentýž seznam, omezený na vlastní připojení, vidí uživatel v Nastavení uživatele > Connected applications. Svoje připojení si může odvolat sám, bez zásahu administrátora.

Scénáře: zúžení katalogu nástrojů
Holé /mcp vystaví všech 35 nástrojů. To je pro většinu úloh zbytečně široký katalog, ve kterém model hůř vybírá a plýtvá kontextem. Volitelný segment cesty vybere pojmenovaný výřez kolekcí a zároveň změní instrukce, které server o sobě klientovi sděluje.
Cesta | Nástrojů | K čemu slouží |
| 35 | Vše, co má k dispozici i vestavěný AI chat |
| 9 | Zakládání případů: co lze spustit, jaká pole to vyžaduje, validace a založení, podepřené znalostními dokumenty |
| 10 | Práce s existujícím případem: dohledání přes přehledy, ruční události workflow, čtení a zápis proměnných úkolu |
| 5 | Pouze dohledání případů v přehledech uživatele, bez zápisu |
| 5 | Odpovědi ze znalostních dokumentů organizace a z produktové dokumentace TAS |
| 4 | Role přihlášeného uživatele a jeho dřívější AI konverzace |
| 2 | Nahlédnutí do registru dostupných pluginů |
Scénář se promítne i do identity serveru. Endpoint /mcp/knowledge se představí jako tas-mcp-knowledge s instrukcí Answer questions from organization AI documents and TAS product documentation, takže klient rovnou ví, k čemu má server použít.
Neznámý scénář je odmítnut validací ještě před MCP vrstvou, takže odpověď je běžná chyba TAS, ne JSON-RPC chyba:
{"error":{"message":"params/scenario must be equal to one of the allowed values",
"error":"Bad Request","status":400,"statusCode":400}}Katalog nástrojů
Nástroje se vystavují pod holým názvem bez prefixu. Kolekce, ze které pocházejí, je uvedena na začátku popisu v hranatých závorkách, například [UserRolesTools] .... Anotace readOnlyHint a destructiveHint se odvozují z druhu nástroje.
Kolekce | Scénáře | Nástroje |
CreateInstanceProcessTools |
|
|
IdentifyInstanceProcessTools |
|
|
EditInstanceProcessTools |
|
|
AiDocumentsTools |
|
|
UserRolesTools |
|
|
AiConversationTools |
|
|
AvailablePluginsTools |
|
|
HelpDocsTools |
|
|
CaseAiTools | pouze holé |
|
CaseAiTools není součástí žádného scénáře a objeví se jen v holém /mcp. Je psaná pro chat nad otevřeným případem a pracuje s případem, který uživatel právě prohlíží. Přes MCP, kde žádná otevřená obrazovka není, se proto chová jinak než v aplikaci.Ukázka volání nástroje
curl -s -X POST https://<instance>/api/mcp/account \
-H "Authorization: Bearer $TAS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call",
"params":{"name":"query_user_roles","arguments":{}}}'
Ukázka odpovědi
{"result":{"content":[{"type":"text","text":"{ \"items\": [ ... ] }"}],
"structuredContent":{"result":{"items":[
{"ROLE_ID":-1,"ROLE_NAME":"$Administrator","ROLE_CATEGORY":"System", ...},
{"ROLE_ID":-8,"ROLE_NAME":"$AllUsers", ...}],
"limit":100,"hasMore":false,"nextCursor":null}}}Chyba nástroje se nevrací jako JSON-RPC chyba, ale jako výsledek s příznakem isError: true a textovým popisem, aby na ni model mohl reagovat.
Připojení klientů
Bez ohledu na klienta musí každý požadavek nést tyto hlavičky:
Accept: application/json, text/event-stream(obě hodnoty zároveň),Content-Type: application/json,Authorization: Bearer <token>.
Hlavička MCP-Protocol-Version je volitelná. Pokud ji klient pošle, musí obsahovat podporovanou hodnotu.
Claude Code
Claude Code umí HTTP transport nativně, token se předá v hlavičce:
claude mcp add --transport http tas \
https://<instance>/api/mcp/case-lookup \
--header "Authorization: Bearer $TAS_TOKEN"
Kontrola registrovaných serverů:
claude mcp list
Claude Desktop
Claude Desktop komunikuje přes stdio, HTTP endpoint proto zprostředkuje nástroj mcp-remote. Do souboru claude_desktop_config.json doplňte:
{
"mcpServers": {
"tas": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://<instance>/api/mcp/case-creation",
"--header", "Authorization: Bearer ${TAS_TOKEN}"
],
"env": { "TAS_TOKEN": "eyJhbGciOi..." }
}
}
}--header vynecháte, spustí mcp-remote místo statického tokenu OAuth: TAS odpoví 401 s discovery výzvou, otevře se prohlížeč se souhlasovou obrazovkou a token si klient obstará sám. To vyžaduje zaregistrovaného public klienta nebo zapnutou dynamickou registraci.claude.ai (vlastní konektor)
V nastavení konektorů stačí vložit adresu https://<instance>/api/mcp. Claude si stáhne discovery dokumenty, zaregistruje se a pošle uživatele na souhlasovou obrazovku TAS.
MCP Inspector
Pro ladění a prohlédnutí katalogu nástrojů:
npx @modelcontextprotocol/inspector
V Inspectoru zvolte transport Streamable HTTP, vložte adresu endpointu a do hlaviček doplňte Authorization: Bearer <token>.
Oprávnění a omezení
Pouze programový token
Endpoint přijímá výhradně token typu api nebo oauth. Běžný session token z prohlížeče je odmítnut jako UNAUTHORIZED, MCP tedy nelze volat z přihlášené relace uživatele. Neautentizovaný požadavek dostane 401 a s ním výzvu, podle které se OAuth klient dostane k discovery:
www-authenticate: Bearer resource_metadata=
"https://<instance>/api/.well-known/oauth-protected-resource/mcp"
Oprávnění jsou role uživatele
Nástroj běží v uživatelské relaci uživatele, kterému token patří, a vidí přesně to, co by viděl on sám v aplikaci. Role se vyhodnocují v okamžiku volání, ne při vydání tokenu. U public OAuth klienta jde o konkrétního člověka, který udělil souhlas, u API tokenu a confidential klienta o spárovaného systémového uživatele.
Zápisové nástroje se provedou ihned
destructiveHint je pouze upozornění pro klienta. Prakticky to znamená, že create_case_from_schema, invoke_case_hand_event, update_task_variables a trigger_case_event mění data bez mezikroku. Pro nedůvěryhodná nebo experimentální nasazení použijte scénář case-lookup nebo knowledge, které neobsahují žádný zápisový nástroj.Rychlost odvolání přístupu
Zneplatněný API token přestane platit okamžitě. U OAuth se platnost grantu ověřuje proti databázi v krátkém intervalu, řádově do minuty. Odvolání souhlasu, zakázání klienta i detekce znovupoužitého refresh tokenu proto odříznou všechny vydané access tokeny v tomto okně, ne až jejich vypršením.
Bez timeoutu na straně serveru
Server nemá vlastní timeout odpovědi. Zrušení nebo časový limit je záměrně ponechán na MCP klientovi.
Audit volání
Každé volání nástroje se zapisuje do tabulky AI_LLM_TOOL_CALL s příznakem zdroje mcp, spolu s uživatelem a kolekcí. Úspěšný záznam vzniká uvnitř téže transakce jako práce nástroje, takže projde buď obojí, nebo nic. Neúspěšný záznam se zapisuje mimo transakci, aby informace o selhání zůstala i po jejím odvolání.
Záznamy se prohlížejí v Administrace > AI monitoring > LLM Tool Calls (/administration/ai-observability/llm-tool-calls).

Odebrání přístupu
Co odebrat | Kde | Akce a dopad |
API token | API Access > API Tokens | Invalidate. Token se nemaže, dostane datum zneplatnění a okamžitě přestane fungovat. |
Celý OAuth klient (vratně) | API Access > OAuth Clients | Disable. Vratný příznak, který naráz odvolá všechny granty klienta. |
Celý OAuth klient (nevratně) | API Access > OAuth Clients | Delete permanently. Smaže klienta i jeho granty. Vyhrazeno superadministrátorům. |
Jeden souhlas uživatele | API Access > OAuth Grants | Odvolání grantu. Odpojí jednu aplikaci u jednoho uživatele. |
Vlastní připojení | Nastavení uživatele > Connected applications | Uživatel si odvolá svoje připojení sám, bez administrátora. |


API Token Administrator umožňuje klienta zakázat, ale ne trvale smazat. Trvalé smazání je vyhrazeno superadministrátorům.Řešení potíží
Odpověď | Co to znamená | Náprava |
| Chybí token, je neplatný, zneplatněný, nebo jde o session token z prohlížeče | Poslat platný API token nebo OAuth access token v hlavičce |
| Client must accept both application/json and text/event-stream | Doplnit hlavičku |
| Unsupported protocol version | Poslat |
| params/scenario must be equal to one of the allowed values | Překlep v názvu scénáře, povolené hodnoty jsou v tabulce scénářů |
| Dávka JSON-RPC zpráv (není podporovaná) nebo tělo, které není JSON-RPC | Posílat jednu zprávu na požadavek |
|
| Server je bezestavový a obsluhuje pouze |
Kód | Neznámý nástroj, nebo argumenty neprošly validací proti JSON schématu | Načíst |
| Klient hledá | Ověřit |
| Vypnutá dynamická registrace klientů | Zapnout ji v konfiguraci, nebo public klienta založit ručně |
| Překročený limit 60 požadavků za minutu na IP pro | Omezit frekvenci. Typicky nastane při opakovaném ladění OAuth flow ve smyčce |
Updated
by Frantisek Brych