Serveur MCP
À Propos des Serveurs MCP
Le Model Context Protocol (MCP) est un protocole ouvert qui crée des connexions standardisées entre les applications IA et les services externes, comme la documentation.
Chaque instance Docus inclut un serveur MCP intégré, préparant votre contenu pour l'écosystème IA plus large où n'importe quel client MCP (comme Claude, Cursor, VS Code, et autres) peut se connecter à votre documentation.
Comment Fonctionnent les Serveurs MCP
Lorsqu'un serveur MCP est connecté à un outil IA, le LLM peut décider d'utiliser les outils de votre documentation pendant la génération de réponse :
- Le LLM peut rechercher proactivement dans votre documentation pendant qu'il génère une réponse, pas seulement quand on lui demande explicitement.
- Le LLM détermine quand utiliser les outils en fonction du contexte de la conversation et de la pertinence de votre documentation.
- Chaque appel d'outil se produit pendant le processus de génération, permettant au LLM d'incorporer des informations en temps réel de votre documentation dans sa réponse.
Par exemple, si un utilisateur pose une question de code et que le LLM détermine que votre documentation est pertinente, il peut rechercher dans vos docs et inclure ces informations dans la réponse sans que l'utilisateur demande explicitement votre documentation.
Accéder à Votre Serveur MCP
Votre serveur MCP est automatiquement disponible au chemin /mcp de l'URL de votre documentation.
https://docs.example.com, l'URL de votre serveur MCP est https://docs.example.com/mcp.Désactiver le Serveur MCP
Si vous souhaitez désactiver le serveur MCP, vous pouvez le faire dans votre nuxt.config.ts :
export default defineNuxtConfig({
mcp: {
enabled: false,
},
})
Outils Intégrés
Docus fournit deux outils par défaut qui permettent à n'importe quel LLM de découvrir et lire votre documentation :
list-pages
Liste toutes les pages de documentation avec leurs titres, chemins et descriptions. Les assistants IA doivent appeler cet outil en premier pour découvrir le contenu disponible.
| Paramètre | Type | Description |
|---|---|---|
locale | string (optionnel) | Filtrer les pages par locale |
get-page
Récupère le contenu markdown complet d'une page de documentation spécifique.
| Paramètre | Type | Description |
|---|---|---|
path | string (requis) | Le chemin de la page (ex: /fr/getting-started/installation) |
Configuration
Le serveur MCP Docus utilise le transport HTTP et peut être installé dans différents assistants IA.
Claude Code
Ajoutez le serveur en utilisant la commande CLI :
claude mcp add --transport http my-docs https://docs.example.com/mcp
Cursor
Ou créez/modifiez manuellement .cursor/mcp.json à la racine de votre projet :
{
"mcpServers": {
"my-docs": {
"type": "http",
"url": "https://docs.example.com/mcp"
}
}
}
Visual Studio Code
Assurez-vous d'avoir les extensions GitHub Copilot et GitHub Copilot Chat installées.
Ou créez/modifiez manuellement le fichier .vscode/mcp.json :
{
"servers": {
"my-docs": {
"type": "http",
"url": "https://docs.example.com/mcp"
}
}
}
Windsurf
- Ouvrez Windsurf et naviguez vers Settings > Windsurf Settings > Cascade
- Cliquez sur le bouton Manage MCPs, puis sélectionnez l'option View raw config
- Ajoutez la configuration suivante :
{
"mcpServers": {
"my-docs": {
"type": "http",
"url": "https://docs.example.com/mcp"
}
}
}
Zed
- Ouvrez Zed et allez dans Settings > Open Settings
- Naviguez vers le fichier de paramètres JSON
- Ajoutez la configuration de serveur de contexte suivante :
{
"context_servers": {
"my-docs": {
"source": "custom",
"command": "npx",
"args": ["mcp-remote", "https://docs.example.com/mcp"],
"env": {}
}
}
}
Personnalisation
Puisque Docus utilise le module @nuxtjs/mcp-toolkit, vous pouvez étendre le serveur MCP avec des outils, ressources, prompts et handlers personnalisés.
Ajouter des Outils Personnalisés
Créez de nouveaux outils dans le répertoire server/mcp/tools/ :
import { z } from 'zod'
export default defineMcpTool({
description: 'Rechercher dans la documentation par mot-clé',
inputSchema: {
query: z.string().describe('La requête de recherche'),
},
handler: async ({ query }) => {
const results = await searchDocs(query)
return {
content: [{ type: 'text', text: JSON.stringify(results) }],
}
},
})
Ajouter des Ressources
Exposez des fichiers ou sources de données comme ressources MCP dans le répertoire server/mcp/resources/. La façon la plus simple est d'utiliser la propriété file :
export default defineMcpResource({
file: 'CHANGELOG.md',
metadata: {
description: 'Journal des modifications du projet',
},
})
Cela gère automatiquement la génération d'URI, la détection du type MIME et la lecture du fichier.
Ajouter des Prompts
Créez des prompts réutilisables pour les assistants IA dans le répertoire server/mcp/prompts/ :
import { z } from 'zod'
export default defineMcpPrompt({
description: 'Obtenir de l\'aide pour migrer entre versions',
inputSchema: {
fromVersion: z.string().describe('Version actuelle'),
toVersion: z.string().describe('Version cible'),
},
handler: async ({ fromVersion, toVersion }) => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Aidez-moi à migrer de la version ${fromVersion} vers ${toVersion}. Quels sont les changements breaking et les étapes à suivre ?`,
},
}],
}
},
})
Ajouter des Handlers Personnalisés
Les handlers permettent de créer des endpoints MCP séparés avec leurs propres outils, ressources et prompts. C'est utile pour exposer différentes capacités sur différentes routes.
Par exemple, vous pourriez avoir :
/mcp- Serveur MCP principal de documentation/mcp/migration- Serveur MCP dédié à l'assistance à la migration
import { z } from 'zod'
const migrationTool = defineMcpTool({
name: 'migrate-v3-to-v4',
description: 'Migrer du code de la version 3 vers la version 4',
inputSchema: {
code: z.string().describe('Le code à migrer'),
},
handler: async ({ code }) => {
// Logique de migration
return {
content: [{ type: 'text', text: migratedCode }],
}
},
})
export default defineMcpHandler({
route: '/mcp/migration',
name: 'Assistant Migration',
version: '1.0.0',
tools: [migrationTool],
})
Surcharger les Outils Intégrés
Vous pouvez remplacer les outils par défaut list-pages ou get-page en créant un outil avec le même nom dans votre projet :
import { z } from 'zod'
export default defineMcpTool({
description: 'Implémentation personnalisée de list pages',
inputSchema: {
locale: z.string().optional(),
category: z.string().optional(),
},
handler: async ({ locale, category }) => {
const pages = await getCustomPageList(locale, category)
return {
content: [{ type: 'text', text: JSON.stringify(pages) }],
}
},
})