Jamdesk Documentation logo

Serveur MCP

Chaque site Jamdesk inclut un serveur MCP intégré. Les assistants IA comme Claude et Cursor peuvent rechercher et lire votre documentation directement.

Chaque site Jamdesk inclut un serveur MCP (Model Context Protocol) intégré. Alors que llms.txt donne aux outils IA un instantané statique de votre documentation, MCP leur permet de rechercher et d'interroger de façon interactive — utile lorsque les agents IA doivent trouver des réponses précises plutôt que de tout lire.

Qu'est-ce que MCP ?

Le Model Context Protocol est une norme ouverte qui permet aux outils IA d'accéder à des sources de données externes. Votre documentation Jamdesk expose deux outils via MCP :

OutilObjectif
searchDocsRecherche dans la documentation par mot-clé, renvoie des résultats classés
getPageRécupère une page en Markdown complet

URL de votre endpoint

Votre endpoint MCP est l'URL de votre documentation à laquelle /_mcp est ajouté. Si vous avez un domaine personnalisé actif, utilisez-le :

ConfigurationEndpoint
Domaine personnalisé sur docs.acme.comhttps://docs.acme.com/_mcp
Sans domaine personnaliséhttps://my-project.jamdesk.app/_mcp

Privilégiez l'endpoint du domaine personnalisé dès qu'il est connecté — il conserve votre image de marque dans chaque URL que voient les outils IA, et il continue de fonctionner même si vous masquez ensuite votre sous-domaine .jamdesk.app avec Domaine personnalisé uniquement.

Configuration rapide

Ajoutez votre documentation comme serveur MCP :

claude mcp add --transport http my-docs https://docs.acme.com/_mcp

Remplacez docs.acme.com par le domaine de votre documentation — ou par my-project.jamdesk.app si vous n'avez pas connecté de domaine personnalisé.

Désormais, lorsque vous interrogez Claude à propos de votre projet, il peut rechercher et lire votre documentation directement.

Outils disponibles

searchDocs

Recherchez dans votre documentation et obtenez des résultats classés.

Paramètres :

ParamètreTypeRequisDescription
querystringOuiTermes de recherche (par ex. « authentification », « premiers pas »)
limitnumberNonNombre maximum de résultats (par défaut : 10, max : 50)
typestringNonFiltre par type de contenu : all, api, guide, quickstart, help, component

Exemple de requête :

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "searchDocs",
    "arguments": {
      "query": "authentication",
      "limit": 5
    }
  }
}

Exemple de réponse :

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{
      "type": "text",
      "text": "{\"query\":\"authentication\",\"total\":1,\"results\":[{\"title\":\"Authentication\",\"description\":\"How to authenticate API requests\",\"url\":\"/docs/api/authentication\",\"type\":\"api\",\"score\":0.95}]}"
    }]
  }
}

getPage

Récupère une page de documentation en Markdown. Les tableaux, les listes et les blocs de code restent intacts, au lieu de courts extraits. Passez l'url renvoyée par searchDocs dans url, ou le chemin de la page dans slug. Les pages de plus de 80 000 caractères sont coupées à cette longueur, avec un renvoi vers l'URL .md de la page pour la suite.

Paramètres :

ParamètreTypeRequisDescription
urlstringurl ou slugL'url d'un résultat searchDocs (par ex. /docs/api/authentication). Les URL complètes et les liens .md fonctionnent aussi.
slugstringurl ou slugLe chemin de la page sans le préfixe /docs (par ex. api/authentication)

Envoyez l'un des deux. Si vous envoyez les deux, slug est utilisé.

Exemple de requête :

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "getPage",
    "arguments": {
      "url": "/docs/api/authentication"
    }
  }
}

Exemple de réponse :

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{
      "type": "text",
      "text": "{\"title\":\"Authentication\",\"description\":\"How to authenticate\",\"content\":\"## Overview\\n\\nUse API keys to authenticate...\",\"url\":\"/docs/api/authentication\"}"
    }]
  }
}

Tester l'endpoint

Vous pouvez tester votre endpoint MCP directement avec curl :

# List available tools
curl -X POST https://docs.acme.com/_mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# Search for content
curl -X POST https://docs.acme.com/_mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"searchDocs","arguments":{"query":"getting started"}}}'

Sites protégés par connexion

Si votre site utilise l'authentification par mot de passe ou par JWT, le serveur MCP a besoin d'une clé API du projet. Créez-en une dans Project Settings > API Keys et envoyez-la dans un en-tête :

claude mcp add --transport http my-docs https://docs.example.com/_mcp \
  --header "Authorization: Bearer jd_live_..."

Avec la clé, un client MCP peut rechercher et lire les pages indexables du site, le même ensemble que couvre la recherche du site. Les pages réservées à des groupes ne sont jamais disponibles via MCP, avec ou sans clé. Les pages masquées et les pages avec search: false sont omises, sauf si vous les avez rendues recherchables. Traitez la clé comme un mot de passe et révoquez-la dans le dashboard en cas de fuite.

La même clé ouvre aussi les URL de pages .md, llms.txt et llms-full.txt. Consultez llms.txt et Source Markdown. La clé n'ouvre jamais les pages HTML ni le chat IA, qui exigent toujours une connexion.

Sans clé, le serveur répond par un 401 avec un corps JSON qui explique comment en ajouter une. Une clé d'un autre projet est rejetée. Les codes d'erreur sont :

StatuterrorSignification
401auth_requiredAucune clé n'a été envoyée.
401invalid_api_keyLa clé n'est pas valide pour ce site.
503auth_unavailableLa clé n'a pas pu être vérifiée. Réessayez après le nombre de secondes indiqué dans l'en-tête Retry-After.

Fonctionnement

L'endpoint MCP utilise un index de recherche construit en même temps que votre documentation :

  • Classement BM25 - Classe les résultats par pertinence
  • Correspondance floue - Gère les fautes de frappe (tolérance de 1 caractère)
  • Pondération des champs - Les titres et les en-têtes de section sont pondérés plus fortement que le contenu du corps
  • Filtrage par type - Filtre les résultats par type de contenu (API, guide, etc.)

L'index est reconstruit à chaque déploiement.

Limites de débit

Les requêtes sans clé API sont limitées à environ 60 par minute et par adresse IP. Cela suffit pour un usage normal par un assistant IA.

Sur un site protégé par connexion, les requêtes authentifiées par une clé partagent une limite de 120 par minute et par clé. Les appels MCP, les requêtes de pages .md et celles de llms.txt ou llms-full.txt comptent toutes. L'API de recherche garde sa propre limite de 60 par minute et par clé.

Au-delà d'une limite, la réponse est un 429 avec Retry-After: 60.

Dépannage

Vérifiez que l'URL de votre endpoint est correcte et accessible :

curl https://docs.acme.com/_mcp

Vous devriez voir une réponse JSON contenant les informations du serveur. Si ce n'est pas le cas, vérifiez que votre documentation a été buildée au moins une fois.

L'index de recherche est généré au moment du build. Si vous avez récemment ajouté du contenu, déclenchez un nouveau build depuis votre dashboard Jamdesk pour mettre à jour l'index.

Passez l'url d'un résultat searchDocs pour éviter les erreurs de slug. Si vous envoyez un slug, assurez-vous que le slug correspond exactement au chemin de votre page (sans l'extension .mdx). Par exemple, si votre page se trouve à api/authentication.mdx, utilisez api/authentication comme slug.

Le site utilise l'authentification par mot de passe ou par JWT, donc la requête a besoin d'une clé API du projet. Ajoutez l'en-tête Authorization: Bearer avec une clé de Project Settings > API Keys. Voir Sites protégés par connexion.

Et ensuite ?

Rédiger avec l'IA

Conseils pour utiliser des outils IA afin de rédiger la documentation

llms.txt

Index de pages généré automatiquement pour les outils IA