Maskinoversættelse, ikke gennemgået af en modersmålstalende. Engelsk er referencen.

API'er og integrationerRedigér på GitHubKilde: docs/deploy/mcp-http.md

Kør kshana-mcp over HTTP (selvhostet)

Et afsnit, der nævner AI-klienter fra tredjeparter, er udeladt her; det findes i docs/deploy/mcp-http.md på GitHub.

Kshana hoster ikke et endpoint. Der er ingen fælles kshana-server, som en klient kan pege på. Du kører den på din egen maskine, i din egen container eller i dit eget cloudprojekt, og du ejer adgangskontrollen og omkostningerne. Serveren i version 0.40.0 er den, der ligger i dette repository: dens tal bærer deres mærkater VALIDATED eller MODELLED på præcis samme måde som over stdio.

De sikre standardindstillinger#

Kontrol Adfærd
Bind-adresse Kun loopback (127.0.0.1, ::1). En bar port (--http 8080) betyder 127.0.0.1:8080.
Non-loopback Kræver --allow-remote og et bearer-token i miljøvariablen KSHANA_MCP_HTTP_TOKEN (16 tegn eller flere). Uden begge nægter serveren at starte. Med begge udskriver den en advarsel om, at den lytter ud over denne maskine.
Autentificering Authorization: Bearer <token> på hver forespørgsel, når et token er sat (det kan også sættes på loopback). Sammenlignes i konstant tid. Manglende eller forkert: 401.
Filsystem Ingen. IQ-filværktøjerne (iq_*) er slået fra i HTTP-tilstand, uanset hvad KSHANA_MCP_IQ_DIR siger; ethvert andet værktøj tager sit scenarie inline og afviser et, der nævner en fil. Intet værktøjsargument læser eller skriver en sti.
Body-størrelse --max-body-bytes, standard 5 MiB (scenariegrænsen er 4 MiB). Over den: 413, uanset om længden er angivet, eller body'en sendes i bidder.
Svartid --request-timeout-secs, standard 120. Over den: 408. Det afgrænser, hvor længe en kalder venter, ikke arbejdet: en kørsel, der allerede er i gang, kan ikke stoppes, så den fortsætter efter 408 og afsluttes i baggrunden.
Samtidighed --max-concurrent, standard 8. Ud over den får en forespørgsel straks 503 med Retry-After; ingen står i kø.
Arbejdspulje Ethvert værktøjskald kører på en blokerende tråd i en pulje med --max-concurrent pladser, aldrig på de asynkrone arbejdere, så en lang kørsel ikke kan hindre serveren i at svare. En plads frigives først, når selve kørslen slutter, ikke når kalderen giver op: forladte kørsler kan derfor ikke hobe sig op ud over puljens størrelse, og et kald, der finder puljen fuld, afvises som optaget.
Arbejdsbudget Et scenarie, der beder om langt mere end de medfølgende eksempler, afvises, før det kører: mere end 1000 Monte Carlo-realisationer (runs), et parametergitter med mere end 1000 knudepunkter, mere end 5000 medlemskørsler (gitterknudepunkter gange realisationer) eller et tidsgitter med mere end 2 millioner epoker. Fejlen angiver det felt, der skal sænkes. Det samme budget gælder over stdio; kommandolinjen kshana har intet.
CORS Der sendes aldrig en Access-Control-*-header. En forespørgsel med en Origin-header afvises (403), medmindre den er angivet med --allow-origin <scheme://host[:port]>; * accepteres ikke.
Host-header Kontrolleres mod loopback-navne eller bind-adressen plus hver --allowed-host. Bag en proxy eller på en platforms URL skal du angive --allowed-host your.domain. Alt andet: 403.
Sessioner Ingen. Hver POST får et JSON-svar; der føres ingen sessionstabel, og ingen server-sent event-strøm holdes åben.

TLS afsluttes ikke af kshana-mcp. Når den kan nås ud over én maskine, skal du sætte HTTPS foran den (din platforms TLS eller en reverse proxy) og holde tokenet hemmeligt; et bearer-token over almindelig HTTP kan aflæses på linjen.

Lokal#

kshana-mcp --http 127.0.0.1:8080

Klientkonfiguration (en URL-klient; tilføj kun headeren, når et token er sat):

{ "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

Inde i containeren skal serveren lytte på 0.0.0.0, så den kræver --allow-remote og tokenet. Hvis du publicerer porten som 127.0.0.1:8080:8080, bliver den på din maskine; fjern 127.0.0.1: kun, når du vil eksponere den, og afslut så TLS foran den. docker compose- samt Fly.io- og Cloud Run-skabeloner findes i mcp-http/.

Skabeloner (du udruller dem selv; Kshana kører ingen)#

Hver af dem kører det publicerede image, sætter --allowed-host til det værtsnavn på platformen, som du indsætter i filen, og bruger platformen til HTTPS.

Sæt en CPU- og hukommelsesgrænse på platformen#

Timeout, pulje og budget afgrænser, hvor meget arbejde der lukkes ind, men ét indlukket kald kan stadig bruge en kerne i lang tid, og et stort resultat kan bruge hundredvis af megabyte. Sæt også en hård grænse på containeren: skabelonerne beder om 2 CPU'er og 1 GiB (cpus og mem_limit i Compose, [[vm]] i Fly, resources.limits i Cloud Run). Hold --max-concurrent på eller under antallet af CPU'er.

Hvad den ikke er#

  • Ikke en tjeneste med flere lejere. Enhver, der har tokenet, kører simuleringer på din hardware; der er ingen kvoter pr. bruger ud over grænserne ovenfor.
  • Vejledende, ikke typegodkendt navigationsudstyr: operatøren er fortsat ansvarlig for navigationen. Simulatorens output er modellerede eller validerede tal til analyse, som overalt ellers i Kshana.