关于 Space Standards
Space Standards 是供使用自备 ECSS 和 NASA 航天标准的工程师使用的 MCP 服务,可检索具体要求和表格,并附上文件、版本及条款引用,也能指出未覆盖的主题。
主要功能
- 01使用 BM25 搜索要求
- 02检索精确的要求记录
- 03以结构化行读取表格
- 04追踪标准间的引用
- 05比较各标准的主题覆盖情况
适用场景
- 01查找自备标准中的安全系数
- 02按文件和条款核对要求
- 03比较 ECSS 与 NASA 对某主题的覆盖
- 04识别已加载文件未涉及的问题
MCP 相关
该 MCP 服务向客户端提供文件列表、要求和表格检索、引用查询、主题比较及章节大纲等工具。标准文件须由用户提供,仓库不包含标准文本。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx space-standards-mcpSPACESTD_DOCSAbsolute path to the folder with your own ECSS / NASA standards (PDF or Word). No standards ship with the package; without it the server starts empty.SPACESTD_EMBEDOptional hybrid search: set to 'default' (needs the 'embed' extra: space-standards-mcp[embed]).SPACESTD_RERANKOptional reranker: set to 'default' (needs the 'embed' extra).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
7收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| query | string | 否 | |
| family | string | 否 | |
| doc_type | string | 否 | |
| discipline | string | 否 | |
| include_not_loaded | boolean | 否 |
详细介绍
space-standards-mcp
一个 MCP 服务(以及一个精简的可选 Agent),用于回答有关 ECSS 和 NASA 航天标准的问题,并提供精确到要求级别的引文:每个结果都会注明文档、版本和要求 ID;否则答案会是“未涵盖”。标准由你提供;本仓库不存储其中的任何内容。它首先面向运载火箭和有效载荷整流罩结构(安全系数、断裂控制、载荷、冲击、振动声学),并且旨在逐步扩展到完整的 ECSS 和 NASA 标准集。
独立项目。 与欧洲航天局(ESA)、ECSS 秘书处或 NASA 均无关联,也未获得其认可。ECSS、ESA 和 NASA 的名称及其标准名称归其所有者所有,在此仅用于标识本软件处理的文档。
60 秒演示(虚构样例)
仓库在 tests/fixtures/ 中提供了三份虚构的演示标准和一本演示手册(文本和数字均为虚构内容,因此你无需使用任何真实文档即可尝试所有功能)。
git clone https://github.com/manojknaikade/space-standards-mcp.git && cd space-standards-mcp
python -m venv .venv && source .venv/bin/activate # Python 3.11+
pip install -e ".[dev]"
pytest -q # fixture tests; real-document tests skip without documents/
# retrieval eval on the demo standards: expected recall@5 1.00 over 4 questions
python eval/run_retrieval_eval.py --docs tests/fixtures --questions eval/demo_questions.yaml
# the MCP server over the demo standards (stdio; an MCP client talks to it)
SPACESTD_DOCS=tests/fixtures python -m spacestd.server
将客户端(见下文)连接到该服务,然后提问,例如:“DEMO-E-ST-98C 中,金属整流罩适用哪个安全系数?”。答案会附带类似 DEMO-E-ST-98C Rev.2, 4.1.2a 的引文。
使用你自己的文档
这里不分发任何标准文本。请自行下载文档,并将其放入 documents/(已加入 gitignore)或 SPACESTD_DOCS 指定的任意文件夹:
- ECSS: https://ecss.nl(免费注册);Word 或 PDF。
- NASA: NASA 技术标准系统 https://standards.nasa.gov。
python scripts/download_nasa_standards.py documents/nasa可礼貌地下载公开文档(遵循 robots.txt,每 2 秒发送一个请求);--dry-run仅列出文档。
然后:
python -m spacestd.catalogue documents # what was found, and what is loaded
python -m spacestd.health documents # parse every document, set its tier, write eval/CORPUS_HEALTH.md
documents/corpus.yaml 用于选择要加载的内容(文档 ID 模式支持 *,参见
ADR-0006);如果没有该文件,则只加载 documents/ 中的文件:
load:
- ECSS-E-ST-32*
- NASA-STD-5*
文件命名、旁车元数据和格式(优先使用 PDF;Word 文件需要 LibreOffice)详见
documents/README.md。解析后的文档会缓存在 documents/.spacestd-cache/ 中。
这些标准仍受其发布方使用条款的约束。
无需克隆即可安装
该软件包发布在 PyPI 上:
uvx space-standards-mcp
pipx install space-standards-mcp
最新开发版本可通过 git 安装:
pipx install git+https://github.com/manojknaikade/space-standards-mcp。
space-standards-mcp 命令会启动服务(stdio),并读取 SPACESTD_DOCS。
连接 MCP 客户端
请使用安装了该软件包的 Python 的绝对路径,以及文档文件夹的绝对路径。
使用 uvx 时,客户端可以在不进行本地安装的情况下启动服务,例如在 Claude Desktop 中:
{"command": "uvx", "args": ["space-standards-mcp"], "env": {"SPACESTD_DOCS": "/abs/path/to/documents"}}。
Claude Code
claude mcp add space-standards --env SPACESTD_DOCS=/abs/path/to/documents -- /abs/path/to/.venv/bin/python -m spacestd.server
Claude Desktop(claude_desktop_config.json)
{
"mcpServers": {
"space-standards": {
"command": "/abs/path/to/.venv/bin/python",
"args": ["-m", "spacestd.server"],
"env": { "SPACESTD_DOCS": "/abs/path/to/documents" }
}
}
}
VS Code(.vscode/mcp.json)
{
"servers": {
"space-standards": {
"type": "stdio",
"command": "/abs/path/to/.venv/bin/python",
"args": ["-m", "spacestd.server"],
"env": { "SPACESTD_DOCS": "/abs/path/to/documents" }
}
}
}
工具
| 工具 | 功能 |
|---|---|
list_documents | 已加载的标准和问题,包括系列、类型、学科、解析层级、记录数和表格;支持筛选;也可列出存在但尚未加载的文档 |
get_requirement | 指定文档和要求 ID 对应的精确记录 |
search_requirements | 对要求和表格行进行 BM25 关键词搜索,并为每个命中结果提供相邻记录;报告尚未加载的具名标准 |
get_table | 将表格(例如安全系数)作为结构化行返回,包含标签、单元格文本、解析值和脚注 |
get_references | 某项要求所指向的标准和条款 |
compare_topic | 在每项标准中分别搜索同一主题,按 ECSS / NASA 分组,并为每项标准提供覆盖评级 |
get_section_outline | 标准的目录;对于单个条款,提供其记录 ID 和表格(不含要求文本) |
每条记录都包含其 kind(requirement、recommendation、permission、guidance、deleted)和 citation。
可选:混合搜索和 Agent
pip install -e ".[embed]" 和 SPACESTD_EMBED=default 可添加与 BM25 融合的嵌入排序(选择启用,详见
eval/RESULTS.md)。pip install -e ".[agent]" 可添加 python -m spacestd_agent "<question>" --docs documents,
在工具调用循环中使用相同的工具,并通过引用检查机制检查每份草稿是否包含检索记录中不存在的虚构 ID 和数字
(ADR-0005);此功能需要 Anthropic API 密钥。
解析层级
文档的解析质量各不相同,因此每份文档都标有一个层级(ADR-0006):
- verified:已对照源文档人工核验(要求数量、ID、表格)。
- checked:通过自动健康检查(
python -m spacestd.health),但未经人工审查。 - unchecked:已解析,但尚未通过任何检查;结果仅供线索参考。
记录、表格和行都带有 tier 和 page。对于层级低于 verified 的文档,其中表格提取的数字会附带“请对照源文档第 N 页核验”的标记;引用检查机制仅在答案重复该数字时才接受该数字。务必在源文档中确认数字。
评估及其局限
两项评估使用一套包含 57 个问题的数据集(17 个数字问题、17 个查找问题、7 个分类问题、5 个比较问题、11 个未覆盖问题)。以下数字来自 eval/RESULTS.md,统计范围为 7 项经人工核验的标准:
| 指标 | 数值 |
|---|---|
| 检索召回率@5 / @20(46 个计分问题) | 0.64 / 0.89(计入相邻记录时,@5 为 0.74) |
| 表格召回率@5:行命中 / 可达(10 个问题) | 0.50 / 0.85 |
| 答案,独立评审者,普通客户端:正确 / 部分正确 / 错误 | 52 / 4 / 1 |
| 答案,带检查机制的 Agent:正确 / 部分正确 / 错误 | 49 / 7 / 1 |
| 虚构的要求 ID | 0 |
| 未覆盖的问题:拒答且未提供数字 | 11 / 11 |
局限:问题集规模较小,且由一位作者编写;前 21 个问题经过领域审查,后续添加的问题则没有;由同一模型系列生成答案并进行评审;检索基于关键词,可能漏掉释义不同的表达(混合搜索只能部分改善);这些数字也无法说明大量处于 checked 或 unchecked 层级的文档。请将答案视为查找要求的辅助信息,而非权威依据。
免责声明
- 不包含标准文本。 请自行下载标准。
- 答案仅供参考,并非权威依据。 它们不能替代项目合同适用版本中的标准及其裁剪内容。请对照源文档核实任何要求、系数或试验等级。
项目文档
路线图 · 发布计划 · 项目简介 · 架构 · 决策记录 · 贡献指南 · 安全
许可证
代码采用 Apache License 2.0 授权;另请参阅 NOTICE 和 ADR-0007。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。