← tous les articles

.NET

Roslyn MCP : donner aux outils d’IA un accès sémantique au code .NET

MCP peut connecter les assistants d’IA aux API de compilation de Roslyn, offrant un accès structuré aux symboles C#, aux diagnostics, aux références et aux opérations de refactoring, au lieu de s’appuyer uniquement sur le texte du code source.

Les assistants de codage basés sur l’IA peuvent lire les fichiers C# sous forme de texte, mais le texte seul ne permet pas de saisir toute la signification d’une solution .NET. Un nom de méthode peut apparaître dans plusieurs types, une classe peut être répartie entre plusieurs déclarations partielles, et la modification d’un symbole public peut affecter des projets dans toute la solution.

Roslyn comprend déjà ces relations. MCP fournit un moyen standard d’exposer cette compréhension aux outils d’IA.

Qu’est-ce que MCP ?

Model Context Protocol, ou MCP, est un standard ouvert permettant de connecter des applications d’IA à des systèmes externes. Un serveur MCP peut exposer des données, des prompts et des outils exécutables, tandis qu’un client MCP — comme un éditeur ou un assistant doté de fonctions d’IA — découvre et invoque ces capacités par l’intermédiaire d’un protocole défini. (modelcontextprotocol.io)

Cette séparation est importante. Le modèle de langage n’a pas besoin de code d’intégration personnalisé pour chaque système externe. Il peut demander à un serveur MCP quels outils sont disponibles, envoyer des paramètres structurés et recevoir des résultats structurés.

Pour le développement logiciel, un serveur MCP pourrait fournir des opérations telles que :

  • Trouver la définition d’un symbole.
  • Renvoyer les diagnostics du compilateur pour un projet.
  • Trouver toutes les références à une méthode.
  • Renommer un type dans toute une solution.
  • Analyser les dépendances ou la complexité du code.

Le modèle décide toujours quand demander une opération, mais l’opération elle-même est exécutée par un outil spécialisé.

Ce que Roslyn apporte à .NET

Roslyn est la plateforme de compilation .NET sur laquelle reposent les compilateurs C# et Visual Basic. Ses API exposent le modèle détaillé créé lorsque le compilateur traite le code source, notamment les arbres syntaxiques, les informations sémantiques, les symboles, les compilations, les diagnostics et les espaces de travail. Ces API prennent également en charge des fonctionnalités familières des IDE, telles que Find All References, Go to Definition, le renommage intelligent, les analyseurs, les corrections de code et les refactorings. (learn.microsoft.com)

La distinction entre syntaxe et sémantique est importante ici. La syntaxe décrit la structure du code source. L’analyse sémantique détermine ce que ce code signifie — par exemple, la méthode précise à laquelle une invocation fait référence ou le type représenté par un identifiant. (learn.microsoft.com)

Un assistant d’IA qui lit des fichiers peut déduire ces relations. Roslyn peut les calculer en appliquant les mêmes règles de langage que le compilateur.

Comment Roslyn et MCP fonctionnent ensemble

Un serveur MCP Roslyn joue le rôle d’adaptateur entre un client MCP et les API Roslyn. Il charge un projet ou une solution, expose certaines opérations Roslyn sous forme d’outils MCP et convertit leurs résultats en responses que le client peut utiliser.

Une interaction simplifiée pourrait se dérouler ainsi :

  1. Le développeur demande à l’assistant de renommer UserService en AccountService.
  2. L’assistant appelle un outil de renommage MCP Roslyn avec le chemin de la solution et les informations relatives au symbole.
  3. Roslyn identifie le symbole et ses références dans toute la solution.
  4. Le serveur renvoie un aperçu ou applique les modifications, selon l’outil et la configuration.

Cette approche est plus fiable qu’une série de remplacements de texte, car les références aux symboles ne sont pas équivalentes à des chaînes de caractères correspondantes. Les commentaires, les méthodes sans rapport, les surcharges, les espaces de noms, le code généré et les limites entre projets ont tous une incidence sur l’opération.

Avantages pratiques

Le premier avantage est une meilleure navigation dans le code. Roslyn peut renvoyer les définitions de symboles, les implémentations, les appelants, les références, les hiérarchies de types et les plans des documents sans obliger l’assistant à rechercher manuellement dans chaque fichier.

Le deuxième avantage tient aux diagnostics fondés sur le compilateur. Au lieu de deviner si le code généré se compile, un assistant peut demander les erreurs et avertissements réels issus du modèle du projet.

Le troisième avantage est un refactoring plus sûr. Certaines implémentations proposent le renommage à l’échelle de la solution, la modification des espaces de noms, l’extraction de méthodes, la mise en forme et des modes d’aperçu. Prévisualiser un diff avant d’écrire dans les fichiers est particulièrement utile lorsqu’un client d’IA peut invoquer des opérations automatiquement. (github.com)

Enfin, MCP crée une interface réutilisable. L’intégration de Roslyn reste dans le serveur, tandis que différents clients compatibles peuvent utiliser le même ensemble d’outils.

Implémentations actuelles de Roslyn MCP

Roslyn MCP désigne actuellement une approche d’intégration mise en œuvre par différents projets communautaires, et non un outil uniforme.

RoslynMcpServer se concentre sur le refactoring, la navigation, l’analyse, la génération et les opérations de conversion de code. Ses outils comprennent le suivi des références à l’échelle de la solution et la prise en charge de l’aperçu. (github.com)

RoslynMCP fournit des opérations de recherche de symboles avec caractères génériques, de références, d’informations sur les symboles, d’analyse des dépendances et d’analyse de la complexité. (github.com)

La Roslyn MCP Extension adopte une autre approche en utilisant l’espace de travail actif de Visual Studio. Cela lui permet de fonctionner avec l’état actuel de l’éditeur, y compris les modifications non enregistrées, plutôt que de charger uniquement les fichiers stockés sur le disque. (marketplace.visualstudio.com)

Une discussion Roslyn est également en cours au sujet des intégrations d’IA fondées sur le compilateur. Cette discussion comporte un contrepoint important : MCP n’est pas la seule couche d’intégration possible, car les outils de développement basés sur l’IA peuvent aussi communiquer avec les services de langage par l’intermédiaire de LSP. (github.com)

Ce qu’il faut évaluer avant de l’adopter

Un serveur MCP Roslyn ne rend pas automatiquement correcte chaque modification générée par l’IA. Sa valeur dépend des opérations qu’il expose, de la manière dont il charge l’espace de travail, de la possibilité de prévisualiser les modifications et de la façon dont les erreurs et les autorisations sont gérées.

Il est également nécessaire d’examiner les actions destructrices, en particulier les refactorings et la suppression de code mort. La réflexion, l’injection de dépendances, la sérialisation, XAML, la génération de code source et les conventions des frameworks peuvent créer des relations que l’analyse statique n’identifie pas toujours complètement.

La valeur pratique de Roslyn MCP est donc bien précise : il donne à un assistant d’IA accès à des informations structurées et fondées sur le compilateur concernant une base de code .NET. Il ne remplace pas les builds, les tests, la revue de code ni le jugement du développeur, mais il peut fournir une base technique plus solide que le seul texte du code source.

Références