/mcp
Un serveur MCP sur le même contenu.
Un point de terminaison Model Context Protocol, pour qu’un agent puisse interroger la documentation au lieu de la scraper.
Outils
| Outil | Ce qu’il fait |
|---|---|
list_versions | Chaque version, avec le préfixe qui la délimite |
list_pages | La table des matières, bornée et délimitée |
search_docs | Trouver une page par terme, avec un extrait |
read_page | Une page en Markdown, avec le frontmatter de duxt |
La portée est un préfixe d’URL
list_versions renvoie le préfixe sous lequel chaque version est servie —
/app, /app/v1, /de/app — et cette chaîne constitue toute la portée
qu’acceptent list_pages et search_docs. Elle porte aussi le libellé de la
version, son statut de cycle de vie, les langues dans lesquelles elle est
publiée et si elle est celle par défaut : un agent choisit donc une édition
avant d’y chercher.
Omettre le préfixe couvre toutes les versions, dans la langue par défaut du
site. Une version imbriquée sous une autre — /app/v1 sous le /app courant —
n’est jamais dans la portée de sa parente.
Réponses bornées
Les deux listes acceptent limit (20 par défaut, 100 au maximum) et un
cursor. Les résultats sont triés par chemin, et une ligne nextCursor indique
où reprendre ; une liste sans elle est complète. Le curseur est le dernier
chemin renvoyé, il reste donc stable si la documentation change entre deux
appels.
Ce que renvoie read_page
Le frontmatter YAML propre à duxt — chemin, préfixe, libellé et ref de la version, langue et statut de cycle de vie — au-dessus du Markdown tel qu’écrit, son frontmatter d’origine retiré. Jamais le HTML rendu, jamais l’arbre d’analyse de Content.
Remarques
Les mêmes collections que les pages, si bien que les réponses ne peuvent pas diverger de ce qui est publié. Le nom du serveur, sa description et ses instructions viennent des options du module.
Le serveur réutilise un index de chemins par collection de production. Une liste lit les métadonnées demandées et une ligne de continuation. La recherche lit les corps par blocs de 64 pages maximum et s’arrête lorsque la réponse est complète. Unicode et la priorité des traductions restent identiques. Sans résultat, tout le périmètre est parcouru sans conserver tous les corps en mémoire.