Dve MCP sluzby: obecna podle specifikace a MCP EasyWeb, strankovani nastroju

MCP je standard, ale prihlaseni k nemu ne. Oficialni specifikace stoji na
OAuth 2.1 a objevovani autorizacniho serveru pres .well-known. EasyWeb
(Centaur) ma prihlaseni vlastni: POST /login s HTTP Basic vrati trojici tokenu
a obnovuje se vlastnimi endpointy. Zadny OAuth, zadne .well-known, jina verze
protokolu, zadne SSE ani hlavicka sezeni.

Proto dve sluzby, ne jedna s prepinacem: firma pri zakladani konektoru
vyplnuje neco jineho. U obecne ID a tajemstvi aplikace nebo hotovy token,
u EasyWebu jmeno, heslo a nazev zarizeni. Slucovat to by znamenalo formular,
kde je pulka poli vzdycky k nicemu, a hadani, ktera pulka to prave je.

Obecna sluzba zustava plnohodnotna. Vlastni server je duvod pridat sluzbu, ne
duvod zavrit dvere ostatnim.

Pribylo:
- src/mcp/dialect.ts - rozdily obou serveru na jednom miste: prihlaseni, verze
  protokolu, jestli se prijima SSE a jestli se posila Mcp-Session-Id. Rozesete
  po klientovi by u kazdeho dalsiho serveru pribyl dalsi if na jinem miste
- sluzba MCP EasyWeb: adresa, jmeno, heslo, nazev a otisk zarizeni.
  Prihlasovaci adresy si portal odvodi sam, otisk doplni z ID konektoru
- hotovy token u obecne sluzby. Rada verejnych serveru nic jineho nenabizi
- objevovani pres WWW-Authenticate, coz specifikace ma jako povinnou cestu.
  Pouziva se az kdyz obvykla mista selzou, stoji to volani navic
- zivotnost z tela tokenu: kdyz server expires_in ani datum neposle, cte se
  exp z JWT. Presne pripad EasyWebu
- strankovani nastroju: nastroj s parametrem cursor dostane v builderu prepinac
  Nacist vsechny stranky. Kurzor je hodnota z odpovedi, takze v dobe stavby
  stromu ho nikdo nezna a nejde ho vyplnit dopredu. Krok pak vraci navic items,
  pages, pageCount a truncated. Strop je 20 stranek

Opraveno: prihlaseni driv zkousela password grant a HTTP Basic proti hlavnimu
endpointu. Prvni OAuth 2.1 zrusil, druhe neni nikde ve specifikaci a u EasyWebu
by stejne neproslo - ten chce Basic na /login, ne na /mcp.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
JiriUhlir
2026-08-28 10:13:33 +02:00
co-authored by Claude Opus 5
parent 92fecca70c
commit 81e4348ad8
14 changed files with 1006 additions and 352 deletions
+42
View File
@@ -2,6 +2,48 @@
Nejnovejsi nahore.
## 2026-08-28 - dve MCP sluzby: obecna a EasyWeb, strankovani nastroju
MCP je standard, ale **prihlaseni k nemu ne**. Oficialni specifikace stoji na
OAuth 2.1 a objevovani autorizacniho serveru pres `.well-known`. EasyWeb
(Centaur) ma prihlaseni vlastni: `POST /login` s HTTP Basic vrati trojici tokenu
a obnovuje se vlastnimi endpointy. Zadny OAuth, zadne `.well-known`, jina verze
protokolu, zadne SSE ani hlavicka sezeni.
Proto jsou v katalogu **dve sluzby**, ne jedna s prepinacem: firma pri zakladani
konektoru vyplnuje neco jineho. U obecne ID a tajemstvi aplikace nebo hotovy
token, u EasyWebu jmeno, heslo a nazev zarizeni. Slucovat to by znamenalo
formular, kde je pulka poli vzdycky k nicemu, a hadani, ktera pulka to je.
Obecna sluzba pritom **zustava plnohodnotna**. Vlastni server je duvod pridat
sluzbu, ne duvod zavrit dvere ostatnim.
### Pribylo
- `src/mcp/dialect.ts` - rozdily obou serveru na jednom miste: prihlaseni,
verze protokolu, jestli se prijima SSE a jestli se posila `Mcp-Session-Id`.
Rozesete po klientovi by u kazdeho dalsiho serveru pribyl dalsi `if` jinde.
- **Sluzba MCP EasyWeb.** Adresa, jmeno, heslo, nazev a otisk zarizeni.
Prihlasovaci adresy si portal odvodi z adresy serveru sam. Otisk se doplnuje
z ID konektoru, aby server poznal totez zarizeni.
- **Hotovy token u obecne sluzby.** Rada verejnych serveru nic jineho nenabizi
a bez toho by na ne neslo zalozit konektor.
- **Objevovani pres `WWW-Authenticate`.** Specifikace to ma jako povinnou cestu:
server u odpovedi 401 rekne, kde jsou jeho metadata. Pouziva se az kdyz obvykla
mista selzou, protoze to stoji volani navic.
- **Zivotnost z tela tokenu.** Kdyz server `expires_in` ani datum neposle, cte se
`exp` z JWT. To je presne pripad EasyWebu.
- **Strankovani nastroju.** Nastroj s parametrem `cursor` dostane v builderu
prepinac Nacist vsechny stranky. Kurzor je hodnota z odpovedi, takze v dobe
stavby stromu ho nikdo nezna a nejde ho vyplnit dopredu. Krok pak vraci navic
`items`, `pages`, `pageCount` a `truncated`. Strop je 20 stranek.
### Opraveno
Prihlaseni driv zkousela `password` grant a HTTP Basic proti hlavnimu endpointu.
Prvni OAuth 2.1 zrusil, druhe neni nikde ve specifikaci a u EasyWebu by stejne
neproslo - ten chce Basic na `/login`, ne na `/mcp`.
## 2026-08-28 - MCP: prihlaseni jmenem a heslem, tokeny si resi portal
Predchozi verze chtela po uzivateli token. To bylo spatne zadani: zakaznik