Konekäännös, jota äidinkielinen puhuja ei ole tarkistanut. Viitteenä on englanninkielinen versio.

API:t ja integraatiotMuokkaa GitHubissaLähde: mcp/kshana-mcp/README.md

Kshana: tunnus, kompassin ristikko, joka merkitsee täsmällisen hetken, sanamerkin kshana vieressäKshana: tunnus, kompassin ristikko, joka merkitsee täsmällisen hetken, sanamerkin kshana vieressä

kshana-mcp: kysy tekoälyavustajaltasi, ja moottori vastaa

kshana-mcp on Model Context Protocol (MCP) -palvelin tuotteelle Kshana, avoimen lähdekoodin simulaattorille PNT-kestävyyden (paikannus, navigointi ja ajanmääritys) tutkimiseen. Sen avulla tekoälyavustaja (AI, artificial intelligence) voi ajaa oikean moottorin ja lukea sen JSON-tulosteen (JavaScript Object Notation) matematiikan arvaamisen sijaan. Se puhuu stdion (standard input and output, vakiosyöte ja -tuloste) kautta mille tahansa MCP-yhteensopivalle asiakkaalle, mukaan lukien Cursor ja JetBrains AI Assistant / Junie.

Matematiikka, jolle Kshana on validoitu, on juuri se, missä kielimalli arvaa huonosti: SGP4 (Simplified General Perturbations 4) -radanlaskenta, IAU:n (International Astronomical Union) koordinaatistot, Allanin poikkeamat, GNSS:n (maailmanlaajuinen satelliittinavigointijärjestelmä) saatavuus ja DOP (tarkkuuden heikkenemiskerroin), ARAIM:n (advanced receiver autonomous integrity monitoring) suojaustasot, GNSS:n ja INS:n (inertianavigointijärjestelmä) fuusio sekä kvanttisensorimallit. Kysy; avustaja ajaa oikean skenaarion ja saa laatumittarit lähteineen ja merkintöineen VALIDATED tai MODELLED.

Yksi avoin moottori keskellä, ja MCP-palvelin yhtenä sen pinnoista komentorivin, Rust-kirjaston, Pythonin, WebAssemblyn ja Kshana Studion, Docker-imagen ja JetBrains-liitännäisen rinnalla; jokainen pinta ajaa samaa moottoria, ja Kshana Pro on riippuvainen siitä haarauttamatta sitäYksi avoin moottori keskellä, ja MCP-palvelin yhtenä sen pinnoista komentorivin, Rust-kirjaston, Pythonin, WebAssemblyn ja Kshana Studion, Docker-imagen ja JetBrains-liitännäisen rinnalla; jokainen pinta ajaa samaa moottoria, ja Kshana Pro on riippuvainen siitä haarauttamatta sitä

Työkalut#

Työkalu Mitä se tekee
run_scenario Aja skenaario TOML-määrityksestä (Tom's Obvious, Minimal Language); palauttaa yhteenvedon sekä koko tulos-JSONin (JavaScript Object Notation: laatumittarit, käyrät). Valinnainen include_chart palauttaa kaavion SVG-muodossa (Scalable Vector Graphics).
list_scenario_kinds 92 sisäänrakennettua skenaariolajia kuvauksineen sekä pakollisine ja valinnaisine kenttineen, jotta agentti voi muodostaa kelvollisen skenaarion.
validate_scenario Ennakkotarkistus: jäsentää TOML:n ja tunnistaa sen lajin ajamatta sitä.
list_example_scenarios Mukana toimitetut vertailuskenaariot JSONina: kunkin nimi (name), laji (kind) ja yksi lause siitä, mitä se näyttää. Valinnainen suodatin kind. Jokainen esimerkki ajetaan sellaisenaan, joten tämä on nopein tie kelvolliseen TOML:ään tiettyä lajia varten.
get_example_scenario Yhden mukana toimitetun vertailuskenaarion TOML-teksti, tavu tavulta kansion scenarios/ alla oleva tiedosto.
report_scenario Aja skenaario ja palauta sen raportti: tiivistelmä, syötteet, jokainen luku yksikköineen ja merkintöineen VALIDATED tai MODELLED, tapahtumat, käytetyt ominaisuudet ja toistettavuustietue. Kenttä format on json (oletus) tai html (tulostettava yhden tiedoston sivu).
animate_scenario Aja skenaario ja palauta sen aikasarja animaationa: svg (oletus), html (itsenäinen soitin) tai frames (enintään 120 yhdessä vastauksessa). Ensimmäinen sisältökohde on JSON-yhteenveto piirretystä; tiedostot seuraavat. Laji, jolla ei ole näytteistettyä aika-akselia, hylätään perusteluineen.
list_export_formats Mitkä yhteentoimivuusmuodot soveltuvat skenaarioon (czml, kml, geojson, stk, sigmf), syy, kun jokin ei sovellu, ja kunkin kirjoittimen noudattama määrittely. Ei aja skenaariota.
export_interop Vie skenaario muodossa CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, STK:n (Systems Tool Kit) efemeridi tiedostopäätteellä .e tai SigMF (Signal Metadata Format, skenaariolle spectrum, jossa on lohko [iq]). Ensimmäinen sisältökohde on tiedostojen JSON-hakemisto (pääte, koko, koodaus ja SHA-256-tiiviste, 256-bittinen Secure Hash Algorithm); tiedostot seuraavat, binäärinen SigMF-näytetiedosto base64-koodattuna.
import_route Kirjoita GeoJSON-reitti (LineString) skenaarioon, joka lentää reittipistepolun (terrain-nav, terrain-slam, gravity-map, combined-altpnt), ja palauta uusi TOML.
export_sp3 Vie lajin orbit skenaarion satelliittitähdistö SP3-c-muodossa (Standard Product 3, revisio c) tarkkana efemeridinä.
export_omm Vie lajin orbit skenaarion elementit CCSDS-katalogina (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message).
export_oem Vie lajin orbit skenaarion tilasarja efemeridinä muodossa CCSDS OEM (Orbit Ephemeris Message) 2,0 — TEME-koordinaatiston (true equator, mean equinox) paikka- ja nopeussarja, jonka lentodynamiikkatyökalut (GMAT, General Mission Analysis Tool; Orekit; STK, Systems Tool Kit) lukevat; pelkkää paikkaa sisältävän työkalun export_sp3 nopeuden sisältävä täydennys.
export_table_csv Aja skenaario ja palauta sen toistettavuustaulukko CSV:nä (comma-separated values) — tavutasolla vakaa taulukko, jonka CLI (command-line interface) kirjoittaa nimellä <scenario>.table.csv. Vain lajit realtime-frame-eop, lunar-time-budget, lunar-jamming, telecom-timing, leo-navmsg (sen analyysi encode-decode viestimallilla kepler16 tai kepler-rac) ja moonlight-service-volume asetuksilla export_site_lat_deg + export_site_lon_deg tuottavat sellaisen; mikä tahansa muu laji palauttaa virheen, joka nimeää nämä.
sky_geometry Taivasgeometria atsimuutista riippuvan horisonttiprofiilin alla: paikasta, ajasta ja tähdistöesiasetuksista, kaksirivisistä elementtijoukoista (tle, SGP4:llä propagoituna UTC-hetkeen epoch) tai satelliiteista atsimuutti/korkeuskulma- tai ECEF-muodossa saadaan näkyvät ja horisonttiprofiilin peittämät satelliitit, GDOP/PDOP/HDOP/VDOP/TDOP gnss_lib_py:llä tarkistetusta DOP-ytimestä, itä-pohjoinen-ylös -kofaktori ja kovarianssi (yksi kello järjestelmää kohden tai yksi yhteinen) sekä vaakavirheellipsi; kun annetaan skyline_preset kentän request sijaan, saadaan esiasetus (REPRESENTATIVE) lähteineen ja katkoineen asteen välein. MODELLED; sisältää ohjeellisuushuomautuksen; ei Monte Carloa MCP:n yli. Katso docs/SKYLINE.md.
assess_receiver_log Arvioi todellisen GNSS-vastaanottimen (maailmanlaajuinen satelliittinavigointijärjestelmä) lokin luotettavuus. TOML nimeää lokin muodon (kenttä format: ubx, rinex, android, nmea tai sbf) ja antaa sen tavut suoraan syötteenä muodossa text tai base64; työkalu ajaa luottamusmonitorit (kantoaalto-kohinatiheyden lasku, lukituksen menetys, AGC (automaattinen vahvistuksen säätö), häirintäindikaattori, paikkahyppy ja, kun mukana on RINEX ja lähetetty navigointidata, RAIM (receiver autonomous integrity monitoring) sekä kelloavusteinen monitori) ja palauttaa, milloin ja miksi paikkaratkaisu lakkasi olemasta luotettava. Valinnaiset osiot [[events]] ja [compare] pisteyttävät ilmoitetut tapahtumat ja ennustetut C/N0-laskut ilmoitettuja toleransseja vastaan. Taulukko [platform] kind = "vessel" valitsee merenkulun monitorit ja lisää jokaiselle epookille luottamuspistemäärän 0-100 sekä monitorit, jotka vähensivät pisteitä (ohjeellinen; MODELLED). Loki annetaan suoraan muodossa text tai base64 (enintään 4 MiB). Kaavio ja epookkikohtainen CSV pyynnöstä. Katso docs/RECEIVER-TRUST.md.
assess_vessel_stream Pisteytä rajattu ote muodossa NMEA 0183 (enintään 2 MiB ja 20 000 epookkia; sen on sisällettävä kalibrointi-ikkuna) samoin kuin komento kshana receiver-trust live sen pisteyttää: epookkikohtainen luottamustila ja pistemäärä 0-100 sekä pisteitä vähentäneet monitorit, yhteenveto ja viimeinen $PKSHT. Live-komennon rajattu muoto: pistoketta ei avata eikä porttiin kirjoiteta; portti (gate), --listen ja telemetriaviejät (Prometheus, OTLP, syslog) ovat vain komentorivillä. Vain ohjeellinen; MODELLED. Katso docs/MARITIME-TRUST.md.
assess_vessel_log Aluksen loki muodossa NMEA 0183 (enintään 4 MiB) eräajona, ja istunto-TOML ilmoittaa aluksen rajat: pisteytysmalli ja jokaisen epookin pistemäärä 0-100 vähennyksineen (vastaus säilyttää tilakohtaiset lukumäärät ja ensimmäiset 200 epookkia, joissa tila on heikentynyt tai ei luotettava). Vain ohjeellinen; MODELLED.
jammertest_import Lue julkaistu Jammertest-testiluettelo ja lähetyssuunnitelma (NPRA/jammertest-plan, MIT) aikataulutettuna totuutena (kshana jammertest import): yhden testialueen aikaikkunoista tulee vastaanottimen luottamustapahtumia, ja luettelotunniste ja vuosi ovat kunkin nimikkeessä. Suunnitellut aikaikkunat, ei tallennettuja lähetysaikoja; suunnitelman yhteystietokenttiä ei lueta. MODELLED. Katso docs/JAMMERTEST.md.
jammertest_score Pisteytä vastaanottimen loki tätä aikataulua vastaan (kshana jammertest score): testikohtaisesti havaitsemisviive, havaitsematta jääneet hälytykset ja palautumisaika sekä väärät hälytykset kaikkien aikaikkunoiden ulkopuolella. Tekstilokit muodossa log, binääriset (ubx, sbf) muodossa log_base64. Allekirjoitettu paketti tarvitsee avaimen: komentorivi. Vain ohjeellinen; MODELLED.
create_evidence_pack Allekirjoitettu todistepaketti aluksen lokin ikkunalle (kshana receiver-trust evidence): ikkunan raa'at lokitavut, asetukset, epookkikohtaiset tulokset ja syyt, yhteenvetosivu sekä manifesti, jossa on jokainen SHA-256 ja tiivisteketju, allekirjoitettu Ed25519:llä. Allekirjoitussiemenluku (seed) ei koskaan palaudu eikä kirjaudu; ilman sitä käytetään kertakäyttöavainta, joten paketti todistaa eheyden, ei identiteettiä. Tekninen tietue, ei oikeudellinen lausunto. Katso docs/EVIDENCE-PACKS.md.
attach_evidence_timestamp Sido aikaleimatunniste (RFC 3161; tavut muodossa .tsr, base64-koodattuina) pakettiin muistissa (kshana evidence attach-timestamp); tunnisteen sisältävän paketin tarkistuksen on yhä onnistuttava. Aikaleimaviranomaisen allekirjoitusta ei tarkisteta: käytä komentoa openssl ts -verify.
verify_evidence_pack Tarkista paketti (kshana evidence verify): jokainen tiiviste, ketju, allekirjoitus ja, allekirjoittajan julkisella avaimella ja täydellä lokilla, kuka sen allekirjoitti ja että osa tuli kyseisestä lokista. Nimeää jokaisen virheen ja tiedoston. Kenttä verdict on verified (allekirjoittaja kiinnitetty), intact-signer-not-pinned (kaikki täsmää, mutta julkista avainta ei annettu, joten allekirjoittajaa ei ole todettu) tai failed; require_timestamp hylkää paketin, jossa ei ole aikaleimatunnistetta.
generate_training_nmea Synteettistä siltadataa muodossa NMEA 0183 miehistökoulutukseen lajin nmea-scenario TOML-tiedostosta (häirintä, paikan vetäminen pois, aikaharhautus, toistoviive) ja ohjaajan lokilla (kshana-nmea-training/1); deterministinen siemenlukua kohden. Vain tekstiä: mitään ei syntetisoida RF- tai IQ-tasolla eikä mitään lähetetä; ei koskaan aluksen reaaliaikaisiin navigointijärjestelmiin. Vastaus sisältää ensimmäiset 2000 riviä.
build_interference_map GNSS-häiriökartta ADS-B- tai AIS-paikkaraporteista CSV-tekstinä (enintään 4 MiB): yksi GeoJSON (kshana-interference-map/v1) UTC-vuorokautta kohden, vain koosteena (ei tunnisteita, solut, joissa on alle 5 erillistä ilma-alusta tai alusta, pidätetään), aineiston lisenssi upotettuna. Heikentynyt solu ei tunnista häiriötä syyksi; ei ennuste. MODELLED. Katso docs/INTERFERENCE-MAP.md.
export_test_bench Skenaarion ajoneuvon liike ja tapahtumat laboratorion GNSS-simulaattorille (kshana bench-export): liike CSV:nä ja JSONina, NMEA, reittipisteet ja tapahtumat tekstinä, mitään ei kirjoiteta levylle. Lajit gnss-ins, jamming, gnss-sim. Ei signaalia: mikään viedystä ei ole radiotaajuinen tai kantataajuinen signaali eikä mallinna tai ohjaa sellaista; simulaattori ja sen käyttäjä tuottavat signaalit. Katso docs/TEST-BENCH.md.
create_round_trip_pack Allekirjoitettu laboratorion edestakaisen testin paketti (kshana evidence round-trip): skenaario, laboratorion asiakirja kshana.test-conditions/1, vastaanottimen loki ja sen pisteytys ilmoitettuja tapahtumia vastaan, sidottuina tiivisteellä. Hylkää olosuhteet ja pisteytystapahtumat, jotka ovat ristiriidassa. Ei signaalia; tekninen tietue, ei sertifiointi.
iq_sweep Toista yksi IQ-tallenne työhakemistossa usealla seurantasilmukkamallilla (kshana iq sweep): mallia ja PRN:ää kohden vakiotilan vaihe- ja koodijitteri, lukitusosuudet ja keskimääräinen C/N0. Enintään 256 (malli, PRN) -kanavaa kutsua kohden; jakson on mahduttava näytebudjettiin.
iq_monitor Aja häiriö- ja harhautuksenhavaitsemismonitorit IQ-tallenteelle työhakemistossa (kshana iq monitor): laajakaistaiset teho- ja spektrimonitorit sekä satelliittikohtaiset C/N0- ja signaalilaatumonitorit opittua lähtötasoa vasten. Sarjojen nimet ja pituudet sekä enintään 200 tapahtumaa vastauksessa; koko raportti pyynnöstä tiedostoina. Tapahtuma kertoo, että mitattu suure poistui lähtötasostaan, ei miksi. MODELLED.
iq_labfit Sovita seurantasilmukan lukituksen menetyksen malli laboratorioajoihin (kshana iq labfit) skenaarion iq-labfit pohjalta, jonka lokit ovat suoraan syötteenä (text tai base64; path hylätään). Ei lue eikä kirjoita tiedostoa. MODELLED.
iq_test_conditions Validoi tekstinä annettu tiedosto kshana.test-conditions/1 ja palauta ratkaistut olosuhteet tiivisteineen. Vain suoraan syötteenä.
compliance_report Julkisten kehysten kartoitus, täytettynä tekstinä annetuista tulosasiakirjoista (kshana compliance-report): mitkä kuuden kestävyyskehyksen ja -standardin (US DHS Resilient PNT framework v2.0, IMO ships, EASA aviation, NIS2 Article 21, EN 16803, NIST IR 8323r1) rivit ajot tukevat todisteilla (supports evidence for), mitkä eivät, ja kunkin rivin aukko. Ottaa parametrin runs, jonka alkiot ovat muotoa {label, result, scenario?} (enintään 64, yhteensä 4 MiB). Tila kertoo, että ajot tukevat todisteita rivin ominaisuuksille; se ei ole havainto siitä, että kehys täyttyisi, eikä minkään tuotteen luokitus tai hyväksyntä. Kenttä statement palautetaan jokaisen raportin mukana; näytä se sanatarkasti. MODELLED. Katso docs/compliance/.
compliance_mapping Staattiset kartoitustaulukot (tai, valitsimella sources, niiden lainaamat lähdeasiakirjat versioineen ja URL-osoitteineen) Markdownina, samalla lausumalla aloittaen. Ei tarvitse ajoja.
trust_telemetry Luottamusvirta (JSON-rivejä) tai tulos tyypiltä receiver-trust renderöitynä Prometheus-tekstinä, CEF- tai LEEF-syslog-riveinä, OTLP JSON -hyötykuormana tai Home Assistant MQTT -löytö- ja tilariveinä, komennon kshana trust-telemetry enkoodereilla. Teksti vastauksessa: mitään ei lähetetä tai tarjoilla eikä kelloa lueta. Vain ohjeellinen.
fit_imu_log Skenaariolajien hybrid ja fusion kiihtyvyysanturin ja gyron parametrit sovitettuna paikallaan olevasta IMU-lokista (CSV tai EuRoC) Allanin poikkeamalla, valmiilla liitettävällä taulukolla [accel_classical] ja lokin SHA-256-tiivisteellä (kshana imu-fit). Teksti sisään, JSON ulos; MODELLED.
list_standards_packs Standardipaketit (kshana standards-pack list): pisteytetyt skenaariojoukot DHS Resilient PNT -kehyksen testiprofiileille (tasot 1–4), asiakirjalle IMO MSC.1/Circ.1575 ja asiakirjan ICAO Doc 9849 liitteelle F.
run_standards_pack Yksi pakettiajo ennen ajoa ilmoitettuja kynnyksiään vastaan (kshana standards-pack run): jokainen testi MET, NOT MET tai NEEDS INPUT, mitatuin ja odotetuin arvoin; anna raportti työkalulle compliance_report, niin näet rivit. MODELLED; ei arvioi mitään tuotetta.
lunanet_afs_check LunaNet Augmented Forward Signal tarkistettuna asiakirjaa LNIS V5 AD1 Volume A vasten (LSIS-AFS V1.0, 29. tammikuuta 2025): spec (toteutus asiakirjan painettuja koodikaavioita ja läpikäytyjä esimerkkejä vasten), symbols (symbolivirta: synkronointikuvio, SB1, FID, TOI-jatkuvuus) tai generate (testivirta). Osakehysten 2–4 LDPC:tä ja CRC-24Q:ta ei tarkisteta; signaalia ei kirjoiteta.
score_benchmark kshana-bench-lähetys pisteytettynä totuustiedostoa vasten, molemmat JSON-tekstinä (kshana bench score, bench/SPEC.md): tulostiedosto, jossa on spesifikaatioversio, jako, syötetiivisteet ja tehtävän mittarit. MODELLED; kuvaa lokia tai korpusta, ei koskaan tuotetta.
render_leaderboard kshana-bench-tulostiedostot renderöitynä staattiseksi tulostaulusivuksi (HTML-teksti), kukin validoitu ensin.
trust_telemetry Luottamusvirta (JSON-rivejä) tai tulos tyypiltä receiver-trust renderöitynä Prometheus-tekstinä, CEF- tai LEEF-syslog-riveinä tai OTLP JSON -hyötykuormana, komennon kshana trust-telemetry enkoodereilla. Teksti vastauksessa: mitään ei lähetetä tai tarjoilla eikä kelloa lueta. Vain ohjeellinen.
route_exposure Reitin pituuden osuus yhden tai useamman häiriökartan heikentyneissä, ei-heikentyneissä, arvioimattomissa ja ei-havaituissa soluissa, valinnaisesti päivämäärävälillä. Havaitsemattomat solut eivät ole todiste vapaasta reitistä.
iq_signals GNSS IQ -kerroksen asetukset: signaalinimet, jotka IQ-työkalut hyväksyvät, onko IQ-tiedostotyökalut päällä, työhakemisto ja kutsukohtainen näytebudjetti. Kutsu tätä ensin.
iq_info Kuvaa yksi IQ-tallenne (in-phase ja quadrature) työhakemistossa käsittelemättä sitä: muoto, näytteenottotaajuus, keskitaajuus, näytteet, kesto, datatiedostot ja koot (kshana iq info).
iq_scene Luo usean satelliitin GNSS IQ -kohtaus työhakemistoon (kshana iq scene): ilmoitetut Doppler/C/N0-profiilit tai todellinen lähetetyn efemeridin geometria RINEX-navigointitiedostosta, valinnaisella signaalitason etenemiskanavalla. Vastaa kirjoitetuilla tiedostoilla ja niiden tavumäärillä sekä totuuden ensimmäisellä epookilla satelliittia kohden.
iq_acquire Yhden tai useamman PRN:n (pseudo-random noise codes) FFT-akvisitio (fast Fourier transform) tallenteelta (kshana iq acquire), valinnaisesti etupään vaiheiden takana: PRN:ää kohden löytyikö vai ei, Doppler, koodivaihe, huipputilasto ja kynnys; surface_out (yksi PRN) säilyttää koko Doppler × koodivaihe -korrelaatiopinnan hienojen Doppler-tarkennusten kanssa.
iq_track Hae, sitten seuraa DLL/PLL/FLL-pankilla (delay-, phase- ja frequency-locked loop) (kshana iq track), silmukat TOML-tiedostosta (kshana.loop-design/1) työhakemistossa (design) tai sisäänrakennetusta mallista, ja valinnaisella uudelleenhaulla (reacquire): kanavaa kohden epookit, lopullinen Doppler, lopullinen ja keskimääräinen C/N0, vaihe- ja koodilukitusosuudet, lukittuna lopussa, lopullinen lukitustila, väärät lukitukset ja uudelleenhaut sekä mallin nimi ja tiiviste. Seuranta virtaa rajatussa muistissa; epookkikohtainen tuloste menee vain tiedostoihin (epochs_out: E/P/L, diskriminaattorit, silmukkatilat, C/N0, lukitustila muodossa .csv/.jsonl/.bin; events_out).
iq_frontend Käytä vastaanottimen etupään ja häiriönvaimennuksen DSP:tä (digital signal processing: kaistanpäästö, lovisuodatus, sammutus (blanking), leikkaus (excision), AGC, kvantisoija) tallenteeseen ja kirjoita uusi (kshana iq frontend).
iq_campaign Aja laboratoriotoistokampanja (kshana iq campaign): tallenteet, joilla kullakin on testiolosuhdetiedosto, joka ilmoittaa laboratorion tunnetun totuuden, × etupääketjut × silmukkamallit. Jokainen solu pisteytetään lukituksen menetykseen kuluneella ajalla, uudelleenhakuajalla, C/N0-heikkenemisellä ilmoitettua J/S:ää vastaan (analyyttisen vertailun rinnalla, jonka merkintä on MODELLED), väärälukitusasteella, PLL/DLL-jitterillä ja saatavuudella. Inkrementaalinen ja jatkettavissa: jokainen kutsu ajaa odottavat solut, jotka mahtuvat näytebudjettiin (tai rajaan max_cells).
iq_campaign_status Kampanjan tulostekansion eteneminen: valmiit ja odottavat solut sekä tiiviste, kun kampanja on valmis. Lukee vain tiedostoja.

Jokainen työkalu on ohut, uskollinen kääre kirjaston kshana julkiselle funktiolle — tähän ei sijoitu uutta simulaatiologiikkaa, joten agentti ajaa täsmälleen validoitua moottoria.

GNSS IQ -työkalut: tiedostot sisään, tiivis JSON ulos#

IQ-tallenteet kasvavat gigatavuiksi, joten työkalut iq_* eivät koskaan välitä näytteitä protokollan kautta. Ne noudattavat yhtä sopimusta:

  • Työhakemisto. Palvelin lukee ja kirjoittaa IQ-tiedostoja vain kansion sisällä, jonka nimeää KSHANA_MCP_IQ_DIR. Jokainen polkuargumentti on suhteessa siihen (absoluuttisen polun on ratkettava sen sisään); syötteet ratkaistaan symbolisten linkkien läpi ennen tarkistusta, tulosteen kansion on jo oltava siinä, ja olemassa oleva tuloste korvataan vain valitsimella overwrite: true. Asettamattomana IQ-tiedostotyökalut ovat pois päältä ja kertovat, miten ne otetaan käyttöön; kaikkiin muihin työkaluihin tämä ei vaikuta.
  • Näytebudjetti. Yksi kutsu tuottaa tai käsittelee enintään KSHANA_MCP_IQ_MAX_SAMPLES kompleksinäytettä (oletus 50 000 000). Tavuina se on 400 MB muodossa cf32_le (8 tavua kompleksinäytettä kohden), 200 MB muodossa ci16_le (4 tavua) ja 100 MB muodossa ci8 (2 tavua); kohtaus kirjoitetaan muodossa cf32_le, ellei format toisin sano. Tarkistus tehdään ennen mitään työtä, ja hylkäys nimeää keston tai arvon max_seconds, joka mahtuu.
  • Tiiviit vastaukset. Jokainen työkalu vastaa yhdellä JSON-yhteenvedolla: hakupiikit, C/N0, lukitustila ja jokainen kirjoitettu tiedosto polkuineen ja tavumäärineen. Epookkikohtaiset taulukot menevät nimeämiisi tiedostoihin json_out / csv_out.
  • Tuntemattomat argumentit hylätään, ei ohiteta, joten virheellisesti kirjoitettu valitsin on virhe.

Jokainen työkalu ajaa saman koodipolun kuin komento kshana iq komentorivillä, prosessin sisällä. Kerros on vain ohjelmistoa: se kirjoittaa tiedostoja ohjelmistovastaanottimille eikä ohjaa radiolaitteistoa. IQ-kerros ei lisää häiriön tai harhauttajan synteesiä, eikä mitään koskaan lähetetä. (Erillinen skenaariolaji spectrum voi kirjoittaa analyyttisiä häirintälähettimen IQ-otoksia tiedostoon.)

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

Docker-imagea käytettäessä liitä kansio ja osoita muuttuja siihen: docker run --rm -i -v "$PWD/iq:/iq" -e KSHANA_MCP_IQ_DIR=/iq ghcr.io/ashfordeou/kshana-mcp.

Jokainen laji on tavoitettavissa#

Työkalu run_scenario ohjaa skenaarion kentän kind mukaan, joten jokainen laji, jonka työkalu list_scenario_kinds nimeää, ajetaan sen kautta. Siihen kuuluvat uudemmat perheet, joille kullekin on mukana toimitettuja esimerkkejä, jotka agentti voi hakea:

Ominaisuus Lajit Esimerkki, josta aloittaa
Spektri ja vesiputous spectrum l-band-waterfall-jamming
Aurinkokunta solar-system solar-system-tour
Tähdistöt minkä tahansa kappaleen ympärillä constellation-design, body-pnt lunar-relay-constellation, europa-surface-pnt
Kampanjat: ketjutetut vaiheet, pyyhkäisyt, Monte Carlo (siemenluvulla alustetut satunnaisjoukot), koostaminen campaign campaign-sweep-jammer-power
Matalan Maan kiertoradan (LEO) navigointi: signaalisuunnittelu leo-signal leo-band-trade
LEO-navigointi: ylilennon linkkibudjetti leo-pass leo-pass-iridium
LEO-navigointi: navigointisanoma leo-navmsg leo-navmsg-encode-decode
LEO-navigointi: yhdistetty paikannus ja ajanmääritys leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain leo-doppler-positioning, leo-pnt-end-to-end

Työkalu list_example_scenarios argumentilla kind nimeää jokaisen mukana toimitetun kyseisen lajin esimerkin. Animaatiot, raportit ja yhteentoimivuusviennit eivät ole lajeja: ne ovat ajon näkymiä, ja animate_scenario, report_scenario ja export_interop palauttavat ne mille tahansa skenaariolle, johon ne soveltuvat.

Ei tarjota: tutkimussarjat (kshana --study <suite.toml>), koska sarja nimeää levyllä olevia sisarskenaariotiedostoja eikä skenaariotyökalu lue tiedostoja. Aja jokainen jäsen työkalulla run_scenario. (IQ-työkalut kyllä lukevat ja kirjoittavat tiedostoja, vain työhakemistonsa sisällä.)

Asenna MCP-palvelin#

Ohjeellinen, ei tyyppihyväksytty navigointilaite: käyttäjä vastaa edelleen navigoinnista. Palvelin toimii tietokoneellasi; Ashforde OÜ:lle ei lähetetä mitään.

Kolmansien osapuolten tekoälyasiakkaita nimeävä kappale on jätetty tästä pois; se on tiedostossa mcp/kshana-mcp/README.md GitHubissa.

Kolmansien osapuolten tekoälyasiakkaita nimeävä kappale on jätetty tästä pois; se on tiedostossa mcp/kshana-mcp/README.md GitHubissa.

Kolmansien osapuolten tekoälyasiakkaita nimeävä kappale on jätetty tästä pois; se on tiedostossa mcp/kshana-mcp/README.md GitHubissa.

Kanava Komento tai painike Vaatii Kiinnitetty muoto
Cursor (yksi napsautus) npx (Node) · Docker Node tai Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code (yksi napsautus) npx (Node) · Docker · Insiders (npx) Node tai 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+ ja uv tai 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 kaava (v0.40.0)
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket ja sen jälkeen scoop install kshana-mcp Scoop (Windows) manifesti (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
Valmis binääri julkaisusivu: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], tarkistetaan komennoilla SHA256SUMS ja gh attestation verify ei mitään v0.40.0
MCP-rekisteri io.github.ashfordeOU/kshana-mcp (rekisteritietoiset asiakkaat löytävät) rekisteritietoinen asiakas 0.40.0
Etäkäyttö (streamable HTTP) kshana-mcp --http 127.0.0.1:8080, itse ylläpidetty: katso https://github.com/ashfordeOU/kshana/blob/main/docs/deploy/mcp-http.md oma isäntä v0.40.0

Kloonatusta työkopiosta tai gitistä (kehitys):

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

HTTP-tila (itse ylläpidetty)#

kshana-mcp --http 127.0.0.1:8080 tarjoaa samat työkalut streamable HTTP:n yli osoitteessa /mcp. Se sitoutuu vain loopbackiin; muu kuin loopback-osoite vaatii valitsimen --allow-remote ja bearer-tunnuksen muuttujassa KSHANA_MCP_HTTP_TOKEN; IQ-tiedostotyökalut ovat pois päältä; pyynnön koko, aika ja samanaikaisuus on rajattu; CORS-otsaketta ei lähetetä. Kshana ei isännöi päätepistettä: se ylläpidetään itse. Katso docs/deploy/mcp-http.md.

cargo install asentaa binäärin kshana-mcp polkuun PATH (tyypillisesti ~/.cargo/bin/kshana-mcp). Palvelin puhuu JSON-RPC:tä (JSON remote procedure call) stdion yli; lokit menevät stderriin. Lähdekoodista rakentaminen vaatii Rust-työkaluketjun ≥ 1,88 (korjattu SDK rmcp 2.x vaatii sen, ja niin vaatii myös kirjasto kshana); Docker-image ei vaadi mitään.

Rekisteröi se asiakkaalle#

Käytännössä jokainen MCP-asiakas käyttää samaa asetuslohkoa mcpServers — rekisteröi binääri kshana-mcp absoluuttisella polulla:

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

Tai Docker-imagella paikallisen binäärin sijaan (ei tarvita PATH):

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

Missä lohko sijaitsee, riippuu asiakkaasta:

  • Cursor — ~/.cursor/mcp.json (yleinen) tai .cursor/mcp.json (projektikohtainen).
  • JetBrains AI Assistant / Junie — Settings → Tools → AI Assistant → Model Context Protocol → Add → As JSON, liitä lohko ja käynnistä sitten IDE (integrated development environment) kokonaan uudelleen.
  • Työpöytäavustajat — useimmat käyttävät tiedostoa …_config.json samalla rakenteella mcpServers; tarkista tiedoston sijainti asiakkaasi ohjeista.
  • CLI-agentit — monet hyväksyvät saman JSONin mekanismilla mcp add / mcp.json.

Käytä aina binäärin absoluuttista polkua. Aseta RUST_LOG=debug osiossa env vianmääritystä varten (diagnostiikka menee stderriin; stdout on varattu JSON-RPC-protokollalle).

Kokeile#

Rekisteröinnin jälkeen kysy avustajaltasi esimerkiksi:

  • ”Luettele Kshana-skenaariolajit.” → list_scenario_kinds
  • ”Näytä minulle Kshana-spektriesimerkki ja aja se.” → list_example_scenarios, get_example_scenario, run_scenario
  • ”Aja Kshana-skenaario kellon holdoverista kynnysarvolla 20 ns ja 2 tunnin GNSS-katkolla; miten kvanttikellon ja klassisen kellon holdover vertautuvat?” → run_scenario
  • ”Vie tuo GPS-tähdistö (Global Positioning System) SP3-muodossa.” → export_sp3
  • ”Anna minulle realtime-frame-eop-taulukko CSV:nä.” → export_table_csv
  • ”Aseta tuo Iridium-ylilento Cesium-karttapallolle.” → list_export_formats, export_interop
  • ”Animoi häirintäkampanja.” → animate_scenario
  • ”Anna raportti tuosta ajosta toistettavuustietueineen.” → report_scenario
  • ”Tee yhden sekunnin GPS L1 -kohtaus PRN:illä 3 ja 17, sitten hae ja seuraa sitä.” → iq_signals, iq_scene, iq_acquire, iq_track

Suunnitteluhuomautus — miksi erillinen crate#

Palvelin on itsenäinen, työtilan ulkopuolelle jätetty crate, jolla on oma Cargo.lock, joten virallinen Rust MCP SDK (software development kit) rmcp ja sen asynkroninen ajonaikainen ympäristö eivät koskaan päädy julkaistun craten kshana riippuvuuskuvaajaan: kirjasto- tai Python-käyttäjä ei käännä palvelinta, jota ei aja. (Se erotettiin ensin, koska rmcp käyttää editionia 2024, mikä vaatii rustc ≥ 1,85, kun pääcrate lupasi silloin 1,75. Kirjasto ja tämä palvelin ilmoittavat nyt molemmat 1,88, tietoturvakorjatun version rmcp 2.x ja päivitettyjen RustCrypto-cratejen alarajan.) Jatkuva integrointi (CI) portittaa tämän craten erikseen — testit ja cargo deny sen omaa lukitustiedostoa vasten. rmcp:n lisenssipuu on puhdas (Apache-2.0/MIT/BSD), joten toisin kuin ristiinvalidointicrate xval/anise-frames, jota se muuten peilaa, jako ei johdu lisensoinnista.

Lisenssi: AGPL-3.0-only, GNU Affero General Public License versio 3 vain (tai kaupallinen lisenssi Ashforde OÜ:ltä; katso repositorion LICENSING.md).