Maskinoversettelse, ikke gjennomgått av en morsmålsbruker. Engelsk er referansen.

API-er og integrasjonerRediger på GitHubKilde: mcp/kshana-mcp/README.md

Kshana: merket, et kompasshårkors som markerer det nøyaktige øyeblikket, ved siden av ordmerket kshanaKshana: merket, et kompasshårkors som markerer det nøyaktige øyeblikket, ved siden av ordmerket kshana

kshana-mcp: spør KI-assistenten din, så svarer motoren

kshana-mcp er en MCP-server (Model Context Protocol) for Kshana, den åpne simulatoren for robusthet i PNT (posisjonering, navigasjon og tidssynkronisering). Den lar en KI-assistent (kunstig intelligens) kjøre den virkelige motoren og lese tilbake JSON-svaret (JavaScript Object Notation), i stedet for å gjette på matematikken. Den snakker over stdio (standard inn og ut) med enhver MCP-klient, inkludert Cursor og JetBrains AI Assistant / Junie.

Matematikken som Kshana er validert for, er nettopp der en språkmodell gjetter dårlig: banepropagering med SGP4 (Simplified General Perturbations 4), referansesystemer fra IAU (International Astronomical Union), Allan-deviasjoner, tilgjengelighet for GNSS (Global Navigation Satellite System) og DOP (dilution of precision), beskyttelsesnivåer for ARAIM (advanced receiver autonomous integrity monitoring), fusjon av GNSS og INS (inertial navigation system), og kvantesensormodeller. Still et spørsmål; assistenten kjører et ekte scenario og får kvalitetsmål med opphav og merkelappen VALIDATED eller MODELLED.

Én åpen motor i sentrum, med MCP-serveren som én av flatene ved siden av kommandolinjen, Rust-biblioteket, Python, WebAssembly og Kshana Studio, Docker-bildet og JetBrains-programtillegget; hver flate kjører den samme motoren, og Kshana Pro avhenger av den uten å gafle denÉn åpen motor i sentrum, med MCP-serveren som én av flatene ved siden av kommandolinjen, Rust-biblioteket, Python, WebAssembly og Kshana Studio, Docker-bildet og JetBrains-programtillegget; hver flate kjører den samme motoren, og Kshana Pro avhenger av den uten å gafle den

Verktøy#

Verktøy Hva den gjør
run_scenario Kjør et scenario fra en TOML-definisjon (Tom's Obvious, Minimal Language); returnerer sammendraget + hele resultat-JSON (JavaScript Object Notation: kvalitetsmål, kurver). Valgfri include_chart returnerer diagrammet som SVG (Scalable Vector Graphics).
list_scenario_kinds De 92 innebygde scenariotypene med beskrivelser og påkrevde/valgfrie felt, slik at agenten kan bygge et gyldig scenario.
validate_scenario Kontroll før kjøring: tolk TOML-en og finn typen, uten å kjøre.
list_example_scenarios De medfølgende referansescenarioene som JSON: hver name, dens kind og én setning om hva den viser. Valgfritt filter på kind. Hvert eksempel kjører som det står, så dette er den raskeste veien til en gyldig TOML for en type.
get_example_scenario TOML-teksten til ett medfølgende referansescenario, byte for byte filen under scenarios/.
report_scenario Kjør et scenario og returner rapporten: sammendrag, inndata, hvert tall med enhet og merkelappen VALIDATED eller MODELLED, hendelser, funksjonene som ble utøvd og en reproduserbarhetspost. format er json (standard) eller html (den utskriftsvennlige enkeltfilsiden).
animate_scenario Kjør et scenario og returner tidsserien som en animasjon: svg (standard), html (en selvstendig avspiller) eller frames (høyst 120 i ett svar). Det første innholdselementet er et JSON-sammendrag av det som ble tegnet; filene følger. En type uten samplet tidsakse avvises med begrunnelse.
list_export_formats Hvilke interoperabilitetsformater som gjelder for et scenario (czml, kml, geojson, stk, sigmf), begrunnelsen når ett ikke gjør det, og spesifikasjonen hver skriver følger. Kjører ikke scenarioet.
export_interop Eksporter et scenario som CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemeride .e for STK (Systems Tool Kit), eller SigMF (Signal Metadata Format, for et scenario av typen spectrum med en blokk [iq]). Det første innholdselementet er en JSON-indeks over filene (suffiks, størrelse, koding og SHA-256-sammendraget, den 256-bits Secure Hash Algorithm); filene følger, den binære SigMF-samplefilen som base64.
import_route Skriv en GeoJSON-rute av typen LineString inn i et scenario som flyr et veipunktspor (terrain-nav, terrain-slam, gravity-map, combined-altpnt) og returner den nye TOML-en.
export_sp3 Eksporter konstellasjonen til et scenario av typen orbit som presis efemeride i SP3-c (Standard Product 3, revisjon c).
export_omm Eksporter elementene til et scenario av typen orbit som en katalog i CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message).
export_oem Eksporter tilstandsserien til et scenario av typen orbit som efemeride i CCSDS OEM (Orbit Ephemeris Message) 2,0 — TEME-serien (true equator, mean equinox) for posisjon og hastighet som verktøy for flydynamikk (GMAT, General Mission Analysis Tool; Orekit; STK, Systems Tool Kit) leser; komplementet som bærer hastighet, til det rene posisjonsverktøyet export_sp3.
export_table_csv Kjør et scenario og returner reproduserbarhetstabellen som CSV (kommaseparerte verdier) — den byte-stabile tabellen som CLI-en (kommandolinjegrensesnittet) skriver som <scenario>.table.csv. Bare realtime-frame-eop, lunar-time-budget, lunar-jamming, telecom-timing, leo-navmsg (analysen encode-decode på en meldingsmodell kepler16 eller kepler-rac) og moonlight-service-volume med export_site_lat_deg + export_site_lon_deg satt gir en; alle andre typer returnerer en feil som nevner disse.
sky_geometry Himmelgeometri under et azimutavhengig horisontprofil: fra et sted, et tidspunkt og konstellasjonsforhåndsinnstillinger, tolinjers elementsett (tle, propagert med SGP4 til UTC-tidspunktet epoch) eller satellitter som azimut/elevasjon eller ECEF, satellittene som er synlige og de som er skjult av horisontprofilen, GDOP/PDOP/HDOP/VDOP/TDOP fra DOP-kjernen som er kontrollert mot gnss_lib_py, øst-nord-opp-kofaktoren og kovariansen (én klokke per system eller én felles) og den horisontale feilellipsen; med skyline_preset i stedet for request, en REPRESENTATIVE forhåndsinnstilling med opphav og med utskjæringen for hver grad. MODELLED; bærer den veiledende merknaden; ingen Monte Carlo over MCP. Se docs/SKYLINE.md.
assess_receiver_log Vurder en ekte GNSS-mottakerlogg (global navigation satellite system) for tillit. TOML-en oppgir loggens format (ubx, rinex, android, nmea eller sbf) og gir bytene inline som text eller base64; verktøyet kjører tillitsovervåkerne (fall i bærer-til-støy-tetthet, tap av lås, AGC (automatisk forsterkningsregulering), jamming-indikator, posisjonssprang og, med RINEX pluss kringkastet navigasjon, RAIM (receiver autonomous integrity monitoring) og en klokkestøttet overvåker) og returnerer når og hvorfor posisjonsbestemmelsen sluttet å være pålitelig. Valgfrie seksjoner [[events]] og [compare] skårer oppgitte hendelser og predikerte C/N0-fall mot oppgitte toleranser. En tabell [platform] kind = "vessel" velger de maritime overvåkerne og legger til en tillitsscore på 0-100 per epoke med overvåkerne som trakk fra (veiledende; MODELLED). Loggen sendes inline som text eller base64 (høyst 4 MiB). Diagram og CSV per epoke på forespørsel. Se docs/RECEIVER-TRUST.md.
assess_vessel_stream Skår et avgrenset utdrag av NMEA 0183 (høyst 2 MiB og 20 000 epoker; det må inneholde kalibreringsvinduet) slik kshana receiver-trust live skårer det: tillitstilstand per epoke og score 0-100 med overvåkerne som trakk fra, et sammendrag og siste $PKSHT. Den avgrensede formen av live-kommandoen: ingen socket åpnes og ingenting skrives til en port; porten (gate), --listen og telemetrieksportørene (Prometheus, OTLP, syslog) finnes bare på kommandolinjen. Kun veiledende; MODELLED. Se docs/MARITIME-TRUST.md.
assess_vessel_log Et fartøys logg i NMEA 0183 (høyst 4 MiB) som en batchkjøring, med økt-TOML-en som oppgir fartøyets grenser: skåremodellen og hver epokes score 0-100 med fradragene (svaret beholder antall per tilstand og de første 200 forringede eller upålitelige epokene). Kun veiledende; MODELLED.
jammertest_import Les den publiserte Jammertest-testkatalogen og sendeplanen (NPRA/jammertest-plan, MIT) som planlagt referanse (kshana jammertest import): ett testområdes tidsluker blir mottakertillit-hendelser med katalog-id og år i hver etikett. Planlagte tidsluker, ikke registrerte sendetider; ingen kontaktfelt i planen leses. MODELLED. Se docs/JAMMERTEST.md.
jammertest_score Skår en mottakerlogg mot den planen (kshana jammertest score): per test deteksjonsforsinkelse, uteblitte alarmer og tid til gjenoppretting, og falske alarmer utenfor alle tidsluker. Tekstlogger som log, binære (ubx, sbf) som log_base64. En signert pakke trenger en nøkkel: kommandolinjen. Kun veiledende; MODELLED.
create_evidence_pack En signert bevispakke for et vindu av et fartøys logg (kshana receiver-trust evidence): råloggbytene for vinduet, konfigurasjon, resultater og begrunnelser per epoke, en sammendragsside og et manifest med hver SHA-256 og en hashkjede, signert med Ed25519. Signeringsfrøet returneres eller logges aldri; uten et brukes en engangsnøkkel, så pakken beviser integritet, ikke identitet. En teknisk oppføring, ikke en juridisk vurdering. Se docs/EVIDENCE-PACKS.md.
attach_evidence_timestamp Bind et tidsstempeltoken etter RFC 3161 (base64 av bytene i .tsr) til en pakke, i minnet (kshana evidence attach-timestamp); pakken med tokenet må fortsatt kunne verifiseres. Tidsstempelmyndighetens signatur kontrolleres ikke: bruk openssl ts -verify.
verify_evidence_pack Verifiser en pakke (kshana evidence verify): hver hash, kjeden, signaturen, og med signerens offentlige nøkkel og hele loggen, hvem som signerte den og at utsnittet kom fra den loggen. Nevner hver feil og fil. verdict er verified (signeren er festet), intact-signer-not-pinned (alt stemmer, men ingen offentlig nøkkel ble oppgitt, så signeren er ikke fastslått) eller failed; require_timestamp feiler en pakke uten tidsstempeltoken.
generate_training_nmea Syntetisk bro-NMEA 0183 for mannskapstrening fra en TOML av typen nmea-scenario (jamming, drag-off av posisjon, tidsspoofing, replay-forsinkelse) med instruktørloggen (kshana-nmea-training/1); deterministisk per seed. Bare tekst: ingenting syntetiseres på RF eller IQ og ingenting sendes; aldri for et fartøys levende navigasjonssystemer. Svaret inneholder de første 2000 linjene.
build_interference_map Et GNSS-interferenskart fra ADS-B- eller AIS-posisjonsrapporter som CSV-tekst (høyst 4 MiB): én GeoJSON-fil kshana-interference-map/v1 per UTC-dag, bare aggregert (ingen identifikatorer, celler under 5 distinkte fly eller fartøy holdes tilbake), med datasettlisensen innebygd. En forringet celle peker ikke ut interferens som årsak; ikke en prognose. MODELLED. Se docs/INTERFERENCE-MAP.md.
export_test_bench Et scenarios kjøretøybevegelse og hendelser for en GNSS-simulator i laboratoriet (kshana bench-export): bevegelses-CSV og JSON, NMEA, veipunkter og hendelser som tekst, ingenting skrevet til disk. Typene gnss-ins, jamming, gnss-sim. Intet signal: ingenting som eksporteres er, modellerer eller styrer et radiofrekvens- eller basebåndssignal; simulatoren og operatøren leverer signalene. Se docs/TEST-BENCH.md.
create_round_trip_pack Den signerte tur-retur-pakken fra laboratoriet (kshana evidence round-trip): scenarioet, dokumentet kshana.test-conditions/1 fra laboratoriet, mottakerloggen og dens skår mot de oppgitte hendelsene, koblet med hash. Avviser betingelser og skårehendelser som er uenige. Intet signal; en teknisk oppføring, ikke en sertifisering.
iq_sweep Spill av ett IQ-opptak i arbeidskatalogen på tvers av flere utforminger av sporingssløyfer (kshana iq sweep): per utforming og PRN stabil fase- og kodejitter, låsandeler og gjennomsnittlig C/N0. Høyst 256 kanaler (utforming, PRN) per kall; spennet må passe innenfor sampelbudsjettet.
iq_monitor Kjør deteksjonsovervåkerne for interferens og spoofing over et IQ-opptak i arbeidskatalogen (kshana iq monitor): bredbåndseffekt- og spektralovervåkere og C/N0- og signalkvalitetsovervåkere per satellitt mot en lært grunnlinje. Serienavn og -lengder og opptil 200 hendelser i svaret; hele rapporten på forespørsel som filer. En hendelse sier at en målt størrelse forlot grunnlinjen, ikke hvorfor. MODELLED.
iq_labfit Tilpass tapet-av-lås-modellen for sporingssløyfen til laboratoriekjøringer (kshana iq labfit) fra et scenario av typen iq-labfit hvis logger er inline (text eller base64; en path avvises). Leser og skriver ingen fil. MODELLED.
iq_test_conditions Validerer en kshana.test-conditions/1-fil gitt som tekst og returnerer de løste betingelsene med hasjen deres. Bare innebygd.
compliance_report Kartleggingen mot offentlige rammeverk, fylt ut fra resultatdokumenter gitt som tekst (kshana compliance-report): hvilke rader i seks rammeverk og standarder for robusthet (US DHS Resilient PNT framework v2.0, IMO skip, EASA luftfart, NIS2 artikkel 21, EN 16803, NIST IR 8323r1) kjøringene gir belegg for, hvilke de ikke gir belegg for, og gapet for hver rad. Tar runs av {label, result, scenario?} (høyst 64, 4 MiB til sammen). En status sier at kjøringene gir belegg for radens funksjoner; den er ikke en konklusjon om at et rammeverk er oppfylt, og ikke en vurdering eller godkjenning av noe produkt. statement returneres med hver rapport; vis den ordrett. MODELLED. Se docs/compliance/.
compliance_mapping De statiske kartleggingstabellene (eller, med sources, kildedokumentene de siterer, med versjoner og URL-er) som Markdown, med samme erklæring først. Trenger ingen kjøringer.
trust_telemetry En tillitsstrøm (JSON-linjer) eller et receiver-trust-resultat gjengitt som Prometheus-tekst, CEF- eller LEEF-syslog-linjer, en OTLP-JSON-nyttelast eller Home Assistant MQTT-oppdagelses- og tilstandslinjer, med kodererne i kshana trust-telemetry. Tekst i svaret: ingenting sendes eller serveres, og ingen klokke leses. Kun veiledende.
fit_imu_log Akselerometer- og gyroparametere for scenarioene hybrid og fusion, tilpasset fra en stasjonær IMU-logg (CSV eller EuRoC) med Allan-deviasjon, med en ferdig tabell [accel_classical] som kan limes inn og loggens SHA-256 (kshana imu-fit). Tekst inn, JSON ut; MODELLED.
list_standards_packs Standardpakkene (kshana standards-pack list): scorede scenariosett for testprofilene i DHS Resilient PNT framework (nivå 1 til 4), IMO MSC.1/Circ.1575 og ICAO Doc 9849 tillegg F.
run_standards_pack Én pakkekjøring mot terskler som er oppgitt før kjøringen (kshana standards-pack run): hver test MET, NOT MET eller NEEDS INPUT, med målte og forventede verdier; gi rapporten til compliance_report for å se radene. MODELLED; vurderer ikke noe produkt.
lunanet_afs_check LunaNet Augmented Forward Signal kontrollert mot LNIS V5 AD1 bind A (LSIS-AFS V1.0, 29 januar 2025): spec (implementasjonen mot dokumentets trykte kodetabeller og gjennomgåtte eksempler), symbols (en symbolstrøm: synkroniseringsmønster, SB1, FID, TOI-kontinuitet) eller generate (en teststrøm). LDPC og CRC-24Q for delrammene 2 til 4 verifiseres ikke; ingen signaler skrives.
score_benchmark En innsending til kshana-bench scoret mot en referansefil, begge som JSON-tekst (kshana bench score, bench/SPEC.md): resultatfilen med spesifikasjonsversjon, deling, inndatahasjer og oppgavens målinger. MODELLED; beskriver en logg eller et korpus, aldri et produkt.
render_leaderboard Resultatfiler fra kshana-bench gjengitt som den statiske ledertavlesiden (HTML-tekst), hver validert først.
trust_telemetry En tillitsstrøm (JSON-linjer) eller et receiver-trust-resultat gjengitt som Prometheus-tekst, CEF- eller LEEF-syslog-linjer eller en OTLP-JSON-nyttelast, med kodererne i kshana trust-telemetry. Tekst i svaret: ingenting sendes eller serveres, og ingen klokke leses. Kun veiledende.
route_exposure Andelen av en ruteslengde i degraderte, ikke-degraderte, ikke-vurderte og ikke-observerte celler i ett eller flere interferenskart, eventuelt innenfor et datoområde. Uobserverte celler er ikke belegg for en fri rute.
iq_signals Oppsettet for GNSS IQ-laget: signalnavnene IQ-verktøyene godtar, om IQ-filverktøyene er på, arbeidsmappen og samplebudsjettet per kall. Kall det først.
iq_info Beskriv én IQ-opptak (in-phase og quadrature) i arbeidsmappen uten å behandle den: format, samplingsrate, sentralfrekvens, sampler, varighet, datafiler og størrelser (kshana iq info).
iq_scene Generer en GNSS IQ-scene med flere satellitter i arbeidsmappen (kshana iq scene): oppgitte Doppler-/C/N0-profiler, eller sann broadcast-efemeridegeometri fra en RINEX-navigasjonsfil, med en valgfri forplantningskanal på signalnivå. Svarer med filene som er skrevet og antall byte i dem, og referansens første epoke per satellitt.
iq_acquire FFT-akkvisisjon (fast Fourier transform) av én eller flere PRN-er (pseudo-random noise-koder) over et opptak (kshana iq acquire), eventuelt bak frontend-trinn: per PRN, akkvirert eller ikke, Doppler, kodefase, toppstatistikk og terskel; surface_out (én PRN) beholder hele Doppler × kodefase-korrelasjonsflaten med finforfininger av Doppler.
iq_track Akkvirer, og spor deretter med DLL/PLL/FLL-banken (delay-, phase- og frequency-locked loop) (kshana iq track), med løkkene fra en kshana.loop-design/1-TOML-fil i arbeidsmappen (design) eller den innebygde utformingen, og valgfri reakkvisisjon (reacquire): per kanal, epoker, endelig Doppler, endelig og gjennomsnittlig C/N0, andeler for fase- og kodelås, låst på slutten, den endelige låsetilstanden, falske låsinger og reakkvisisjoner, pluss utformingens navn og hasj. Sporingen strømmer i begrenset minne; utdata per epoke går bare til filer (epochs_out: E/P/L, diskriminatorer, løkketilstander, C/N0, låsetilstand som .csv/.jsonl/.bin; events_out).
iq_frontend Bruk mottakerens frontend og DSP for interferensdemping (digital signal processing: båndpass, notch, blanking, utskjæring, AGC, kvantiserer) på et opptak og skriv et nytt (kshana iq frontend).
iq_campaign Kjør en laboratorie-avspillingskampanje (kshana iq campaign): opptak, hvert med en testbetingelsesfil som oppgir laboratoriets kjente referanse, × frontend-kjeder × løkkeutforminger. Hver celle scores for tid til tap av lås, reakkvisisjonstid, C/N0-degradering mot den oppgitte J/S (ved siden av en analytisk referanse merket MODELLED), frekvens av falsk lås, PLL/DLL-jitter og tilgjengelighet. Inkrementell og kan gjenopptas: hvert kall kjører de ventende cellene som får plass i samplebudsjettet (eller max_cells).
iq_campaign_status Fremdriften i en kampanjes utdatamappe: celler ferdige og ventende, og sammendraget når den er ferdig. Leser bare filer.

Hvert verktøy er en tynn, tro innpakning rundt en offentlig funksjon i biblioteket kshana — ingen ny simuleringslogikk ligger her, så en agent kjører nøyaktig den validerte motoren.

GNSS IQ-verktøyene: filer inn, kompakt JSON ut#

IQ-opptak går opp i gigabyte, så verktøyene iq_* sender aldri sampler gjennom protokollen. De følger én kontrakt:

  • En arbeidsmappe. Serveren leser og skriver IQ-filer bare inne i mappen som er navngitt av KSHANA_MCP_IQ_DIR. Hvert stiargument er relativt til den (en absolutt sti må løses opp innenfor den); inndata løses opp gjennom symlenker før kontrollen, mappen til en utdatafil må allerede finnes inne i den, og en eksisterende utdatafil erstattes bare med overwrite: true. Når den ikke er satt, er IQ-filverktøyene av og sier hvordan de slås på; alle andre verktøy påvirkes ikke.
  • Et samplebudsjett. Ett kall genererer eller behandler høyst KSHANA_MCP_IQ_MAX_SAMPLES komplekse sampler (standard 50 000 000). I byte er det 400 MB som cf32_le (8 byte per komplekse sample), 200 MB som ci16_le (4 byte) og 100 MB som ci8 (2 byte); en scene skrives som cf32_le med mindre format sier noe annet. Kontrollen kjører før noe arbeid, og avslaget nevner varigheten eller max_seconds som passer.
  • Kompakte svar. Hvert verktøy svarer med ett JSON-sammendrag: akkvisisjonstopper, C/N0, låsetilstand og hver fil som er skrevet, med sti og antall byte. Tabeller per epoke går til filene json_out / csv_out du navngir.
  • Ukjente argumenter avvises, ikke ignoreres, så et feilstavet valg er en feil.

Hvert verktøy kjører samme kodesti som kshana iq på kommandolinjen, i prosessen. Laget er bare programvare: det skriver filer for programvaremottakere og styrer ingen radiomaskinvare. IQ-laget legger ikke til noen syntese av interferens eller spoofer, og ingenting sendes noen gang. (Scenariotypen spectrum kan skrive analytiske jammer-IQ-øyeblikksbilder til en fil.)

{
  "mcpServers": {
    "kshana": {
      "command": "/Users/you/.cargo/bin/kshana-mcp",
      "env": { "KSHANA_MCP_IQ_DIR": "/Users/you/iq" }
    }
  }
}

Med Docker-avbildningen monterer du mappen og peker variabelen på den: docker run --rm -i -v "$PWD/iq:/iq" -e KSHANA_MCP_IQ_DIR=/iq ghcr.io/ashfordeou/kshana-mcp.

Alle typer kan nås#

run_scenario sender videre etter scenarioets kind, så alle typer som list_scenario_kinds nevner, kjører gjennom det. Det omfatter de nyere familiene, hver med medfølgende eksempler en agent kan hente:

Funksjon Typer Et eksempel å starte fra
Spektrum og waterfall spectrum l-band-waterfall-jamming
Solsystemet solar-system solar-system-tour
Konstellasjoner rundt et hvilket som helst legeme constellation-design, body-pnt lunar-relay-constellation, europa-surface-pnt
Kampanjer: lenkede faser, sveip, Monte Carlo (tilfeldige ensembler med seed), sammensetning campaign campaign-sweep-jammer-power
Navigasjon i lav jordbane (LEO): signalutforming leo-signal leo-band-trade
LEO-navigasjon: linkbudsjett for overflyvning leo-pass leo-pass-iridium
LEO-navigasjon: navigasjonsmelding leo-navmsg leo-navmsg-encode-decode
LEO-navigasjon: fusjonert posisjonering og tidssynkronisering leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain leo-doppler-positioning, leo-pnt-end-to-end

list_example_scenarios med en kind nevner alle medfølgende eksempler av den typen. Animasjoner, rapporter og interoperabilitetseksporter er ikke typer: de er visninger av en kjøring, og animate_scenario, report_scenario og export_interop returnerer dem for ethvert scenario de gjelder for.

Ikke servert: studiesuiter (kshana --study <suite.toml>), fordi en suite navngir søsterscenariofiler på disken og scenarioverktøyene ikke leser noen fil. Kjør hvert medlem med run_scenario. (IQ-verktøyene leser og skriver filer, men bare innenfor arbeidsmappen sin.)

Installer MCP-serveren#

Veiledende, ikke typegodkjent navigasjonsutstyr: operatøren er fortsatt ansvarlig for navigasjonen. Serveren kjører på din datamaskin; ingenting sendes til Ashforde OÜ.

En passasje som nevner tredjeparts AI-klienter er utelatt her; den står i mcp/kshana-mcp/README.md på GitHub.

En passasje som nevner tredjeparts AI-klienter er utelatt her; den står i mcp/kshana-mcp/README.md på GitHub.

En passasje som nevner tredjeparts AI-klienter er utelatt her; den står i mcp/kshana-mcp/README.md på GitHub.

Kanal Kommando eller knapp Krever Festet form
Cursor (ett klikk) npx (Node) · Docker Node, eller Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code (ett klikk) npx (Node) · Docker · Insiders (npx) Node, eller Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
npx npx -y kshana-mcp@0.40.0 Node 18+ kshana-mcp@0.40.0
uvx / pipx uvx kshana-mcp==0.40.0 · pipx run kshana-mcp==0.40.0 Python 3,9+ med uv eller pipx kshana-mcp==0.40.0
Docker docker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.40.0 Docker ghcr.io/ashfordeou/kshana-mcp:0.40.0
Homebrew brew install ashfordeOU/tap/kshana-mcp brew formel for v0.40.0
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket deretter scoop install kshana-mcp Scoop (Windows) manifest for v0.40.0
winget winget install AshfordeOU.KshanaMcp winget (Windows) --version 0.40.0
cargo cargo install kshana-mcp --version 0.40.0 Rust 1,88+ kshana-mcp 0.40.0
Ferdigbygd binærfil utgivelsessiden: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], kontrollert med SHA256SUMS og gh attestation verify ingen v0.40.0
MCP-register io.github.ashfordeOU/kshana-mcp (finnes av klienter som støtter registeret) en klient som støtter registeret 0.40.0
Fjernbruk (streamable HTTP) kshana-mcp --http 127.0.0.1:8080, selvdrevet: se https://github.com/ashfordeOU/kshana/blob/main/docs/deploy/mcp-http.md din egen vert v0.40.0

Fra en utsjekk eller git (utvikling):

cd mcp/kshana-mcp && cargo install --path .
cargo install --git https://github.com/AshfordeOU/kshana kshana-mcp

HTTP-modus (selvdrevet)#

kshana-mcp --http 127.0.0.1:8080 serverer de samme verktøyene over strømmende HTTP på /mcp. Den binder seg bare til loopback; en adresse som ikke er loopback, trenger --allow-remote og et bearer-token i KSHANA_MCP_HTTP_TOKEN; IQ-filverktøyene er av; forespørselsstørrelse, tid og samtidighet er begrenset; ingen CORS-header sendes. Kshana driver ikke noe endepunkt: du drifter det selv. Se docs/deploy/mcp-http.md.

cargo install legger kshana-mcp i din PATH (vanligvis ~/.cargo/bin/kshana-mcp). Serveren snakker JSON-RPC (JSON remote procedure call) over stdio; logger går til stderr. Bygging fra kildekode trenger en Rust-verktøykjede ≥ 1,88 (den patchede rmcp 2.x SDK-en trenger det, og det gjør biblioteket kshana også); Docker-avbildningen trenger ingen.

Registrer den hos en klient#

Så å si alle MCP-klienter bruker den samme konfigurasjonsblokken mcpServers — registrer binærfilen kshana-mcp med absolutt sti:

{
  "mcpServers": {
    "kshana": {
      "command": "/Users/you/.cargo/bin/kshana-mcp",
      "args": [],
      "env": {}
    }
  }
}

Eller, med Docker-avbildningen i stedet for en lokal binærfil (ingen PATH nødvendig):

{
  "mcpServers": {
    "kshana": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "ghcr.io/ashfordeou/kshana-mcp"]
    }
  }
}

Hvor den blokken ligger, avhenger av klienten:

  • Cursor — ~/.cursor/mcp.json (globalt) eller .cursor/mcp.json (per prosjekt).
  • JetBrains AI Assistant / Junie — Settings → Tools → AI Assistant → Model Context Protocol → Add → As JSON, lim inn blokken, og start deretter IDE-en (integrated development environment) helt på nytt.
  • Skrivebordsassistenter — de fleste bruker en …_config.json med samme mcpServers-form; sjekk klientens dokumentasjon for filplasseringen.
  • CLI-agenter — mange godtar den samme JSON-en gjennom en mcp add / mcp.json-mekanisme.

Bruk alltid en absolutt sti til binærfilen. Sett RUST_LOG=debug i env for å feilsøke (diagnostikk går til stderr; stdout er reservert for JSON-RPC-protokollen).

Prøv det#

Når den er registrert, kan du spørre assistenten din om ting som:

  • «List scenariotypene i Kshana.» → list_scenario_kinds
  • «Vis meg et spectrum-eksempel i Kshana og kjør det.» → list_example_scenarios, get_example_scenario, run_scenario
  • «Kjør scenarioet for klokke-holdover i Kshana med en terskel på 20 ns og et GNSS-utfall på 2 timer; hva er holdover for kvante mot klassisk?» → run_scenario
  • «Eksporter den GPS-konstellasjonen (Global Positioning System) som SP3.» → export_sp3
  • «Gi meg tabellen realtime-frame-eop som CSV.» → export_table_csv
  • «Legg den Iridium-overflyvningen på en Cesium-globus.» → list_export_formats, export_interop
  • «Animer jamming-kampanjen.» → animate_scenario
  • «Gi meg rapporten for den kjøringen, med reproduserbarhetsposten.» → report_scenario
  • «Lag en GPS L1-scene på ett sekund med PRN-ene 3 og 17, og akkvirer og spor den deretter.» → iq_signals, iq_scene, iq_acquire, iq_track

Designnotat — hvorfor en egen crate#

Serveren er en frittstående crate som er utelatt fra workspace, med sin egen Cargo.lock, slik at det offisielle Rust MCP-SDK-et (software development kit) rmcp og den asynkrone kjøretiden aldri kommer inn i avhengighetsgrafen til den publiserte crate-en kshana: en bruker av biblioteket eller Python kompilerer ikke en server vedkommende ikke kjører. (Den ble først skilt ut fordi rmcp er edition 2024 og trenger rustc ≥ 1,85, mens hovedcrate-en den gang lovte 1,75. Biblioteket og denne serveren oppgir nå begge 1,88, gulvet for den sikkerhetspatchede rmcp 2.x og for de oppgraderte RustCrypto-crate-ene.) Kontinuerlig integrasjon (CI) setter port for denne crate-en på egen hånd — tester og cargo deny mot sin egen låsfil. Lisenstreet til rmcp er rent (Apache-2.0/MIT/BSD), så, i motsetning til krysskontrollcrate-en xval/anise-frames den ellers speiler, handler splittingen ikke om lisensiering.

Lisens: AGPL-3.0-only, GNU Affero General Public License versjon 3 alene (eller en kommersiell lisens fra Ashforde OÜ; se LICENSING.md i depotet).