Lecteurs machines
Ce qu’obtient un modèle — llms.txt, le Markdown brut de n’importe quelle page et un vrai serveur MCP.
La documentation est lue autant par des modèles que par des personnes, et les quatre réponses ci-dessous sont générées à partir des mêmes collections que celles dont les pages sont issues — aucune ne peut donc diverger de ce qui est publié.
| Chemin | Ce que c’est |
|---|---|
/llms.txt | Un index : nom du site, résumé, puis le lien .md de chaque page |
/llms-full.txt | Une extension duxt : les mêmes pages dans un fichier Markdown |
<page>.md | La source Markdown de n’importe quelle page |
/mcp | Un serveur MCP — quatre outils, de list_versions à read_page |
Du Markdown, pas du HTML
Tout ici transmet le Markdown tel qu’il a été écrit, et c’est pourquoi le schéma
de la collection demande à Content de stocker rawbody. Un modèle à qui l’on
donne du HTML rendu doit défaire une mise en page pour trouver un titre ; celui
à qui l’on donne la source lit ce que l’auteur a écrit, les blocs de code
toujours des blocs et un bloc MDC toujours un appel de composant.
<page>.md est servi par un middleware plutôt que par une route, car .md
est un suffixe du dernier segment du chemin et non un segment à part — il
n’existe pas de motif de route Nitro signifiant « tout chemin se terminant par
.md ».
Comment une page s’annonce
Rien de tout cela n’a besoin d’être deviné. Chaque page de documentation porte deux relations de lien dans son head — la première nomme son propre Markdown, la seconde l’index qui la couvre :
<link rel="alternate" type="text/markdown" href="/duxt/getting-started.md" />
<link rel="describedby" href="/llms.txt" />
L’alternative pointe vers la page en cours de rendu et non vers son canonique,
si bien qu’une ancienne version livre sa propre source plutôt que celle de la
version courante. Les deux sont des éléments <link> et non des en-têtes HTTP
Link, délibérément : une page prérendue les conserve lorsqu’un edge la sert
comme fichier statique, sans aucune configuration d’en-têtes dans le déploiement.
Pourquoi les deux fichiers llms
La convention de llmstxt.org définit l’index. duxt ajoute
/llms-full.txt pour un modèle qui ne peut pas récupérer les liens .md page
par page et a besoin d’un coup de la même documentation de la version par
défaut.
Pourquoi un vrai serveur MCP
/mcp parle le protocole via le SDK officiel plutôt que d’être un point de
terminaison JSON de la conception propre de duxt. Un client s’y connecte comme
il se connecte à n’importe quoi d’autre, au lieu que quelqu’un écrive un
adaptateur autour d’une forme que seul ce thème possède.
Le serveur expose quatre outils bornés : list_versions, list_pages,
search_docs et read_page. La recherche couvre les titres, les descriptions
et le corps Markdown rédigé ; la source, la version et le préfixe de chemin
permettent de la restreindre. Elle ne réutilise volontairement pas l’index du
navigateur : l’outil dispose de la base Content déployée et renvoie des pages de
résultats adaptées au protocole. Les arguments et résultats sont décrits dans
Point de terminaison MCP.