mcpField
K
Kshana PNT-resilience simulator

Kshana PNT-resilience simulator

本地服务
kshana.dev科研与教育75 天前更新

关于 Kshana PNT-resilience simulator

Kshana PNT-resilience simulator 是用于运行经验证的定位、导航与授时模拟的 MCP 服务,面向需要计算结果、来源信息及 VALIDATED 或 MODELLED 标记的 AI 助手用户,而非模型推算。

主要功能

  1. 01运行并验证 TOML 场景
  2. 02生成报告与动画
  3. 03评估 GNSS 接收机及船舶日志
  4. 04导出互操作与轨道格式
  5. 05创建并验证签名证据包
  6. 06分析干扰地图与 IQ 录制

适用场景

  1. 01运行 GNSS 韧性场景并查看评估指标
  2. 02检查接收机日志中的可信度丧失
  3. 03从船舶日志片段生成可复现证据
  4. 04为外部工具导出场景数据

MCP 相关

通过 stdio 向 MCP 客户端提供 Kshana 模拟、评估、报告和导出工具。工具运行引擎并返回 JSON 结果,也可附带图表和文件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ashfordeou-kshana": {
"command": "npx",
"args": [
"-y",
"kshana-mcp"
],
"env": {
"KSHANA_MCP_IQ_DIR": "<KSHANA_MCP_IQ_DIR>",
"KSHANA_MCP_IQ_MAX_SAMPLES": "<KSHANA_MCP_IQ_MAX_SAMPLES>"
}
}
}
}
启动命令npx -y kshana-mcp
需要配置的环境变量
KSHANA_MCP_IQ_DIRFolder the GNSS IQ tools (iq_scene, iq_acquire, iq_track, iq_frontend, iq_info, iq_campaign, iq_campaign_status) may read and write; every IQ path argument is relative to it. Unset leaves the IQ file tools off; the other tools are unaffected. In a container, mount a volume and point this at it.
KSHANA_MCP_IQ_MAX_SAMPLESMost complex samples one IQ call may generate or process (default 50000000).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/ashfordeou/kshana-mcp:0.39.0
npmkshana-mcp0.39.0
pypikshana-mcp0.39.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Kshana:标志为标示精确时刻的罗盘瞄准线,旁边是 kshana 字标

kshana-mcp:向 AI 助手提问,由引擎作答

kshana-mcp 是一个 Model Context Protocol(MCP)服务,适用于 Kshana——这款用于 PNT(定位、导航和授时)韧性仿真的开源模拟器。它能让 AI(人工智能)助手运行真实引擎并读取 其 JSON(JavaScript 对象表示法)结果,而不是猜测数学计算。它通过 stdio(标准输入和输出)与任何兼容 MCP 的客户端通信,包括 Cursor 和 JetBrains AI Assistant / Junie。

Kshana 已验证的数学领域,恰恰是语言模型最容易猜错的地方:SGP4 (简化通用摄动 4)轨道传播、IAU(国际天文学联合会)参考系、Allan 偏差、GNSS(全球导航卫星系统) 可用性和 DOP(精度因子)、ARAIM(高级接收机自主完好性监测)保护级别、GNSS 和 INS(惯性导航系统)融合, 以及量子传感器模型。提出问题后,助手会运行真实场景,获取带有来源信息及 VALIDATED 或 MODELLED 标签的 性能指标。

一个开放引擎位于中心,MCP 服务是其接口之一,与命令行、Rust 库、Python、WebAssembly、Kshana Studio、Docker 镜像和 JetBrains 插件并列;所有接口都运行相同的引擎,Kshana Pro 依赖该引擎但不分叉

工具

工具功能
run_scenario根据 TOML(Tom's Obvious, Minimal Language)定义运行场景;返回摘要和完整结果 JSON(JavaScript Object Notation:性能指标、曲线)。可选的 include_chart 会以 SVG(Scalable Vector Graphics)格式返回图表。
list_scenario_kinds列出 87 种内置场景类型及其描述和必填/可选字段,方便 Agent 构造有效场景。
validate_scenario运行前检查:解析 TOML 并检测其类型,不运行场景。
list_example_scenarios以 JSON 形式列出捆绑的参考场景:每个场景的 name、kind,以及一句说明其展示内容的描述。可选的 kind 筛选器。每个示例都能直接运行,因此这是为某种类型获取有效 TOML 的最快方式。
get_example_scenario返回一个捆绑参考场景的 TOML 文本,与 scenarios/ 下的文件逐字节一致。
report_scenario运行场景并返回报告:执行摘要、输入、每项指标及其单位和 VALIDATED 或 MODELLED 标签、事件、已用到的能力以及可复现性记录。format 为 json(默认值)或 html(可打印的单文件页面)。
animate_scenario运行场景并以动画形式返回其时间序列:svg(默认值)、html(自包含播放器)或 frames(每次回复最多 120 帧)。第一个内容项是所绘制内容的 JSON 摘要;之后为文件。若某种类型没有采样时间轴,则会拒绝处理并说明原因。
list_export_formats列出适用于某个场景的互操作格式(czml、kml、geojson、stk、sigmf)、不适用时的原因,以及各写入器遵循的规范。不运行场景。
export_interop将场景导出为 CZML(Cesium Language)、KML(Keyhole Markup Language)、GeoJSON、STK(Systems Tool Kit)星历 .e,或 SigMF(Signal Metadata Format;适用于带有 [iq] 块的 spectrum 场景)。第一个内容项是文件的 JSON 索引(后缀、大小、编码和 SHA-256 摘要,即 256 位 Secure Hash Algorithm);之后为文件,其中二进制 SigMF 样本文件采用 base64 编码。
import_route将 GeoJSON LineString 路线写入飞行航点轨迹的场景(terrain-nav、terrain-slam、gravity-map、combined-altpnt),并返回新的 TOML。
export_sp3将 orbit 场景的星座导出为 SP3-c(Standard Product 3,c 版)精密星历。
export_omm将 orbit 场景的轨道根数导出为 CCSDS(Consultative Committee for Space Data Systems)502.0-B-2 OMM(Orbit Mean-elements Message)目录。
export_oem将 orbit 场景的状态序列导出为 CCSDS OEM(Orbit Ephemeris Message)2.0 星历——其中包含 TEME(true equator, mean equinox)位置和速度序列,供飞行动力学工具(GMAT,即 General Mission Analysis Tool;Orekit;STK,即 Systems Tool Kit)读取;它是仅含位置的 export_sp3 的速度补充版本。
export_table_csv运行场景并以 CSV(逗号分隔值)格式返回其可复现性表,即 CLI(命令行界面)写入的字节稳定表格 <scenario>.table.csv。只有 realtime-frame-eop、lunar-time-budget、lunar-jamming、telecom-timing、leo-navmsg(其对 kepler16 或 kepler-rac 消息模型的 encode-decode 分析),以及设置了 export_site_lat_deg 和 export_site_lon_deg 的 moonlight-service-volume 会生成表格;其他任何类型都会返回错误,并列出这些类型。
sky_geometry计算方位角相关天际线下的天空几何:根据地点、时间和星座预设、双行根数集(tle,通过 SGP4 推算至 UTC epoch),或方位角/仰角或 ECEF 坐标形式的卫星,返回可见卫星、被天际线遮挡的卫星、由 gnss_lib_py 检查过的 DOP 内核计算的 GDOP/PDOP/HDOP/VDOP/TDOP、东-北-天协因数和协方差(每个系统一个时钟或共用一个时钟),以及水平误差椭圆;若使用 skyline_preset 而非 request,则返回带来源信息和逐度切线角的 REPRESENTATIVE 预设。MODELLED;包含警示信息;不通过 MCP 进行蒙特卡洛计算。参见 docs/SKYLINE.md。
assess_receiver_log评估真实 GNSS(全球导航卫星系统)接收机日志的可信度。TOML 指定日志的 format(ubx、rinex、android、nmea 或 sbf),并通过 text 或 base64 内联提供日志字节;工具运行可信度监测器(载波噪声密度下降、失锁、AGC(自动增益控制)、干扰指示器、位置跳变,以及在使用 RINEX 和广播导航数据时的 RAIM(接收机自主完整性监测)和时钟辅助监测器),并返回定位结果何时以及为何不再可信。可选的 [[events]] 和 [compare] 部分可根据指定容差,对所述事件和预测的 C/N0 降幅进行评分。[platform] kind = "vessel" 表格会选择海事监测器,并为每个历元添加 0-100 的可信度分数及扣分监测器(警示;MODELLED)。日志通过 text 或 base64 内联提供(最多 4 MiB)。可按需生成图表和逐历元 CSV。参见 docs/RECEIVER-TRUST.md。
assess_vessel_stream按照 kshana receiver-trust live 的评分方式,对有界 NMEA 0183 摘录(最多 2 MiB 和 20,000 个历元;必须包含校准窗口)进行评分:返回逐历元可信状态和 0-100 分的评分及扣分监测器、摘要和最后一条 $PKSHT。这是实时命令的有界形式:不会打开套接字,也不会向端口写入任何内容;门控、--listen 和遥测导出器(Prometheus、OTLP、syslog)仅限命令行使用。仅供参考;MODELLED。参见 docs/MARITIME-TRUST.md。
assess_vessel_log将船舶的 NMEA 0183 日志(最多 4 MiB)作为批处理运行,并由会话 TOML 声明船舶限制:返回评分模型和每个历元的 0-100 分评分及扣分情况(回复会按状态统计数量,并列出前 200 个降级或不可信历元)。仅供参考;MODELLED。
jammertest_import将已发布的 Jammertest 测试目录和发射计划(NPRA/jammertest-plan,MIT)作为预定真值读取(kshana jammertest import):一个测试区域的时间段会变为接收机可信度事件,且每个标签都包含目录 ID 和年份。使用的是计划时间段,而非记录的实际空中发射时间;不会读取计划中的任何联系人字段。MODELLED。参见 docs/JAMMERTEST.md。
jammertest_score根据该时间表对接收机日志评分(kshana jammertest score):逐项测试返回检测延迟、漏报次数和恢复时间,以及所有时间段之外的误报。文本日志使用 log,二进制日志(ubx、sbf)使用 log_base64。签名包需要密钥:仅限命令行使用。仅供参考;MODELLED。
create_evidence_pack为船舶日志的某个时间窗口创建签名证据包(kshana receiver-trust evidence):包含该窗口的原始日志字节、配置、逐历元结果和原因、摘要页面,以及带有每个 SHA-256 和哈希链的清单,并使用 Ed25519 签名。不会返回或记录签名种子;若未提供种子,则会使用一次性密钥,因此该证据包证明完整性,而非身份。此为技术记录,不构成法律意见。参见 docs/EVIDENCE-PACKS.md。
attach_evidence_timestamp在内存中将 RFC 3161 时间戳令牌(.tsr 字节的 base64 编码)绑定到证据包(kshana evidence attach-timestamp);带有令牌的证据包仍必须通过验证。不会检查时间戳机构的签名:请使用 openssl ts -verify。
verify_evidence_pack验证证据包(kshana evidence verify):检查每个哈希、哈希链、签名;若提供签名者公钥和完整日志,还会检查签名者身份以及该片段是否来自该日志。会列出每项失败及其文件。verdict 为 verified(签名者已固定)、intact-signer-not-pinned(所有检查均通过,但未提供公钥,因此无法确认签名者身份)或 failed;若证据包没有时间戳令牌,require_timestamp 会使验证失败。
generate_training_nmea根据 nmea-scenario TOML(干扰、位置拖偏、时间欺骗、重放延迟)为船员培训生成合成桥楼 NMEA 0183 数据,并附上教员日志(kshana-nmea-training/1);结果由种子确定。仅生成文本:不会合成 RF 或 IQ 数据,也不会发送任何内容;绝不可用于船舶的实时导航系统。回复包含前 2000 行。
build_interference_map根据 ADS-B 或 AIS 位置报告的 CSV 文本(最多 4 MiB)生成 GNSS 干扰地图:每个 UTC 日生成一个 kshana-interference-map/v1 GeoJSON,仅提供汇总数据(不含标识符,并隐去少于 5 架不同飞机或艘不同船舶的网格),且内嵌数据集许可证。网格降级并不能证明原因是干扰;这不是预测。MODELLED。参见 docs/INTERFERENCE-MAP.md。
export_test_bench导出场景中的载具运动和事件,供实验室 GNSS 模拟器使用(kshana bench-export):运动 CSV 和 JSON、NMEA、航点及事件文本;不会写入磁盘。适用类型:gnss-ins、jamming、gnss-sim。不包含信号:导出的内容都不会生成、模拟或驱动射频或基带信号;信号由模拟器及其操作人员提供。参见 docs/TEST-BENCH.md。
create_round_trip_pack创建签名实验室往返测试包(kshana evidence round-trip):包含场景、实验室的 kshana.test-conditions/1 文档、接收机日志及其根据所述事件得出的评分,并通过哈希关联。如果测试条件与评分事件不一致,则拒绝处理。不包含信号;此为技术记录,不构成认证。
iq_sweep在工作目录中使用多种跟踪环路设计重放一段 IQ 录制(kshana iq sweep):逐设计和 PRN 返回稳态相位抖动和码抖动、锁定比例以及平均 C/N0。每次调用最多处理 256 个(设计,PRN)通道;片段必须符合样本预算。
iq_monitor在工作目录中的 IQ 录制上运行干扰和欺骗检测监测器(kshana iq monitor):宽带功率和频谱监测器,以及根据已学习基线进行逐卫星 C/N0 和信号质量监测。回复包含序列名称和长度,以及最多 200 个事件;可按需将完整报告作为文件返回。事件表示某个测量值偏离了基线,但不说明原因。MODELLED。
iq_labfit根据 iq-labfit 场景中的实验室运行记录拟合跟踪环路失锁模型(kshana iq labfit);日志以内联 text 或 base64 形式提供(不接受 path)。不读取或写入任何文件。MODELLED。
iq_test_conditions验证以文本形式提供的 kshana.test-conditions/1 文件,并返回解析后的测试条件及其哈希。仅接受内联输入。
compliance_report根据以文本形式提供的结果文档填充公共框架映射(kshana compliance-report):说明六种韧性框架和标准(美国 DHS Resilient PNT framework v2.0、IMO ships、EASA aviation、NIS2 Article 21、EN 16803、NIST IR 8323r1)中哪些条目有运行结果支持作为证据、哪些没有,以及每个条目的差距。接受 runs,格式为 {label, result, scenario?}(最多 64 项,总计 4 MiB)。某个状态表示这些运行结果支持该条目所列能力的证据;这并不代表符合某个框架,也不是对任何产品的评级或批准。每份报告都会返回 statement;请逐字展示。MODELLED。参见 docs/compliance/。
compliance_mapping以 Markdown 形式返回静态映射表(或在提供 sources 时,返回其引用的带版本和 URL 的来源文档),并以同一声明开头。无需提供运行结果。
trust_telemetry使用 kshana trust-telemetry 编码器,将可信数据流(JSON 行)或 receiver-trust 结果转换为 Prometheus 文本、CEF 或 LEEF syslog 行、OTLP JSON 负载,或 Home Assistant MQTT 发现和状态行。回复中为文本:不会发送或提供任何内容,也不会读取时钟。仅供参考。
fit_imu_log通过 Allan 偏差法,根据静止 IMU 日志(CSV 或 EuRoC)拟合 hybrid 和 fusion 场景的加速度计和陀螺仪参数,并提供可直接粘贴的 [accel_classical] 表和日志的 SHA-256(kshana imu-fit)。输入为文本,输出为 JSON;MODELLED。
list_standards_packs列出标准包(kshana standards-pack list):用于 DHS Resilient PNT framework 测试配置文件(级别 1 至 4)、IMO MSC.1/Circ.1575 和 ICAO Doc 9849 Appendix F 的评分场景集。
run_standards_pack根据运行前声明的标准运行一个标准包(kshana standards-pack run):每项测试返回 MET、NOT MET 或 NEEDS INPUT,以及测量值和预期值;可将报告交给 compliance_report 查看对应条目。MODELLED;不对任何产品评级。
lunanet_afs_check根据 LNIS V5 AD1 Volume A(LSIS-AFS V1.0,2025 年 1 月 29 日)检查 LunaNet Augmented Forward Signal:spec(根据文档中印刷的代码表和示例检查实现)、symbols(符号流:同步模式、SB1、FID、TOI 连续性)或 generate(测试流)。不验证子帧 2 至 4 的 LDPC 和 CRC-24Q;不会写入信号。
score_benchmark根据真值文件对 kshana-bench 提交进行评分;两者均为 JSON 文本(kshana bench score、bench/SPEC.md):返回结果文件,其中包含规范版本、数据划分、输入哈希和任务指标。MODELLED;仅描述日志或语料库,绝不描述产品。
render_leaderboard将 kshana-bench 结果文件渲染为静态排行榜页面(HTML 文本);每个文件都会先经过验证。
trust_telemetry使用 kshana trust-telemetry 编码器,将可信数据流(JSON 行)或 receiver-trust 结果转换为 Prometheus 文本、CEF 或 LEEF syslog 行,或 OTLP JSON 负载。回复中为文本:不会发送或提供任何内容,也不会读取时钟。仅供参考。
route_exposure计算一条路线在一个或多个干扰地图的降级、未降级、未评估和未观测网格中所占的长度比例;可选设定日期范围。未观测网格并不证明路线畅通。
iq_signals显示 GNSS IQ 层的配置:IQ 工具接受的信号名称、IQ 文件工具是否已启用、工作目录以及每次调用的样本预算。请先调用此工具。
iq_info无需处理即可描述工作目录中的一段 IQ(同相和正交)录制:格式、采样率、中心频率、样本数、持续时间、数据文件及大小(kshana iq info)。
iq_scene在工作目录中生成多卫星 GNSS IQ 场景(kshana iq scene):生成指定的多普勒/C/N0 配置文件,或根据 RINEX 导航文件生成真实广播星历几何,并可选用信号级传播信道。回复包含写入的文件及其字节数,以及每颗卫星真值的首个历元。
iq_acquire对录制中的一个或多个 PRN(伪随机噪声码)进行 FFT(快速傅里叶变换)捕获(kshana iq acquire),可选在前端处理阶段之后执行:逐 PRN 返回是否捕获成功、多普勒、码相位、峰值统计量和阈值;surface_out(单个 PRN)会保留完整的多普勒 × 码相位相关面,并进行精细多普勒优化。
iq_track先捕获,再使用 DLL/PLL/FLL(延迟锁定环/相位锁定环/频率锁定环)组进行跟踪(kshana iq track);可使用工作目录中 kshana.loop-design/1 TOML 文件指定的环路(design),或使用内置设计,并可选重新捕获(reacquire):逐通道返回历元数、最终多普勒、最终和平均 C/N0、相位锁定和码锁定比例、结束时是否锁定、最终锁定状态、错误锁定和重新捕获次数,以及设计名称和哈希。跟踪采用有界内存流式处理;逐历元输出仅写入文件(epochs_out:E/P/L、鉴别器、环路状态、C/N0、锁定状态,格式为 .csv/.jsonl/.bin;events_out)。
iq_frontend对录制应用接收机前端和干扰缓解 DSP(数字信号处理:带通、陷波、空白处理、剔除、AGC、量化器),并写入新的录制文件(kshana iq frontend)。
iq_campaign运行实验室重放测试活动(kshana iq campaign):录制文件(每个文件附有说明实验室已知真值的测试条件文件)× 前端链 × 环路设计。对每个组合项进行评分,包括失锁时间、重新捕获时间、相对于指定 J/S 的 C/N0 降级(附带标记为 MODELLED 的解析参考值)、错误锁定率、PLL/DLL 抖动和可用性。支持增量运行和恢复:每次调用运行符合样本预算(或 max_cells)的待处理组合项。
iq_campaign_status查看测试活动输出文件夹的进度:已完成和待处理的组合项,以及完成后的摘要。仅读取文件。
每个工具都是对 kshana 库公开函数的轻量、忠实封装——这里没有新增仿真逻辑,因此 Agent 运行的正是经过验证的引擎。
GNSS IQ 工具:输入文件,输出精简 JSON

IQ 录制文件可达数 GB,因此 iq_* 工具不会通过协议传递采样数据。它们遵循以下约定:

  • 工作目录。 服务仅读写 KSHANA_MCP_IQ_DIR 指定文件夹内的 IQ 文件。所有路径参数都相对于该目录(绝对路径必须解析到该目录内);检查前会先通过符号链接解析输入路径;输出文件夹必须已存在于该目录内;只有设置 overwrite: true 时才会替换现有输出。未设置时,IQ 文件工具处于关闭状态,并会说明如何启用;其他工具不受影响。
  • 采样预算。 一次调用最多生成或处理 KSHANA_MCP_IQ_MAX_SAMPLES 个复数采样(默认值为 50 000 000)。按字节计算,cf32_le 为 400 MB(每个复数采样 8 字节),ci16_le 为 200 MB(每个复数采样 4 字节),ci8 为 100 MB(每个复数采样 2 字节);场景默认写为 cf32_le,除非 format 指定其他格式。检查会在任何操作开始前执行,超出限制时会指出符合要求的时长或 max_seconds 值。
  • 精简回复。 每个工具都返回一份 JSON 摘要,包含采集峰值、C/N0、锁定状态,以及每个输出文件的路径和字节数。各历元表格会写入你指定的 json_out / csv_out 文件。
  • 拒绝未知参数,而不会忽略它们,因此拼错选项会导致错误。

每个工具都会在进程内运行与命令行 kshana iq 相同的代码路径。这一层纯属软件:它为软件接收机写入文件,不驱动任何无线电硬件。IQ 层不会合成干扰或欺骗信号,也绝不会发射任何内容。(单独的 spectrum 场景类型可以将解析干扰源的 IQ 快照写入文件。)

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

使用 Docker 镜像时,挂载文件夹并将变量指向它: docker run --rm -i -v "$PWD/iq:/iq" -e KSHANA_MCP_IQ_DIR=/iq ghcr.io/ashfordeou/kshana-mcp。

每种类型都可运行

run_scenario 根据场景的 kind 分派,因此 list_scenario_kinds 列出的每种类型都可以通过它运行。这包括较新的系列,每个系列都有打包示例可供 Agent 获取:

能力类型可供参考的示例
频谱与瀑布图spectruml-band-waterfall-jamming
太阳系solar-systemsolar-system-tour
任意天体周围的星座constellation-design、body-pntlunar-relay-constellation、europa-surface-pnt
任务活动:串联阶段、扫描、蒙特卡洛(带种子的随机集合)、组合campaigncampaign-sweep-jammer-power
低地球轨道(LEO)导航:信号设计leo-signalleo-band-trade
LEO 导航:过境链路预算leo-passleo-pass-iridium
LEO 导航:导航电文leo-navmsgleo-navmsg-encode-decode
LEO 导航:融合定位与授时leo-pvt、leo-ppp、ntn-positioning、leo-pnt-chainleo-doppler-positioning、leo-pnt-end-to-end

使用带 kind 参数的 list_example_scenarios,可列出该类型的所有打包示例。 动画、报告和互操作性导出不是场景类型,而是某次运行的视图;animate_scenario、report_scenario 和 export_interop 会为其适用的任何场景返回这些内容。

不支持:研究套件(kshana --study <suite.toml>),因为套件会在磁盘上指定同级场景文件,而场景工具不会读取文件。请使用 run_scenario 逐一运行其中的场景。(IQ 工具确实会读取和写入文件,但仅限其工作目录内。)

安装 MCP 服务

这不是经过类型认证的导航设备,仅供参考;操作员仍需对导航负责。 服务运行在你的计算机上;不会向 Ashforde OÜ 发送任何内容。

选择任意一种渠道;它们运行的都是同一服务。各客户端的配置片段(Claude Desktop、Claude Code、Cursor、 VS Code、Windsurf、Zed、Goose、Codex CLI、Gemini CLI、Continue)请参阅 docs/MCP-INSTALL.md。

渠道命令或按钮要求固定版本形式
Claude Desktop 扩展双击适用于你系统的 .mcpb:macOS(Apple 芯片) · macOS(Intel) · Windows无v0.39.0 的 kshana-mcp-<target>.mcpb
Cursor(一键安装)npx(Node) · DockerNode 或 Docker[email protected] / ghcr.io/ashfordeou/kshana-mcp:0.39.0
VS Code(一键安装)npx(Node) · Docker · Insiders(npx)Node 或 Docker[email protected] / ghcr.io/ashfordeou/kshana-mcp:0.39.0
Claude Codeclaude mcp add kshana -- npx -y [email protected] · 插件:/plugin marketplace add ashfordeOU/kshana 然后执行 /plugin install kshana@ashfordeNode(或 Docker)[email protected]
npxnpx -y [email protected]Node 18+[email protected]
uvx / pipxuvx kshana-mcp==0.39.0 · pipx run kshana-mcp==0.39.0Python 3.9+,以及 uv 或 pipxkshana-mcp==0.39.0
Dockerdocker run -i --rm ghcr.io/ashfordeou/kshana-mcp:0.39.0Dockerghcr.io/ashfordeou/kshana-mcp:0.39.0
Homebrewbrew install ashfordeOU/tap/kshana-mcpbrewv0.39.0 对应的 formula
Scoopscoop bucket add ashforde https://github.com/ashfordeOU/scoop-bucket 然后执行 scoop install kshana-mcpScoop(Windows)v0.39.0 对应的清单
wingetwinget install AshfordeOU.KshanaMcpwinget(Windows)--version 0.39.0
cargocargo install kshana-mcp --version 0.39.0Rust 1.88+kshana-mcp 0.39.0
预编译二进制文件发布页面:kshana-mcp(Linux x86-64)、kshana-mcp-<target>[.exe],由 SHA256SUMS 和 gh attestation verify 验证无v0.39.0
MCP 注册表io.github.ashfordeOU/kshana-mcp(可由支持注册表的客户端查找)支持注册表的客户端0.39.0
远程(可流式传输的 HTTP)kshana-mcp --http 127.0.0.1:8080;可自托管,参见 https://github.com/ashfordeOU/kshana/blob/main/docs/deploy/mcp-http.md你自己的主机v0.39.0

从检出副本或 git 安装(开发版):

cd mcp/kshana-mcp && cargo install --path .
cargo install --git https://github.com/AshfordeOU/kshana kshana-mcp
HTTP 模式(可自托管)

kshana-mcp --http 127.0.0.1:8080 会在 /mcp 通过可流式传输的 HTTP 提供相同的工具。它仅绑定到环回地址;非环回地址需要使用 --allow-remote,并在 KSHANA_MCP_HTTP_TOKEN 中设置 bearer 令牌;IQ 文件工具处于关闭状态;请求大小、耗时和并发数均有限制;不会发送 CORS 标头。Kshana 不托管端点:你需要自行托管。请参阅 docs/deploy/mcp-http.md。

cargo install 会将 kshana-mcp 安装到你的 PATH 中(通常是 ~/.cargo/bin/kshana-mcp)。 服务通过 stdio 使用 JSON-RPC(JSON 远程过程调用);日志会写入 stderr。从源代码构建需要 Rust 工具链 ≥ 1.88(修补后的 rmcp 2.x SDK 需要此版本;kshana 库本身只需要 1.85);Docker 镜像则不需要。

将其注册到客户端

几乎所有 MCP 客户端都使用相同的 mcpServers 配置块——通过绝对路径注册 kshana-mcp 二进制文件:

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

或者,使用 Docker 镜像而非本地二进制文件(无需 PATH):

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

该配置块的位置取决于客户端:

  • Cursor — ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(按项目)。
  • JetBrains AI Assistant / Junie — Settings → Tools → AI Assistant → Model Context Protocol → Add → As JSON,粘贴配置块,然后彻底重启 IDE(集成开发环境)。
  • 桌面助手 — 大多数使用形如 …_config.json 的文件,且结构相同,均为 mcpServers; 请查阅客户端文档了解文件位置。
  • CLI Agent — 许多支持通过 mcp add / mcp.json 机制传入相同的 JSON。

请始终使用二进制文件的绝对路径。可在 env 中设置 RUST_LOG=debug 以排查问题 (诊断信息会写入 stderr;stdout 专用于 JSON-RPC 协议)。

试用

注册后,可以向助手提出如下问题:

  • “列出 Kshana 的场景类型。” → list_scenario_kinds
  • “给我看一个 Kshana 频谱示例并运行它。” → list_example_scenarios、 get_example_scenario、run_scenario
  • “运行 Kshana 时钟保持场景,阈值设为 20 ns,GNSS 中断 2 小时;量子与经典的保持性能有何不同?” → run_scenario
  • “将该 GPS(全球定位系统)星座导出为 SP3。” → export_sp3
  • “将 realtime-frame-eop 表以 CSV 格式提供给我。” → export_table_csv
  • “将该 Iridium 过境显示在 Cesium 地球仪上。” → list_export_formats、export_interop
  • “为干扰行动制作动画。” → animate_scenario
  • “给我该次运行的报告及其可复现性记录。” → report_scenario
  • “创建一个持续一秒、包含 PRN 3 和 17 的 GPS L1 场景,然后获取并跟踪信号。” → iq_signals、iq_scene、iq_acquire、iq_track

设计说明 — 为何使用独立 crate

该服务是一个独立的、排除在工作区之外的 crate,拥有自己的 Cargo.lock,因此官方 Rust MCP SDK(软件开发工具包)rmcp 及其异步运行时不会进入已发布的 kshana crate 依赖关系图:库或 Python 用户不会编译自己并不运行的服务。(最初将其拆分出来,是因为 rmcp 使用edition 2024,需要 rustc ≥ 1.85, 而当时主 crate 承诺支持 1.75。现在库声明的最低版本为 1.85;此服务声明为 1.88,这是经过安全修补的 rmcp 2.x 的最低版本。)持续集成(CI) 会单独检查此 crate——运行测试,并针对其锁定文件执行 cargo deny。rmcp 的许可证依赖树符合要求 (Apache-2.0/MIT/BSD),因此,与它所对应的 xval/anise-frames 交叉验证 crate 不同,此次拆分并非出于许可证方面的考虑。

许可证:AGPL-3.0-only,即 GNU Affero 通用公共许可证第 3 版(仅限此版本),或 Ashforde OÜ 提供的 商业许可证;请参阅代码仓库中的 LICENSING.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。