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.
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 soverwrite: 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_SAMPLESkomplexních vzorků (výchozí 50 000 000). V bajtech to je 400 MB jakocf32_le(8 bajtů na komplexní vzorek), 200 MB jakoci16_le(4 bajty) a 100 MB jakoci8(2 bajty); scéna se zapisuje jakocf32_le, pokudformatneurčí jinak. Kontrola proběhne před jakoukoli prací a odmítnutí uvede délku nebomax_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.
| 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.jsonse stejným tvaremmcpServers; 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).