Modèle / jeu de données
MicrosoftDocs/mcp avatar
MicrosoftDocs/mcp

Microsoft Learn MCP Server : brancher un agent sur la documentation Microsoft officielle

Official Microsoft Learn MCP Server and CLI tool – powering LLMs and AI agents with real-time, trusted Microsoft docs & code samples.

1 889 étoiles248 forksTypeScriptCC-BY-4.0

En bref

De quoi s’agit-il ?
Le dépôt MicrosoftDocs/mcp expose un serveur MCP distant à l'adresse https://learn.microsoft.com/api/mcp et une CLI npm, @microsoft/learn-cli, qui donnent accès aux mêmes outils depuis un terminal. Voici ce que le README décrit réellement, et où cela coince.
À qui s’adresse-t-il ?
Adoptez ce serveur si votre agent travaille sur Azure, .NET ou Microsoft Foundry et que vous voulez remplacer la recherche web par une source unique. Passez votre chemin si vos projets sont hors écosystème Microsoft, ou si vous avez besoin d'un accès navigateur ou d'une API REST classique : l'endpoint renvoie 405 hors client MCP conforme.
Puis-je l’utiliser commercialement ?
Oui, en citant les auteurs. CC-BY-4.0 autorise l’usage commercial à condition de créditer les auteurs et d’indiquer vos modifications. Elle est conçue pour les contenus créatifs : vérifiez comment elle s’applique au code.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 6 jours.
En quel langage est-il écrit ?
Principalement TypeScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème visé : un agent qui invente des méthodes Azure

Le README ouvre sur une promesse directe : « Stop AI Hallucinations ». Le raisonnement est simple. Un assistant qui répond à partir de ses données d'entraînement produit parfois des méthodes de SDK inexistantes ou des noms de packages fantaisistes. Une recherche web classique corrige mal le tir, parce qu'elle peut ramener des blogs tiers, parfois obsolètes, parfois malveillants. Le serveur MCP de Microsoft Learn propose une troisième voie : interroger uniquement la documentation de première partie de Microsoft.

Le public visé est précis. Ce sont les développeurs qui écrivent du code Azure, .NET ou lié à Microsoft Foundry et qui utilisent un agent de codage au quotidien. Les exemples de requêtes du README le confirment : commandes Azure CLI pour créer une Container App avec identité managée, disponibilité d'un modèle dans les régions européennes, implémentation de IHttpClientFactory dans une API minimale .NET 8, code Python pour une évaluation de harms avec le SDK Azure AI Foundry. Autrement dit, des questions dont la réponse change avec le temps et où une réponse périmée coûte du temps de débogage.

Pour un projet hors de cet écosystème, l'outil n'a rien à apporter. La documentation interrogée est celle de Microsoft, pas la vôtre, pas celle d'un framework tiers.

Un endpoint distant, trois outils, aucun état local

L'architecture tient en une ligne : https://learn.microsoft.com/api/mcp. C'est un serveur MCP distant, accessible en Streamable HTTP. Il n'y a rien à héberger, rien à indexer, aucun index vectoriel à construire. Le README ne documente pas la mécanique interne de recherche, seulement la surface exposée.

Cette surface compte trois outils. microsoft_docs_search prend un paramètre query et effectue une recherche sémantique dans la documentation technique officielle. microsoft_docs_fetch prend un paramètre url et convertit une page de documentation en markdown. microsoft_code_sample_search prend un query et un language optionnel, et cherche des extraits de code officiels Microsoft ou Azure. Le troisième outil est celui qui distingue ce serveur d'un simple moteur de recherche documentaire : il cible des exemples exécutables, pas de la prose.

Le point à retenir est le choix de la conversion markdown pour microsoft_docs_fetch. Un agent consomme du texte structuré plus efficacement que du HTML avec navigation et scripts. Le README ne détaille pas le pipeline de conversion, donc on ne sait pas comment sont traités les onglets de code, les tableaux ou les images. C'est une zone d'ombre assumée.

La configuration standard tient dans un objet JSON avec une clé servers, une entrée microsoft-learn, un type http et l'URL. Rien d'autre. Pas de clé d'API, pas de compte, pas d'inscription.

Installation : une URL, une CLI, ou une découverte par agent

Deux chemins d'accès coexistent. Le premier passe par le client MCP. Les badges du README pointent vers une installation en un clic dans VS Code et VS Code Insiders, qui écrit la configuration à votre place. Pour les autres clients, il faut coller l'objet JSON standard.

Le second chemin est la CLI, publiée sur npm sous le nom @microsoft/learn-cli. Elle donne accès aux mêmes outils sans client MCP. Exécution ponctuelle sans installation :

npx @microsoft/learn-cli search "azure functions timeout"

Ou installation globale, qui expose la commande mslearn :

npm install -g @microsoft/learn-cli mslearn search "azure functions timeout"

Il y a une distinction que le README prend la peine de préciser et qui a son importance : installer le paquet npm n'installe pas la découverte par l'agent. C'est une étape séparée. La commande mslearn setup --cli installe un skill orienté CLI pour les écosystèmes supportés par les plugins du dépôt, à savoir GitHub Copilot, Claude Code et Codex.

La portée par défaut est le profil utilisateur. L'option --project cible le dépôt courant. Les cibles explicites --copilot, --claude et --codex remplacent la détection automatique et peuvent être combinées, par exemple mslearn setup --cli --copilot --claude --codex. Pour retirer uniquement le contenu de découverte géré, la commande symétrique est mslearn remove --cli, avec les mêmes options de portée et de cible.

Les emplacements sont documentés noir sur blanc : ~/.copilot/skills/ et .github/skills/ pour GitHub Copilot, ~/.claude/skills/ et .claude/skills/ pour Claude Code, ~/.agents/skills/ et .agents/skills/ pour Codex. Sans cible explicite, setup détecte les agents installés à partir de ces répertoires connus, tandis que remove ne détecte que les agents portant des artefacts de découverte gérés par la CLI. Le README précise aussi une limite nette de ce flux : il ne configure pas MCP et n'installe aucun agent hors de ces écosystèmes, Cursor étant cité en exemple.

Le budget de tokens et l'endpoint compatible OpenAI

Deux fonctionnalités sont explicitement étiquetées expérimentales, et le README prévient qu'elles peuvent changer. La première est un endpoint compatible OpenAI, à l'adresse https://learn.microsoft.com/api/mcp/openai-compatible, destiné aux applications qui ont besoin de la compatibilité avec les modèles OpenAI Deep Research et qui suit la spécification MCP d'OpenAI.

La seconde est le contrôle du budget de tokens. On ajoute un paramètre de requête maxTokenBudget à l'URL de l'endpoint :

https://learn.microsoft.com/api/mcp?maxTokenBudget=2000

Le mécanisme annoncé est une troncature du contenu des réponses de l'outil de recherche pour respecter le budget demandé. C'est un levier utile quand on paie au token et qu'une recherche ramène plusieurs pages. Mais tronquer n'est pas résumer. Le README ne dit pas ce qui est coupé en premier, ni si la troncature préserve les blocs de code. Sur une requête qui a besoin d'un exemple complet, un budget trop serré peut donc produire exactement le genre de réponse partielle qu'on cherchait à éviter. À vérifier sur vos propres requêtes avant de fixer une valeur par défaut dans une configuration partagée.

Le README renvoie vers GitHub Discussions pour les retours sur ces deux fonctionnalités, ce qui indique où se fait le suivi, pas ce qui est stabilisé.

Un endpoint qui refuse le navigateur, et une intégration partielle

La limitation la plus concrète est dans une note du README : l'URL est prévue pour un client MCP conforme via Streamable HTTP. Elle ne supporte pas l'accès direct depuis un navigateur et peut renvoyer une erreur 405 Method Not Allowed en cas d'accès manuel. Concrètement, vous ne pouvez pas ouvrir l'endpoint dans un onglet pour voir ce qu'il renvoie, ni le tester avec un simple curl sans respecter le protocole. Le débogage passe donc par le client.

Pour construire votre propre client, le README impose de suivre des directives obligatoires dans la section Building a Custom Client, qu'il présente comme nécessaires pour une implémentation résiliente et supportée. Le contenu de ces directives n'apparaît pas dans l'extrait fourni, donc je ne peux pas dire ce qu'elles exigent. C'est une dépendance à la documentation complète du dépôt, pas un détail.

Deuxième limite, déjà évoquée mais qui mérite d'être isolée : le flux mslearn setup --cli ne couvre que GitHub Copilot, Claude Code et Codex. Si votre équipe travaille dans Cursor, cette commande ne vous servira pas, et le README le dit sans détour. Vous restez sur la configuration MCP manuelle.

Troisième point, celui du périmètre. Le serveur ne cherche que dans la documentation Microsoft. Sur une question d'architecture qui mêle Azure, PostgreSQL et un framework communautaire, une partie de la réponse reste hors de portée. Ce n'est pas un défaut de conception, c'est la définition du produit, mais cela signifie qu'il complète une recherche web plutôt qu'il ne la remplace.

Ce que cela change face à un RAG maison sur la documentation Microsoft

L'alternative la plus évidente est de construire son propre pipeline de récupération : aspirer la documentation Microsoft, la découper, calculer des embeddings, maintenir un index vectoriel, puis exposer un outil de recherche à l'agent. Beaucoup d'équipes ont fait ce choix avant que ce serveur existe.

La différence d'approche est structurelle. Un RAG maison vous donne la maîtrise du découpage, du classement et du filtrage, ce qui compte si vous voulez restreindre la recherche à un sous-ensemble précis, par exemple uniquement les pages Azure Functions. En échange, vous héritez de la fraîcheur. La documentation Microsoft évolue en continu, et un index interne se périme entre deux réindexations. Le serveur MCP, lui, interroge la source au moment de la requête. Le README ne décrit pas de fréquence de rafraîchissement parce qu'il n'y en a pas besoin : il n'y a pas d'index local.

Le second écart est le coût d'exploitation. Un RAG maison implique un stockage vectoriel, une tâche de réindexation et une surveillance. Ici, il n'y a qu'une URL à déclarer. Pour une petite équipe, cet arbitrage penche clairement du côté du serveur distant. Pour une organisation qui a déjà un pipeline de récupération validé et des besoins de filtrage fins, le remplacement n'a rien d'évident.

Un troisième élément entre en jeu : microsoft_code_sample_search. Un index maison sur du texte de documentation remonte rarement des extraits de code bien formés, parce que les pages les mélangent à la prose. Un outil dédié à cette tâche change la qualité des réponses pour les questions de type « montre-moi comment faire ».

Maintenance, licence et ce que CC-BY-4.0 implique ici

Le dépôt n'est pas archivé et le dernier push indiqué est le 10 septembre 2026. Aucune release n'a été récupérée dans les métadonnées fournies, ce qui n'est pas surprenant pour un dépôt dont la valeur principale est un service distant et un paquet npm publié séparément. Le README mentionne des fonctionnalités expérimentales en développement actif, donc attendez-vous à des changements de surface sur l'endpoint compatible OpenAI et sur maxTokenBudget.

Côté mise à jour, deux objets distincts vivent leur vie. Le serveur MCP distant évolue sans action de votre part : vous ne mettez rien à jour, vous constatez les changements. La CLI, elle, est un paquet npm. Si vous l'installez globalement, c'est à vous de la rafraîchir. Si vous passez par npx, vous récupérez la version publiée à chaque exécution, ce qui supprime la question de la mise à jour mais introduit une dépendance au registre npm à chaque appel.

La licence du dépôt est CC-BY-4.0. C'est une licence de contenu, pas une licence logicielle classique, ce qui est cohérent avec un dépôt qui héberge surtout de la documentation et des définitions de plugins. Elle impose le crédit. Le paquet npm @microsoft/learn-cli est distribué séparément et peut porter ses propres conditions, que le README ne détaille pas. Si vous redistribuez du contenu issu de microsoft_docs_fetch, la question du crédit se pose, et je ne peux pas trancher à votre place : lisez les termes exacts plutôt que de vous fier à l'étiquette CC-BY-4.0 affichée sur le dépôt.

Conclusion éditoriale

Adoptez ce serveur si votre agent travaille sur Azure, .NET ou Microsoft Foundry et que vous voulez remplacer la recherche web par une source unique. Passez votre chemin si vos projets sont hors écosystème Microsoft, ou si vous avez besoin d'un accès navigateur ou d'une API REST classique : l'endpoint renvoie 405 hors client MCP conforme. Avant de vous engager, vérifiez deux choses concrètes : que votre client parle bien Streamable HTTP, et le comportement réel de maxTokenBudget sur vos requêtes les plus longues.

Sources officielles

  1. Issues
  2. License: CC-BY-4.0
  3. MicrosoftDocs/mcp on GitHub
  4. Project website
  5. README
Notes de la communauté

Notes de la communauté