createDocsServer
expérimentaldepuis 0.1.0@legba-core/mcp-docs
createDocsServer
Ce que ça fait
Construit un serveur MCP exposant les 5 outils de documentation (list_packages, get_symbol, search_docs, get_recipe, get_error), sans encore l’attacher à un transport.
Signature
function createDocsServer(docsRootOrRepository: string | DocsRepository): McpServer
Paramètres
| Nom | Type | Requis | Défaut | Description |
|---|---|---|---|---|
docsRootOrRepository | string | DocsRepository | oui | — | Chemin vers docs/ (lu sur disque à chaque appel d’outil) ou un DocsRepository déjà construit (ex. un double en test) |
Retour
Un McpServer (du SDK @modelcontextprotocol/sdk) avec les 5 outils déjà enregistrés — reste à appeler server.connect(transport) avec le transport choisi (voir docs/recipes/).
Erreurs
N/A à la construction — les erreurs de lecture de docs/ sont capturées outil par outil et rendues en texte (« non trouvé »), jamais levées.
Exemple minimal
import { createDocsServer } from "@legba-core/mcp-docs";
const server = createDocsServer(process.cwd());
Exemple complet
import { createDocsServer, type DocsRepository } from "@legba-core/mcp-docs";
// Un DocsRepository peut être fourni directement (utile en test, ou pour
// servir une documentation qui ne vient pas du disque local).
const repo: DocsRepository = {
readIndex: () => "# Carte du framework",
listPackageDocs: () => [],
listApiDocs: () => [{ path: "api/exemple.md", content: "contenu de démonstration" }],
listRecipeDocs: () => [],
listDecisionDocs: () => [],
listAllDocs: () => [{ path: "api/exemple.md", content: "contenu de démonstration" }],
};
const server = createDocsServer(repo);
// server.connect(transport) une fois le transport choisi (stdio, en mémoire, etc.).
Pièges
- Passer un chemin (
string) ne lit rien immédiatement : chaque outil relitdocs/à son propre appel, jamais une copie figée au moment decreateDocsServer. - Le chemin passé doit être
docs/elle-même, pas la racine du monorepo — utiliserresolveDocsRootpour le retrouver depuis n’importe quel fichier du paquet. - Aucun transport n’est ouvert par cette fonction : sans
server.connect(...), le serveur n’écoute rien.