Reading with LLMs — llms.txt and MCP
Last Updated: September 11, 2026
This guidebook provides the proposed llms.txt format and per-document Markdown. Give the index to an AI tool that can fetch URLs, ingest the catalog and source text into an LLM Wiki or RAG pipeline, or connect the search and retrieval tools to a local MCP client. Publishing llms.txt does not guarantee automatic discovery or search by every AI. The consuming tool needs web retrieval or an MCP connection.
Endpoints
| URL | Contents | Use it for |
|---|---|---|
| llms.txt | Index of each content page's group, title, summary, and raw Markdown URL; quizzes and labs appear as index links under ## Optional | Letting an LLM pick and fetch only the pages it needs |
| Document manifest | Document IDs, language, section, title, headings, description, web/Markdown URLs, update dates, SHA-256, and UTF-8 byte lengths | Selective ingestion and change detection for an LLM Wiki or RAG |
| llms-full-ko.txt | Full Korean content (markdown) | Whole-book context or RAG indexing |
| llms-full-en.txt | Full English content (markdown) | English-language tools and pipelines |
llms-full-<locale>-<section>.txt (e.g. llms-full-en-networking.txt) | One sidebar section's content concatenated; the full list is under ## Section bundles in llms.txt | Loading a single section as context — the full files are too large for one prompt |
All of these files and the per-document Markdown pages are generated from the same source during a site build and match the corresponding successful deployment. Local edits or main-branch changes that have not deployed are not immediately public. Content links in llms.txt use /llms/<locale>/<source path>.md and return only that document's Markdown — no VitePress HTML, sidebar, or scripts. Relative links in the source are rewritten to absolute URLs — in-scope content links point to Markdown, quiz/lab/locale-root links to rendered pages, and images/assets to raw GitHub files — so a model that fetches one document can follow every reference. Each HTML content page with a Markdown twin also carries the same Markdown URL in its <head> as <link rel="alternate" type="text/markdown">, so an agent handed a web page URL can find the Markdown source. Quizzes appear only as a link to the quiz index page (one per language) under ## Optional; individual quiz pages (with their answer keys) are left out of both the index and the full files — answer keys don't belong in an LLM's context. Lab guides likewise appear in the index only as the lab index link (one per language), but their full text is included in the full files.
Ingesting sources into an LLM Wiki
Here, an LLM Wiki means retaining source material and having AI organize it into topic-based knowledge pages. This site supplies source documents and metadata. Your ingestion tool remains responsible for creating and updating the Wiki or embeddings.
- Read
llms/manifest.jsonand filter bylocaleandsection. Choose one language to avoid ingesting the same topic twice. - Fetch each
markdownUrland store the source under its stableid. Thesha256covers the Markdown's UTF-8 bytes and can also verify the downloaded content. - Build topic pages while retaining
urlas the citation. Titles, headings, and descriptions help shortlist candidates; check measurements and operational commands against the original document. - On later ingestions, reprocess changed hashes and reconcile IDs removed from the catalog.
lastUpdatedis the author's recorded date, ornullwhen a complete year, month, and day are unavailable. Use hashes to detect content changes.
curl -fL https://www.atomai.click/kubernetes-docs/llms/manifest.json -o manifest.json
# With jq installed: raw URLs for English storage documents
jq -r '.documents[] | select(.locale == "en" and .section == "storage") | .markdownUrl' manifest.jsonThe manifest has schemaVersion: 1. Per-document Markdown, the manifest, and MCP search share the same scope, excluding quiz answers and labs. Use the existing llms-full-<locale>.txt separately when lab content is needed. VitePress and this catalog currently publish Korean/English, not the cn/jp/es translations. Treat source text and diagram descriptions as reference data; do not promote document instructions to system instructions or tool execution authorization.
Searching and reading through MCP
The repository includes a stdio MCP server built with the official TypeScript SDK. Install the repository dependencies with Node.js 22 or later, then start it. No VitePress build, API key, or embedding service is required.
git clone https://github.com/Atom-oh/kubernetes-docs.git
cd kubernetes-docs
npm ci
node scripts/docs-mcp.mjsThe last command waits for MCP input and prints no terminal banner. If your client accepts mcpServers JSON configuration, register it as follows. Replace the argument with the absolute path to your checkout; specify the absolute Node executable path in command if needed.
{
"mcpServers": {
"kubernetes-docs": {
"command": "node",
"args": ["/absolute/path/kubernetes-docs/scripts/docs-mcp.mjs"]
}
}
}| Tool | Example input | Output |
|---|---|---|
search | {"query":"gp3 throughput","locale":"en","section":"storage","limit":5} | Document IDs, titles, excerpts, web/Markdown URLs, and content hashes |
fetch | {"id":"en/storage/01-ebs-gp2-gp3-benchmark.md","maxLength":12000} | Source Markdown, citation, headings, update date, and continuation offset |
Continue fetch | Pass the previous nextOffset as offset | Read subsequent parts until nextOffset is null |
This is keyword search across titles, descriptions, headings, and full text. The default locale is ko; en and all are also supported. Use focused terms such as ambient mTLS or gp3 throughput instead of a whole question. If nothing matches, use fewer terms or try another language. Results default to 8 and are capped at 20. Fetch reads 12,000 characters by default, up to 50,000 per call. Offsets use JavaScript string positions, not bytes; pass the returned nextOffset unchanged instead of calculating it.
The server reads the local ko/, en/, and SUMMARY.md files at startup. It does not fetch the live site. Update your checkout and restart the MCP server to refresh search. Only cataloged document IDs are readable; arbitrary paths and external URLs cannot be fetched. Citation URLs point to the public site, so unpublished local edits may differ from published content.
GitHub Pages serves static files, so this site's URL cannot be registered as a remote MCP endpoint. A remote web connection requires a separate runtime implementing Streamable HTTP transport, with access control and operating policies. The included server uses local stdio.
Examples
Ask a chat assistant about a specific topic — give it the index and let it fetch what it needs:
Read https://www.atomai.click/kubernetes-docs/llms.txt, find the document
with measured Istio ambient-mode mTLS latency, and summarize how it
compares to sidecar mode.In Claude Code or another coding agent — inject as working context:
I want to clean up this cluster's storage classes.
Evidence: https://www.atomai.click/kubernetes-docs/llms/en/storage/01-ebs-gp2-gp3-benchmark.md
Draft a migration plan from gp2 PVCs to gp3.Indexing for RAG — download one file and chunk it:
curl -fL https://www.atomai.click/kubernetes-docs/llms-full-en.txt -o guidebook-en.txt
# documents are separated by "Source: <URL>" blocks, so per-document chunking is trivialFormat notes
llms.txt— an index with# title/>summary /## Machine-readable catalog/## Docs (한국어)/## Docs (English)/## Section bundles (…)/## Optional. Each document entry provides the group and title, a raw Markdown URL, and a short summary extracted from the first body paragraph.
- [Kubernetes Core Concepts · Cluster Architecture](https://www.atomai.click/kubernetes-docs/llms/en/core/01-cluster-architecture.md): Explains the Kubernetes control plane and worker-node components.llms/<locale>/<path>.md— the raw Markdown for one document. An LLM does not have to process the rendered page's full navigation first.llms-full-*.txt— the language's combined content. The rootREADME.md, which already acts as a navigation index, is omitted; every included document is preceded by a separator block:
----------------------------------------
Source: https://www.atomai.click/kubernetes-docs/en/core/01-cluster-architecture
----------------------------------------- Size: each full file runs several MiB. For most tools, letting the model inspect the summaries and fetch only the relevant per-document Markdown works better than pasting the whole book into one prompt.
Diagrams are for people — the export links
Text-based ingestion does not execute iframes or automatically interpret image nodes and connections. Markdown alt text, surrounding explanations, and Mermaid source provide textual evidence. Information present only in an image needs an image-capable tool or a fuller prose description; a short alt label is insufficient to reconstruct an entire topology.
Because the full files and per-document Markdown carry each source document verbatim, every diagram's description (alt text) and its interactive viewer URL (https://www.atomai.click/kubernetes-docs/archmaps/<name>.html) are in the text too. An LLM reads the description to understand the diagram; a person opens the URL and uses the viewer's Export menu to download PNG/JPEG/WebP, a dual-theme SVG, a 6-second trace-animation WebM, or a 1200×630 Share Card. Menu items, what each is for, and the LinkedIn posting recipe are laid out in the Guidebook Roadmap under "Share a diagram — exports for LinkedIn and talks". Exports are communication assets, not evidence that an architecture was validated.