Ajetaan kshana-mcp HTTP:n kautta (itse ylläpidettynä)
Kolmansien osapuolten tekoälyasiakkaita nimeävä kappale on jätetty tästä pois; se on tiedostossa docs/deploy/mcp-http.md GitHubissa.
Kshana ei isännöi päätepistettä. Ei ole yhteistä palvelinta kshana, johon asiakkaan voisi osoittaa. Se ajetaan omalla koneella, kontissa tai pilviprojektissa, ja pääsynhallinta ja kustannukset ovat ajajan vastuulla. Version 0.40.0 palvelin on se, joka on tässä repositoriossa: sen luvuissa on merkinnät VALIDATED tai MODELLED täsmälleen kuten stdion kautta.
Turvalliset oletukset#
| Hallinta | Toiminta |
|---|---|
| Sidontaosoite | Vain loopback (127.0.0.1, ::1). Pelkkä portti (--http 8080) tarkoittaa osoitetta 127.0.0.1:8080. |
| Non-loopback | Vaatii valitsimen --allow-remote ja bearer-tunnuksen ympäristömuuttujassa KSHANA_MCP_HTTP_TOKEN (16 merkkiä tai enemmän). Ilman molempia palvelin kieltäytyy käynnistymästä. Kun molemmat on annettu, se tulostaa varoituksen siitä, että se kuuntelee tämän koneen ulkopuolelta tulevia yhteyksiä. |
| Todennus | Authorization: Bearer <token> jokaisessa pyynnössä, kun tunnus on asetettu (se voidaan asettaa myös loopbackille). Vertailu tehdään vakioajassa. Puuttuva tai väärä: 401. |
| Tiedostojärjestelmä | Ei yhtään. IQ-tiedostotyökalut (iq_*) on kytketty pois HTTP-tilassa riippumatta siitä, mitä KSHANA_MCP_IQ_DIR sanoo; kaikki muut työkalut ottavat skenaarionsa suoraan syötteenä ja kieltäytyvät sellaisesta, joka nimeää tiedoston. Mikään työkalun argumentti ei lue eikä kirjoita polkua. |
| Pyynnön koko | --max-body-bytes, oletus 5 MiB (skenaarion yläraja on 4 MiB). Sen ylittävä: 413, olipa pituus ilmoitettu tai runko lohkoitettu. |
| Vasteaika | --request-timeout-secs, oletus 120. Sen ylittävä: 408. Tämä rajaa, kuinka kauan kutsuja odottaa, ei työtä: jo käynnissä olevaa ajoa ei voi pysäyttää, joten se jatkuu vastauksen 408 jälkeen ja valmistuu taustalla. |
| Samanaikaisuus | --max-concurrent, oletus 8. Sen jälkeen pyyntö saa heti vastauksen 503 ja otsakkeen Retry-After; mikään ei jää jonoon. |
| Työpooli | Jokainen työkalukutsu ajetaan estävässä säikeessä poolissa, jonka paikkamäärä on --max-concurrent, eikä koskaan asynkronisilla työläisillä, joten pitkä ajo ei voi estää palvelinta vastaamasta. Paikka vapautuu vasta, kun itse ajo päättyy, ei silloin, kun kutsuja luovuttaa: hylätyt ajot eivät siksi voi kasaantua yli poolin koon, ja kutsu, joka havaitsee poolin täyden, hylätään varattuna. |
| Työbudjetti | Skenaario, joka pyytää paljon enemmän kuin mukana toimitetut esimerkit, hylätään ennen ajoa: yli 1000 Monte Carlo -realisaatiota (runs), yli 1000 solmun parametriruudukko, yli 5000 jäsenajoa (ruudukon solmut kertaa realisaatiot) tai yli 2 miljoonan epookin aikaruudukko. Virhe nimeää kentän, jota on pienennettävä. Sama budjetti on voimassa stdiolla; komentorivillä (kshana) sellaista ei ole. |
| CORS | Otsaketta Access-Control-* ei koskaan lähetetä. Pyyntö, jossa on otsake Origin, hylätään (403), ellei sitä ole nimetty valitsimella --allow-origin <scheme://host[:port]>; * ei kelpaa. |
| Host-otsake | Verrataan loopback-nimiin tai sidontaosoitteeseen sekä jokaiseen annettuun valitsimeen --allowed-host. Välityspalvelimen takana tai alustan URL-osoitteessa anna --allowed-host your.domain. Kaikki muu: 403. |
| Istunnot | Ei yhtään. Jokainen POST saa JSON-vastauksen; istuntotaulua ei ole eikä palvelimen lähettämien tapahtumien (server-sent event) virtaa pidetä auki. |
Palvelin kshana-mcp ei päätä TLS:ää. Kun se on tavoitettavissa yhden koneen ulkopuolelta, aseta sen eteen HTTPS (alustan TLS tai käänteinen välityspalvelin) ja pidä tunnus salassa; bearer-tunnus selväkielisen HTTP:n yli voidaan lukea linjalta.
Paikallinen#
kshana-mcp --http 127.0.0.1:8080
Asiakkaan asetukset (URL-asiakas; lisää otsake vain, kun tunnus on asetettu):
{ "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
Kontin sisällä palvelimen on kuunneltava osoitteessa 0.0.0.0, joten se tarvitsee valitsimen --allow-remote ja tunnuksen. Kun portti julkaistaan muodossa 127.0.0.1:8080:8080, se pysyy omalla koneellasi; poista 127.0.0.1: vain, kun tarkoitus on avata se ulkopuolelle, ja päätä silloin TLS sen edessä. Mallit seuraaville: docker compose, Fly.io ja Cloud Run, ovat kansiossa mcp-http/.
Mallit (ne otetaan käyttöön itse; Kshana ei aja yhtäkään)#
mcp-http/docker-compose.ymlmcp-http/fly.toml: aseta tunnus komennollafly secrets set KSHANA_MCP_HTTP_TOKEN=...mcp-http/cloudrun.service.yaml: hae tunnus Secret Managerista
Jokainen ajaa julkaistun imagen, asettaa valitsimen --allowed-host tiedostossa korvattavaan alustan isäntänimeen ja luottaa HTTPS:n osalta alustaan.
Aseta alustalla CPU- ja muistiraja#
Aikakatkaisu, pooli ja budjetti rajaavat, kuinka paljon työtä päästetään sisään, mutta yksi sisään päästetty kutsu voi silti käyttää ydintä pitkään ja suuri tulos voi käyttää satoja megatavuja. Aseta kontille myös kova raja: mallit pyytävät 2 CPU:ta ja 1 GiB muistia (cpus ja mem_limit Composessa, [[vm]] Flyssä, resources.limits Cloud Runissa). Pidä --max-concurrent enintään CPU-määrän suuruisena.
Mitä se ei ole#
- Ei monivuokraajapalvelu. Jokainen, jolla on tunnus, ajaa simulaatioita ylläpitäjän laitteistolla; käyttäjäkohtaisia kiintiöitä ei ole yllä mainittujen rajojen lisäksi.
- Ohjeellinen, ei tyyppihyväksytty navigointilaite: käyttäjä vastaa edelleen navigoinnista. Simulaattorin tulosteet ovat mallinnettuja tai validoituja lukuja analyysiä varten, kuten kaikkialla muualla tuotteessa Kshana.