Strojový překlad, nekontrolovaný rodilým mluvčím. Referenční je anglická verze.

API a integraceUpravit na GitHubuZdroj: mcp/kshana-mcp/README.md

Kshana: značka, kompasový zaměřovací kříž označující přesný okamžik, vedle slovní značky kshanaKshana: značka, kompasový zaměřovací kříž označující přesný okamžik, vedle slovní značky kshana

kshana-mcp: zeptejte se svého asistenta s umělou inteligencí a odpoví engine

kshana-mcp je server Model Context Protocol (MCP) pro Kshana, open-source simulátor odolnosti PNT (určování polohy, navigace a času). Umožňuje asistentovi s umělou inteligencí (AI) spustit skutečný engine a přečíst si jeho výstup ve formátu JSON (JavaScript Object Notation), místo aby matematiku odhadoval. Komunikuje přes stdio (standardní vstup a výstup) s libovolným klientem kompatibilním s MCP, včetně Cursoru a JetBrains AI Assistant / Junie.

Matematika, pro kterou je Kshana ověřena, je přesně tam, kde jazykový model odhaduje špatně: šíření oběžné dráhy podle SGP4 (Simplified General Perturbations 4), referenční soustavy IAU (Mezinárodní astronomická unie), Allanovy odchylky, dostupnost GNSS (globální družicový navigační systém) a faktor DOP (zhoršení přesnosti), ochranné úrovně ARAIM (advanced receiver autonomous integrity monitoring), fúze GNSS a INS (inerciální navigační systém) a modely kvantových senzorů. Položíte otázku; asistent spustí skutečný scénář a získá ukazatele kvality s jejich původem a s označením VALIDATED nebo MODELLED.

Jeden otevřený engine uprostřed, server MCP jako jedno z jeho rozhraní vedle příkazové řádky, knihovny v Rustu, Pythonu, WebAssembly a Kshana Studia, obrazu Dockeru a pluginu pro JetBrains; každé rozhraní spouští tentýž engine a Kshana Pro na něm závisí, aniž by jej forkovalaJeden otevřený engine uprostřed, server MCP jako jedno z jeho rozhraní vedle příkazové řádky, knihovny v Rustu, Pythonu, WebAssembly a Kshana Studia, obrazu Dockeru a pluginu pro JetBrains; každé rozhraní spouští tentýž engine a Kshana Pro na něm závisí, aniž by jej forkovala

Nástroje#

Nástroj Co dělá
run_scenario Spustí scénář z definice v TOML (Tom's Obvious, Minimal Language); vrátí shrnutí a úplný výsledek ve formátu JSON (JavaScript Object Notation: ukazatele kvality, křivky). Volitelný include_chart vrátí graf jako SVG (Scalable Vector Graphics).
list_scenario_kinds 92 vestavěných druhů scénářů s popisy a povinnými/volitelnými poli, aby agent mohl sestavit platný scénář.
validate_scenario Předběžná kontrola: zpracuje TOML a zjistí jeho druh, aniž by jej spustila.
list_example_scenarios Přibalené referenční scénáře ve formátu JSON: každý s name, svým kind a jednou větou o tom, co ukazuje. Volitelný filtr kind. Každý příklad běží tak, jak je, takže jde o nejrychlejší cestu k platnému TOML pro daný druh.
get_example_scenario Text TOML jednoho přibaleného referenčního scénáře, bajt po bajtu shodný se souborem v scenarios/.
report_scenario Spustí scénář a vrátí jeho zprávu: shrnutí pro vedení, vstupy, každou hodnotu s její jednotkou a s označením VALIDATED nebo MODELLED, události, použité schopnosti a záznam reprodukovatelnosti. format je json (výchozí) nebo html (tisknutelná stránka v jednom souboru).
animate_scenario Spustí scénář a vrátí jeho časové řady jako animaci: svg (výchozí), html (samostatný přehrávač) nebo frames (nejvýše 120 v jedné odpovědi). První položka obsahu je shrnutí ve formátu JSON o tom, co bylo vykresleno; následují soubory. Druh bez vzorkované časové osy je odmítnut s uvedením důvodu.
list_export_formats Které interoperabilní formáty se na scénář vztahují (czml, kml, geojson, stk, sigmf), důvod, když se nevztahují, a specifikace, kterou každý zapisovač dodržuje. Scénář nespouští.
export_interop Exportuje scénář jako CZML (Cesium Language), KML (Keyhole Markup Language), GeoJSON, efemeridy STK (Systems Tool Kit) .e nebo SigMF (Signal Metadata Format, pro scénář spectrum s blokem [iq]). První položka obsahu je index souborů ve formátu JSON (přípona, velikost, kódování a otisk SHA-256, 256bitový Secure Hash Algorithm); následují soubory, binární soubor vzorků SigMF jako base64.
import_route Zapíše trasu GeoJSON LineString do scénáře, který letí po trati z bodů (terrain-nav, terrain-slam, gravity-map, combined-altpnt), a vrátí nové TOML.
export_sp3 Exportuje konstelaci scénáře orbit jako přesné efemeridy SP3-c (Standard Product 3, revize c).
export_omm Exportuje elementy scénáře orbit jako katalog CCSDS (Consultative Committee for Space Data Systems) 502.0-B-2 OMM (Orbit Mean-elements Message).
export_oem Exportuje řadu stavů scénáře orbit jako efemeridy CCSDS OEM (Orbit Ephemeris Message) 2,0 — řadu polohy i rychlosti v TEME (true equator, mean equinox), kterou čtou nástroje letové dynamiky (GMAT, General Mission Analysis Tool; Orekit; STK, Systems Tool Kit); doplněk k nástroji export_sp3, který nese pouze polohu, o rychlost.
export_table_csv Spustí scénář a vrátí jeho tabulku reprodukovatelnosti jako CSV (hodnoty oddělené čárkou) — bajtově stabilní tabulku, kterou CLI (rozhraní příkazové řádky) zapisuje jako <scenario>.table.csv. Pouze realtime-frame-eop, lunar-time-budget, lunar-jamming, telecom-timing, leo-navmsg (jeho analýza encode-decode na modelu zprávy kepler16 nebo kepler-rac) a moonlight-service-volume s nastavenými export_site_lat_deg + export_site_lon_deg ji vydají; jakýkoli jiný druh vrátí chybu, která tyto druhy jmenuje.
sky_geometry Geometrie oblohy pod horizontem závislým na azimutu: z místa, času a předvoleb konstelací, dvouřádkových sad elementů (tle, šířených podle SGP4 do UTC epoch) nebo družic zadaných azimutem a elevací či v ECEF, viditelné družice a družice skryté za horizontem, GDOP/PDOP/HDOP/VDOP/TDOP z jádra DOP ověřeného proti gnss_lib_py, kofaktor a kovariance v soustavě východ-sever-nahoru (jedny hodiny na systém, nebo jedny společné) a elipsa horizontální chyby; s skyline_preset místo request REPRESENTATIVE předvolba s uvedením původu a s řezem po každém stupni. MODELLED; nese poradní upozornění; žádné Monte Carlo přes MCP. Viz docs/SKYLINE.md.
assess_receiver_log Posoudí důvěryhodnost záznamu ze skutečného přijímače GNSS (globální družicový navigační systém). TOML uvádí format záznamu (ubx, rinex, android, nmea nebo sbf) a předává jeho bajty přímo jako text nebo base64; nástroj spustí monitory důvěryhodnosti (pokles poměru nosné k hustotě šumu, ztráta zachycení, AGC (automatické řízení zesílení), indikátor rušení, skok polohy a, s RINEX spolu s vysílanou navigační zprávou, RAIM (autonomní monitorování integrity přijímačem) a monitor podporovaný hodinami) a vrátí, kdy a proč přestala být určená poloha důvěryhodná. Volitelné sekce [[events]] a [compare] porovnávají uvedené události a předpovězené poklesy C/N0 s uvedenými tolerancemi. Tabulka [platform] kind = "vessel" zvolí námořní monitory a přidá na každou epochu skóre důvěryhodnosti 0–100 s monitory, které skóre snížily (poradní; MODELLED). Záznam se předává přímo jako text nebo base64 (nejvýše 4 MiB). Na požádání graf a CSV po epochách. Viz docs/RECEIVER-TRUST.md.
assess_vessel_stream Ohodnotí omezený úryvek NMEA 0183 (nejvýše 2 MiB a 20 000 epoch; musí obsahovat kalibrační okno) tak, jak jej hodnotí kshana receiver-trust live: stav důvěryhodnosti a skóre 0–100 pro každou epochu s monitory, které skóre snížily, shrnutí a poslední $PKSHT. Omezená podoba živého příkazu: neotevírá se žádný socket a nic se nezapisuje na port; brána, --listen a exportéry telemetrie (Prometheus, OTLP, syslog) jsou pouze v příkazové řádce. Pouze poradní; MODELLED. Viz docs/MARITIME-TRUST.md.
assess_vessel_log Záznam NMEA 0183 plavidla (nejvýše 4 MiB) jako dávkový běh, s TOML relace uvádějícím limity plavidla: model skóre a skóre 0–100 každé epochy s jejími srážkami (odpověď si ponechává počty podle stavu a prvních 200 epoch ve stavu degraded nebo untrusted). Pouze poradní; MODELLED.
jammertest_import Načte zveřejněný katalog testů a plán vysílání Jammertest (NPRA/jammertest-plan, MIT) jako plánovanou pravdu (kshana jammertest import): sloty jedné testovací oblasti se stanou událostmi důvěryhodnosti přijímače s identifikátorem katalogu a rokem v každém popisku. Plánované sloty, nikoli zaznamenané časy vysílání; žádné kontaktní pole plánu se nečte. MODELLED. Viz docs/JAMMERTEST.md.
jammertest_score Ohodnotí záznam přijímače vůči tomuto plánu (kshana jammertest score): po jednotlivých testech latenci detekce, nezachycené poplachy a dobu do zotavení a falešné poplachy mimo všechny sloty. Textové záznamy jako log, binární (ubx, sbf) jako log_base64. Podepsaný balíček vyžaduje klíč: příkazová řádka. Pouze poradní; MODELLED.
create_evidence_pack Podepsaný balíček důkazů pro okno záznamu plavidla (kshana receiver-trust evidence): surové bajty záznamu pro dané okno, konfigurace, výsledky a důvody po epochách, souhrnná stránka a manifest s každým SHA-256 a řetězcem hashů, podepsaný pomocí Ed25519. Podpisový seed se nikdy nevrací ani neloguje; bez něj se použije jednorázový klíč, takže balíček dokládá integritu, nikoli totožnost. Technický záznam, nikoli právní stanovisko. Viz docs/EVIDENCE-PACKS.md.
attach_evidence_timestamp Naváže na balíček časové razítko podle RFC 3161 (base64 bajtů .tsr) v paměti (kshana evidence attach-timestamp); balíček s razítkem musí nadále projít ověřením. Podpis autority časových razítek se nekontroluje: použijte openssl ts -verify.
verify_evidence_pack Ověří balíček (kshana evidence verify): každý hash, řetězec, podpis a s veřejným klíčem podepisujícího a úplným záznamem také to, kdo balíček podepsal a že výřez pochází z onoho záznamu. Jmenuje každé selhání a soubor. verdict je verified (podepisující připnut), intact-signer-not-pinned (vše sedí, ale nebyl zadán veřejný klíč, takže podepisující není prokázán) nebo failed; require_timestamp odmítne balíček bez tokenu časového razítka.
generate_training_nmea Syntetické můstkové NMEA 0183 pro výcvik posádek z TOML nmea-scenario (rušení, odtažení polohy, podvržení času, zpoždění přehrávání) s instruktorským záznamem (kshana-nmea-training/1); deterministické pro daný seed. Pouze text: nic se nesyntetizuje na úrovni RF ani IQ a nic se nevysílá; nikdy pro živé navigační systémy plavidla. Odpověď obsahuje prvních 2000 řádků.
build_interference_map Mapa interference GNSS z hlášení polohy ADS-B nebo AIS jako text CSV (nejvýše 4 MiB): jeden GeoJSON kshana-interference-map/v1 na den UTC, pouze agregáty (žádné identifikátory, buňky s méně než 5 různými letadly nebo plavidly se zadržují), s vloženou licencí datové sady. Degradovaná buňka neurčuje interferenci jako příčinu; nejde o předpověď. MODELLED. Viz docs/INTERFERENCE-MAP.md.
export_test_bench Pohyb vozidla a události scénáře pro laboratorní simulátor GNSS (kshana bench-export): CSV a JSON s pohybem, NMEA, trasové body a události jako text, nic se nezapisuje na disk. Druhy gnss-ins, jamming, gnss-sim. Žádný signál: nic z exportovaného není radiofrekvenčním ani základopásmovým signálem, nemodeluje jej ani jej neřídí; signály dodává simulátor a jeho obsluha. Viz docs/TEST-BENCH.md.
create_round_trip_pack Podepsaný laboratorní balíček okružní zkoušky (kshana evidence round-trip): scénář, dokument kshana.test-conditions/1 laboratoře, záznam přijímače a jeho vyhodnocení vůči uvedeným událostem, propojené hashem. Odmítne podmínky a hodnoticí události, které si odporují. Žádný signál; technický záznam, nikoli certifikace.
iq_sweep Přehraje jeden záznam IQ z pracovního adresáře přes několik návrhů sledovacích smyček (kshana iq sweep): pro každý návrh a PRN ustálený jitter fáze a kódu, podíly zachycení a střední C/N0. Nejvýše 256 kanálů (návrh, PRN) na jedno volání; úsek se musí vejít do rozpočtu vzorků.
iq_monitor Spustí monitory detekce interference a spoofingu nad záznamem IQ z pracovního adresáře (kshana iq monitor): monitory širokopásmového výkonu a spektra a monitory C/N0 a kvality signálu po družicích vůči naučenému základu. V odpovědi názvy a délky řad a až 200 událostí; celá zpráva na požádání jako soubory. Událost říká, že naměřená veličina opustila svůj základ, nikoli proč. MODELLED.
iq_labfit Přizpůsobí model ztráty zachycení sledovací smyčky laboratorním během (kshana iq labfit) ze scénáře iq-labfit, jehož záznamy jsou předány přímo (text nebo base64; path se odmítne). Žádný soubor nečte ani nezapisuje. MODELLED.
iq_test_conditions Ověří soubor kshana.test-conditions/1 předaný jako text a vrátí rozpoznané podmínky s jejich hashem. Pouze přímý vstup.
compliance_report Mapování na veřejné rámce vyplněné z dokumentů s výsledky předaných jako text (kshana compliance-report): pro které řádky šesti rámců a norem odolnosti (rámec US DHS Resilient PNT v2.0, IMO lodě, EASA letectví, NIS2 článek 21, EN 16803, NIST IR 8323r1) běhy podporují důkazy a pro které ne, a mezera u každého řádku. Přijímá runs položek {label, result, scenario?} (nejvýše 64, celkem 4 MiB). Stav říká, že běhy podporují důkazy pro schopnosti daného řádku; není to zjištění, že rámec je splněn, ani hodnocení či schválení jakéhokoli produktu. statement se vrací s každou zprávou; zobrazte jej doslovně. MODELLED. Viz docs/compliance/.
compliance_mapping Statické mapovací tabulky (nebo s sources zdrojové dokumenty, které citují, s verzemi a adresami URL) jako Markdown, uvozené týmž prohlášením. Nevyžaduje žádné běhy.
trust_telemetry Proud důvěryhodnosti (řádky JSON) nebo výsledek receiver-trust vykreslený jako text Prometheus, řádky syslogu CEF či LEEF, datová zátěž OTLP JSON nebo řádky objevování a stavu Home Assistant MQTT, s kodéry kshana trust-telemetry. Text v odpovědi: nic se neodesílá ani neposkytuje a nečtou se žádné hodiny. Pouze poradní.
fit_imu_log Parametry akcelerometru a gyroskopu scénářů hybrid a fusion odhadnuté ze záznamu stacionární IMU (CSV nebo EuRoC) pomocí Allanovy odchylky, s tabulkou [accel_classical] připravenou k vložení a s SHA-256 záznamu (kshana imu-fit). Text na vstupu, JSON na výstupu; MODELLED.
list_standards_packs Balíčky norem (kshana standards-pack list): hodnocené sady scénářů pro testovací profily rámce DHS Resilient PNT (úrovně 1 až 4), IMO MSC.1/Circ.1575 a ICAO Doc 9849 Příloha F.
run_standards_pack Jeden běh balíčku proti prahům stanoveným před během (kshana standards-pack run): každý test MET, NOT MET nebo NEEDS INPUT, s naměřenými a očekávanými hodnotami; zprávu předejte nástroji compliance_report, abyste viděli řádky. MODELLED; žádný produkt nehodnotí.
lunanet_afs_check Signál LunaNet Augmented Forward Signal ověřený podle LNIS V5 AD1 Volume A (LSIS-AFS V1.0, 29 leden 2025): spec (implementace proti vytištěným kódovým tabulkám a řešeným příkladům dokumentu), symbols (proud symbolů: synchronizační vzor, SB1, FID, kontinuita TOI) nebo generate (testovací proud). LDPC a CRC-24Q podrámců 2 až 4 se neověřují; nezapisuje se žádný signál.
score_benchmark Podání kshana-bench ohodnocené proti souboru pravdy, obojí jako text JSON (kshana bench score, bench/SPEC.md): soubor výsledků s verzí specifikace, rozdělením, hashi vstupů a metrikami úlohy. MODELLED; popisuje záznam nebo korpus, nikdy produkt.
render_leaderboard Soubory výsledků kshana-bench vykreslené jako statická stránka žebříčku (text HTML), každý předem ověřen.
trust_telemetry Proud důvěryhodnosti (řádky JSON) nebo výsledek receiver-trust vykreslený jako text Prometheus, řádky syslogu CEF či LEEF nebo datová zátěž OTLP JSON, s kodéry kshana trust-telemetry. Text v odpovědi: nic se neodesílá ani neposkytuje a nečtou se žádné hodiny. Pouze poradní.
route_exposure Podíl délky trasy v degradovaných, nedegradovaných, neposouzených a nepozorovaných buňkách jedné či více map interference, volitelně v rozmezí dat. Nepozorované buňky nejsou důkazem volné trasy.
iq_signals Nastavení vrstvy GNSS IQ: názvy signálů, které nástroje IQ přijímají, zda jsou zapnuty nástroje pro soubory IQ, pracovní adresář a rozpočet vzorků na jedno volání. Zavolejte jej jako první.
iq_info Popíše jeden záznam IQ (in-phase a quadrature) v pracovním adresáři bez jeho zpracování: formát, vzorkovací frekvenci, střední frekvenci, vzorky, délku, datové soubory a velikosti (kshana iq info).
iq_scene Vygeneruje vícedružicovou scénu GNSS IQ do pracovního adresáře (kshana iq scene): uvedené profily Doppler/C/N0 nebo skutečnou geometrii z vysílaných efemerid z navigačního souboru RINEX, s volitelným kanálem šíření na úrovni signálu. Odpoví seznamem zapsaných souborů a jejich velikostmi v bajtech a první epochou pravdy pro každou družici.
iq_acquire Akvizice pomocí FFT (rychlá Fourierova transformace) jednoho či více PRN (pseudonáhodných kódů) nad záznamem (kshana iq acquire), volitelně za stupni vstupní části: pro každý PRN zda byl zachycen, Doppler, fáze kódu, statistika píku a práh; surface_out (jeden PRN) uchovává celý korelační povrch Doppler × fáze kódu s upřesněním jemného Doppleru.
iq_track Akvizice a poté sledování bankou DLL/PLL/FLL (smyčky zachycení zpoždění, fáze a frekvence) (kshana iq track), se smyčkami ze souboru TOML kshana.loop-design/1 v pracovním adresáři (design) nebo vestavěným návrhem a s volitelným opětovným zachycením (reacquire): pro každý kanál epochy, konečný Doppler, konečné a střední C/N0, podíly zachycení fáze a kódu, zachyceno na konci, konečný stav zachycení, falešná zachycení a opětovná zachycení, plus název a hash návrhu. Sledování probíhá v omezené paměti; výstup po epochách jde pouze do souborů (epochs_out: E/P/L, diskriminátory, stavy smyček, C/N0, stav zachycení jako .csv/.jsonl/.bin; events_out).
iq_frontend Použije na záznam DSP vstupní části přijímače a potlačení interference (digital signal processing: pásmová propust, pásmová zádrž, blanking, excize, AGC, kvantizér) a zapíše nový záznam (kshana iq frontend).
iq_campaign Spustí kampaň laboratorního přehrávání (kshana iq campaign): záznamy, každý se souborem podmínek testu uvádějícím laboratoří známou pravdu, × řetězce vstupní části × návrhy smyček. Každá buňka je hodnocena podle doby do ztráty zachycení, doby opětovného zachycení, zhoršení C/N0 vůči uvedenému J/S (vedle analytické reference označené MODELLED), míry falešných zachycení, jitteru PLL/DLL a dostupnosti. Přírůstkově a s možností pokračování: každé volání spustí čekající buňky, které se vejdou do rozpočtu vzorků (nebo max_cells).
iq_campaign_status Průběh výstupní složky kampaně: hotové a čekající buňky a po dokončení otisk. Pouze čte soubory.

Každý nástroj je tenký, věrný obal veřejné funkce knihovny kshana — žádná nová simulační logika zde není, takže agent spouští přesně ten ověřený engine.

Nástroje GNSS IQ: soubory na vstupu, kompaktní JSON na výstupu#

Záznamy IQ dosahují gigabajtů, proto nástroje iq_* nikdy nepředávají vzorky přes protokol. Řídí se jednou smlouvou:

  • Pracovní adresář. Server čte a zapisuje soubory IQ pouze uvnitř složky pojmenované v KSHANA_MCP_IQ_DIR. Každý argument s cestou je vůči ní relativní (absolutní cesta se musí vyhodnotit uvnitř ní); vstupy se před kontrolou převádějí přes symbolické odkazy, složka výstupu už musí uvnitř existovat a existující výstup se nahradí pouze s overwrite: true. Pokud není nastaven, nástroje pro soubory IQ jsou vypnuté a uvedou, jak je zapnout; všechny ostatní nástroje to neovlivní.
  • Rozpočet vzorků. Jedno volání vygeneruje nebo zpracuje nejvýše KSHANA_MCP_IQ_MAX_SAMPLES komplexních vzorků (výchozí 50 000 000). V bajtech to je 400 MB jako cf32_le (8 bajtů na komplexní vzorek), 200 MB jako ci16_le (4 bajty) a 100 MB jako ci8 (2 bajty); scéna se zapisuje jako cf32_le, pokud format neurčí jinak. Kontrola proběhne před jakoukoli prací a odmítnutí uvede délku nebo max_seconds, která se vejde.
  • Stručné odpovědi. Každý nástroj odpovídá jedním shrnutím ve formátu JSON: píky akvizice, C/N0, stav zachycení a každý zapsaný soubor s cestou a velikostí v bajtech. Tabulky po epochách jdou do souborů json_out / csv_out, které pojmenujete.
  • Neznámé argumenty se odmítají, nikoli ignorují, takže překlep v názvu volby je chyba.

Každý nástroj běží stejnou cestou kódu jako kshana iq v příkazové řádce, uvnitř procesu. Vrstva je čistě softwarová: zapisuje soubory pro softwarové přijímače a neřídí žádný rádiový hardware. Vrstva IQ nepřidává syntézu interference ani spoofera a nic se nikdy nevysílá. (Samostatný druh scénáře spectrum umí zapsat do souboru analytické snímky IQ rušičky.)

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

U obrazu Dockeru připojte složku a nasměrujte na ni proměnnou: docker run --rm -i -v "$PWD/iq:/iq" -e KSHANA_MCP_IQ_DIR=/iq ghcr.io/ashfordeou/kshana-mcp.

Dostupný je každý druh#

run_scenario rozhoduje podle kind scénáře, takže jím běží každý druh, který jmenuje list_scenario_kinds. To zahrnuje i novější rodiny, každou s přibalenými příklady, které si agent může vyžádat:

Schopnost Druhy Příklad, od kterého začít
Spektrum a waterfall spectrum l-band-waterfall-jamming
Sluneční soustava solar-system solar-system-tour
Konstelace kolem libovolného tělesa constellation-design, body-pnt lunar-relay-constellation, europa-surface-pnt
Kampaně: zřetězené fáze, průchody parametrů, Monte Carlo (soubory náhodných běhů s pevným seedem), skládání campaign campaign-sweep-jammer-power
Navigace na nízké oběžné dráze Země (LEO): návrh signálu leo-signal leo-band-trade
Navigace LEO: bilance spoje při přeletu leo-pass leo-pass-iridium
Navigace LEO: navigační zpráva leo-navmsg leo-navmsg-encode-decode
Navigace LEO: fúzovaná poloha a čas leo-pvt, leo-ppp, ntn-positioning, leo-pnt-chain leo-doppler-positioning, leo-pnt-end-to-end

list_example_scenarios s kind jmenuje každý přibalený příklad daného druhu. Animace, zprávy a interoperabilní exporty nejsou druhy: jsou to pohledy na běh a animate_scenario, report_scenario a export_interop je vrátí pro libovolný scénář, na který se vztahují.

Neposkytuje se: sady studií (kshana --study <suite.toml>), protože sada jmenuje sourozenecké soubory scénářů na disku a nástroje scénářů žádný soubor nečtou. Spusťte každého člena pomocí run_scenario. (Nástroje IQ soubory čtou i zapisují, ale pouze uvnitř svého pracovního adresáře.)

Instalace serveru MCP#

Pouze poradní charakter, nikoli typově schválené navigační zařízení: za navigaci zůstává odpovědný provozovatel. Server běží na vašem počítači; Ashforde OÜ se nic neodesílá.

Pasáž, která jmenuje klienty umělé inteligence třetích stran, je zde vynechána; najdete ji v mcp/kshana-mcp/README.md na GitHubu.

Pasáž, která jmenuje klienty umělé inteligence třetích stran, je zde vynechána; najdete ji v mcp/kshana-mcp/README.md na GitHubu.

Pasáž, která jmenuje klienty umělé inteligence třetích stran, je zde vynechána; najdete ji v mcp/kshana-mcp/README.md na GitHubu.

Kanál Příkaz nebo tlačítko Vyžaduje Připnutá podoba
Cursor (jedno kliknutí) npx (Node) · Docker Node, nebo Docker kshana-mcp@0.40.0 / ghcr.io/ashfordeou/kshana-mcp:0.40.0
VS Code (jedno kliknutí) npx (Node) · Docker · Insiders (npx) Node, nebo 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+ s uv nebo 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 formule pro v0.40.0
Scoop scoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket a poté scoop install kshana-mcp Scoop (Windows) manifest pro 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
Předkompilovaná binárka stránka vydání: kshana-mcp (Linux x86-64), kshana-mcp-<target>[.exe], ověřeno pomocí SHA256SUMS a gh attestation verify žádné v0.40.0
Registr MCP io.github.ashfordeOU/kshana-mcp (nalezne ho klient podporující registr) klient podporující registr 0.40.0
Vzdáleně (streamable HTTP) kshana-mcp --http 127.0.0.1:8080, vlastní hosting: viz https://github.com/ashfordeOU/kshana/blob/main/docs/deploy/mcp-http.md váš vlastní hostitel v0.40.0

Z checkoutu nebo gitu (vývoj):

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

Režim HTTP (vlastní hosting)#

kshana-mcp --http 127.0.0.1:8080 poskytuje stejné nástroje přes streamable HTTP na /mcp. Naslouchá pouze na loopbacku; adresa mimo loopback vyžaduje --allow-remote a bearer token v KSHANA_MCP_HTTP_TOKEN; nástroje pro soubory IQ jsou vypnuté; velikost požadavku, čas i souběžnost jsou omezeny; neodesílá se žádná hlavička CORS. Kshana žádný koncový bod neprovozuje: hostujete si jej sami. Viz docs/deploy/mcp-http.md.

cargo install umístí kshana-mcp do vaší PATH (typicky ~/.cargo/bin/kshana-mcp). Server komunikuje JSON-RPC (JSON remote procedure call) přes stdio; logy jdou na stderr. Sestavení ze zdrojů vyžaduje toolchain Rustu ≥ 1,88 (vyžaduje jej opravené SDK rmcp 2.x, stejně jako knihovna kshana); obraz Dockeru nepotřebuje nic.

Registrace u klienta#

Prakticky každý klient MCP používá stejný konfigurační blok mcpServers — zaregistrujte binární soubor kshana-mcp absolutní cestou:

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

Nebo s obrazem Dockeru místo místního binárního souboru (PATH není potřeba):

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

Kde tento blok žije, závisí na klientovi:

  • Cursor — ~/.cursor/mcp.json (globálně) nebo .cursor/mcp.json (pro projekt).
  • JetBrains AI Assistant / Junie — Settings → Tools → AI Assistant → Model Context Protocol → Add → As JSON, vložte blok a poté plně restartujte IDE (integrované vývojové prostředí).
  • Desktopoví asistenti — většina používá soubor …_config.json se stejným tvarem mcpServers; umístění souboru zjistíte v dokumentaci svého klienta.
  • Agenti v příkazové řádce — mnozí přijímají stejný JSON přes mechanismus mcp add / mcp.json.

K binárnímu souboru vždy použijte absolutní cestu. Při řešení potíží nastavte RUST_LOG=debug v env (diagnostika jde na stderr; stdout je vyhrazen pro protokol JSON-RPC).

Vyzkoušejte#

Po registraci se svého asistenta zeptejte například:

  • „Vypiš druhy scénářů Kshana.“ → list_scenario_kinds
  • „Ukaž mi příklad spektra v Kshana a spusť ho.“ → list_example_scenarios, get_example_scenario, run_scenario
  • „Spusť scénář holdoveru hodin v Kshana s prahem 20 ns a 2hodinovým výpadkem GNSS; jaký je holdover kvantový oproti klasickému?“ → run_scenario
  • „Exportuj tuto konstelaci GPS (Global Positioning System) jako SP3.“ → export_sp3
  • „Dej mi tabulku realtime-frame-eop jako CSV.“ → export_table_csv
  • „Zobraz ten přelet Iridia na globu Cesium.“ → list_export_formats, export_interop
  • „Animuj kampaň rušení.“ → animate_scenario
  • „Dej mi zprávu o tom běhu i se záznamem reprodukovatelnosti.“ → report_scenario
  • „Vytvoř jednosekundovou scénu GPS L1 s PRN 3 a 17, pak ji zachyť a sleduj.“ → iq_signals, iq_scene, iq_acquire, iq_track

Poznámka k návrhu — proč samostatný crate#

Server je samostatný crate vyňatý z workspace s vlastním Cargo.lock, takže oficiální Rust MCP SDK (sada pro vývoj softwaru) rmcp a jeho asynchronní runtime nikdy nevstoupí do grafu závislostí publikovaného crate kshana: uživatel knihovny nebo Pythonu nekompiluje server, který nespouští. (Původně byl oddělen proto, že rmcp je edice 2024 a vyžaduje rustc ≥ 1,85, zatímco hlavní crate tehdy slibovaly 1,75. Knihovna i tento server nyní deklarují 1,88, minimum bezpečnostně opraveného rmcp 2.x a aktualizovaných crate z RustCrypto.) Kontinuální integrace (CI) tento crate hlídá samostatně — testy a cargo deny proti jeho lockfile. Licenční strom rmcp je čistý (Apache-2.0/MIT/BSD), takže na rozdíl od křížově validačního crate xval/anise-frames, který jinak kopíruje, oddělení nesouvisí s licencováním.

Licence: pouze AGPL-3.0, GNU Affero General Public License verze 3 (nebo komerční licence od Ashforde OÜ; viz LICENSING.md v repozitáři).