space-standards-mcp
Answers questions about NASA space standards with exact, requirement-level citations. The server works over NASA documents downloaded from the NASA Technical Standards System (via the included polite downloader script), parsing and indexing their requirements, recommendations, tables (e.g. factors of safety) and clauses so they can be listed, searched, compared topic-by-topic and retrieved by requirement ID or table, always naming the document, issue and requirement ID in the citation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@space-standards-mcpwhich factor of safety applies to a metallic fairing in ECSS-E-ST-32?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
space-standards-mcp
An MCP server (and a thin optional agent) that answers questions about ECSS and NASA space standards with exact, requirement-level citations: every result names the document, issue and requirement ID, or the answer is "not covered". You bring the standards; nothing from them is stored in this repository. It is aimed at launcher and payload-fairing structures first (factors of safety, fracture control, loads, shock, vibroacoustics) and is built to grow to the whole ECSS and NASA set.
Independent project. Not affiliated with or endorsed by the European Space Agency (ESA), the ECSS Secretariat or NASA. The ECSS, ESA and NASA names and the names of their standards belong to their owners and are used here only to identify the documents the software works with.
60-second demo (invented fixtures)
The repository ships three invented demo standards and a demo handbook in tests/fixtures/ (made-up text and numbers, so you can try
everything without any real document).
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.serverConnect a client (below) to that server and ask, for example, "which factor of safety applies to a metallic
fairing in DEMO-E-ST-98C?". The answer comes back with a citation such as DEMO-E-ST-98C Rev.2, 4.1.2a.
Related MCP server: RAG MCP Server
Use your own documents
No standards text is distributed here. Download the documents yourself and put them in documents/ (gitignored)
or any folder you point SPACESTD_DOCS at:
ECSS: https://ecss.nl (free registration); Word or PDF.
NASA: the NASA Technical Standards System, https://standards.nasa.gov.
python scripts/download_nasa_standards.py documents/nasafetches the public ones politely (robots.txt, one request every 2 s);--dry-runonly lists them.
Then:
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.mddocuments/corpus.yaml selects what is loaded (doc-ID patterns with *, see
ADR-0006); without it only files directly in documents/ load:
load:
- ECSS-E-ST-32*
- NASA-STD-5*File naming, sidecar metadata and formats (PDF preferred; Word files need LibreOffice) are described in
documents/README.md. Parsed documents are cached in documents/.spacestd-cache/.
The standards remain subject to their publishers' terms of use.
Install without a clone
The package is not on PyPI yet; install it from git:
uvx --from git+https://github.com/manojknaikade/space-standards-mcp space-standards-mcp
pipx install git+https://github.com/manojknaikade/space-standards-mcpThe space-standards-mcp command starts the server (stdio) and reads SPACESTD_DOCS.
Connect an MCP client
Use an absolute path to the Python that has the package installed, and to your documents folder.
With uvx, a client can start the server without a local install, e.g. in Claude Desktop:
{"command": "uvx", "args": ["--from", "git+https://github.com/manojknaikade/space-standards-mcp", "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.serverClaude 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" }
}
}
}Tools
Tool | What it does |
| Loaded standards and issues with family, type, discipline, parse tier, record counts and tables; filters; can also list documents present but not loaded |
| Exact record for a document and requirement ID |
| BM25 keyword search over requirements and table rows, with neighbouring records per hit; reports named standards that are not loaded |
| A table (e.g. factors of safety) as structured rows with labels, cell text, parsed value and footnotes |
| Standards and clauses a requirement points to |
| One topic searched separately in each standard, grouped ECSS / NASA, with a coverage rating per standard |
| A standard's table of contents; for one clause its record IDs and tables (no requirement text) |
Every record carries its kind (requirement, recommendation, permission, guidance, deleted) and a citation.
Optional: hybrid search and the agent
pip install -e ".[embed]" and SPACESTD_EMBED=default add embedding ranking fused with BM25 (opt-in, see
eval/RESULTS.md). pip install -e ".[agent]" adds python -m spacestd_agent "<question>" --docs documents,
the same tools in a tool-calling loop with a citation gate that checks each draft for invented IDs and numbers not
found in the retrieved records (ADR-0005); it needs an Anthropic API key.
Parse tiers
Documents differ in how well they parse, so each carries a tier (ADR-0006):
verified: checked by hand against the source (requirement counts, IDs, tables).
checked: passes the automatic health checks (
python -m spacestd.health), not reviewed by hand.unchecked: parsed, but no check has passed; treat results as leads.
Records, tables and rows carry their tier and page. Numbers taken from tables of documents below verified
come with a "check against the source, page N" flag, and the citation gate only accepts such a number when the
answer repeats it. Always confirm a number in the source.
Evaluation and its limits
Two evals run on a 57-question set (17 numeric, 17 lookup, 7 classification, 5 compare, 11 not covered). Numbers from eval/RESULTS.md, on the 7 hand-verified standards:
Measure | Value |
retrieval recall@5 / @20 (46 scored questions) | 0.64 / 0.89 (0.74 at @5 counting neighbouring records) |
table recall@5: row hit / reachable (10 questions) | 0.50 / 0.85 |
answers, independent judge, plain client: correct / partial / wrong | 52 / 4 / 1 |
answers, gated agent: correct / partial / wrong | 49 / 7 / 1 |
invented requirement IDs | 0 |
"not covered" questions declined without numbers | 11 / 11 |
Limits: the question set is small and written by one author; the first 21 questions had domain review and the
later additions did not; one model family answers and judges; retrieval is keyword-based and misses paraphrases
(hybrid search helps only partly); and the figures say nothing about the many documents at tier checked or
unchecked. Treat answers as aids for locating requirements, not as authority.
Disclaimer
No standards text is included. You download the standards yourself.
Answers are aids, not authority. They are not a substitute for the applicable standard in the issue your project is contracted to, with its tailoring. Verify any requirement, factor or test level against the source.
Project docs
Roadmap · Release plan · Project brief · Architecture · Decision records · Contributing · Security
Licence
The code is licensed under the Apache License 2.0; see also NOTICE and ADR-0007.
This server cannot be deployed
Maintenance
Related MCP Connectors
Page-cited retrieval for embedded docs, datasheets, MISRA, CMSIS, and RTOS references.
- docs2mcpOAuthcom.docs2mcp
Query your own PDFs and documents from any MCP client. Every answer cites the page it came from.
Ingest, manage, and retrieve documents for RAG-powered AI applications
Extract, ask, compare and parse PDFs/images with source evidence. OAuth sign-in or API keys.
Related MCP Servers
- FlicenseAqualityBmaintenanceLocal-first, read-only MCP server for retrieving and searching authorised CCSDS and ECSS standards, enabling citation-rich passage-level search and document access.3-
- FlicenseNot gradedqualityCmaintenanceEnables document indexing and question answering with Retrieval-Augmented Generation, providing cited answers from user-supplied documents.-
- FlicenseNot gradedqualityCmaintenanceEnables retrieval and comparison of automotive regulations and standards, plus question answering where every answer must carry standard number, clause number, and original excerpt, with unsupported conclusions flagged for review. Java backends and Feishu can call it directly over MCP.-
- AlicenseNot gradedqualityBmaintenanceSpacecraft component specifications read from vendor datasheets (2,500+ products, 24 categories): search by engineering requirements, compare, budget mass and power, read datasheet digests and facts, find data gaps, and assemble a bus around parts you lock. Every value cites its datasheet page; missing data is named, never guessed.30 npm1MIT