Provoz kshana-mcp přes HTTP (vlastní hosting)
Pasáž pojmenovávající klienty AI třetích stran je zde vynechána; je v docs/deploy/mcp-http.md na GitHubu.
Kshana nehostuje žádný koncový bod. Neexistuje sdílený server kshana, na který by se klient dal nasměrovat. Provozujete jej na vlastním stroji, v kontejneru nebo cloudovém projektu a vlastníte jeho řízení přístupu i náklady. Server 0.40.0 je ten, který je v tomto repozitáři: jeho hodnoty nesou své štítky VALIDATED nebo MODELLED stejně jako přes stdio.
Bezpečné výchozí hodnoty#
| Ovládací prvek | Chování |
|---|---|
| Adresa pro navázání | Pouze loopback (127.0.0.1, ::1). Samotný port (--http 8080) znamená 127.0.0.1:8080. |
| Non-loopback | Vyžaduje --allow-remote a token typu bearer v proměnné prostředí KSHANA_MCP_HTTP_TOKEN (16 znaků nebo více). Bez obojího server odmítne spustit. S obojím vypíše varování, že naslouchá i mimo tento stroj. |
| Autentizace | Authorization: Bearer <token> při každém požadavku, pokud je token nastaven (lze jej nastavit i na loopbacku). Porovnává se v konstantním čase. Chybějící nebo chybný: 401. |
| Souborový systém | Žádný. Nástroje pro soubory IQ (iq_*) jsou v režimu HTTP vypnuty bez ohledu na to, co říká KSHANA_MCP_IQ_DIR; každý jiný nástroj přijímá svůj scénář vložený přímo a odmítne takový, který pojmenovává soubor. Žádný argument nástroje nečte ani nezapisuje cestu. |
| Velikost těla | --max-body-bytes, výchozí 5 MiB (strop scénáře je 4 MiB). Nad ním: 413, ať je délka deklarována, nebo je tělo dělené na části. |
| Doba odpovědi | --request-timeout-secs, výchozí 120. Nad ním: 408. Toto omezuje, jak dlouho volající čeká, nikoli práci: běh, který již probíhá, nelze zastavit, takže po 408 pokračuje a dokončí se na pozadí. |
| Souběžnost | --max-concurrent, výchozí 8. Nad ním požadavek dostane 503 s Retry-After okamžitě; žádný se neřadí do fronty. |
| Fond práce | Každé volání nástroje běží na blokujícím vlákně uvnitř fondu o --max-concurrent slotech, nikdy na asynchronních pracovních vláknech, takže dlouhý běh nemůže zabránit serveru v odpovídání. Slot se uvolní, až když skončí samotný běh, nikoli když volající to vzdá: opuštěné běhy se proto nemohou hromadit nad velikost fondu a volání, které najde fond plný, je odmítnuto jako zaneprázdněné. |
| Rozpočet práce | Scénář, který žádá mnohem víc než přibalené příklady, je odmítnut před během: více než 1000 realizací Monte Carlo (runs), mřížka parametrů s více než 1000 uzly, více než 5000 členských běhů (uzly mřížky krát realizace) nebo časová mřížka s více než 2 miliony epoch. Chyba uvádí pole, které snížit. Stejný rozpočet platí přes stdio; příkazový řádek kshana žádný nemá. |
| CORS | Hlavička Access-Control-* se nikdy neodesílá. Požadavek nesoucí hlavičku Origin je odmítnut (403), pokud není pojmenován pomocí --allow-origin <scheme://host[:port]>; * se nepřijímá. |
| Hlavička Host | Kontroluje se proti názvům loopbacku nebo adrese pro navázání plus každému --allowed-host. Za proxy nebo na adrese URL platformy zadejte --allowed-host your.domain. Cokoli jiného: 403. |
| Relace | Žádné. Každý POST dostane odpověď JSON; neudržuje se žádná tabulka relací ani otevřený proud server-sent events. |
kshana-mcp TLS neukončuje. Když je dosažitelný mimo jediný stroj, předřaďte mu HTTPS (TLS vaší platformy nebo reverzní proxy) a udržujte token v tajnosti; token typu bearer přes prosté HTTP lze na drátě přečíst.
Místně#
kshana-mcp --http 127.0.0.1:8080
Konfigurace klienta (klient s URL; hlavičku přidejte, pouze když je nastaven token):
{ "mcpServers": { "kshana": { "url": "http://127.0.0.1:8080/mcp",
"headers": { "Authorization": "Bearer ${KSHANA_MCP_HTTP_TOKEN}" } } } }
Docker#
export KSHANA_MCP_HTTP_TOKEN="$(openssl rand -hex 32)"
docker run --rm -p 127.0.0.1:8080:8080 -e KSHANA_MCP_HTTP_TOKEN \
ghcr.io/ashfordeou/kshana-mcp:0.40.0 \
--http 0.0.0.0:8080 --allow-remote --allowed-host localhost:8080 --allowed-host 127.0.0.1:8080
Uvnitř kontejneru musí server naslouchat na 0.0.0.0, takže potřebuje --allow-remote a token. Zveřejnění portu jako 127.0.0.1:8080:8080 jej ponechá na vašem stroji; 127.0.0.1: vynechejte, jen když jej chcete vystavit, a pak před něj předřaďte ukončení TLS. docker compose a šablony pro Fly.io a Cloud Run jsou v mcp-http/.
Šablony (nasazujete je vy; Kshana žádnou neprovozuje)#
mcp-http/docker-compose.ymlmcp-http/fly.toml: token nastavte pomocífly secrets set KSHANA_MCP_HTTP_TOKEN=...mcp-http/cloudrun.service.yaml: token vezměte ze Secret Manageru
Každá spouští publikovaný obraz, nastavuje --allowed-host na název hostitele platformy, který v souboru nahradíte, a pro HTTPS se spoléhá na platformu.
Nastavte na platformě limit CPU a paměti#
Časový limit, fond a rozpočet omezují, kolik práce se připustí, ale jedno připuštěné volání může stále dlouho využívat jádro a velký výsledek může zabrat stovky megabajtů. Nastavte pevný limit i na kontejneru: šablony žádají 2 CPU a 1 GiB (cpus a mem_limit v Compose, [[vm]] ve Fly, resources.limits v Cloud Run). Držte --max-concurrent na počtu CPU nebo pod ním.
Čím není#
- Není to služba pro více nájemců. Každý, kdo drží token, spouští simulace na vašem hardwaru; nad rámec výše uvedených limitů neexistují kvóty pro jednotlivé uživatele.
- Pouze poradní charakter, nikoli typově schválené navigační zařízení: za navigaci zůstává odpovědný provozovatel. Výstupy simulátoru jsou hodnoty pro analýzu, buď vypočtené z modelu, nebo ověřené proti nezávislé vnější referenci, jako všude jinde v Kshana.