.NET
Roslyn MCP: dando às ferramentas de AI acesso semântico ao código .NET
O MCP pode conectar assistentes de AI às APIs de compilador do Roslyn, fornecendo acesso estruturado a símbolos C#, diagnósticos, referências e operações de refatoração, em vez de depender apenas do texto do código-fonte.
Assistentes de programação com AI podem ler arquivos C# como texto, mas o texto, por si só, não fornece todo o significado de uma solução .NET. O nome de um método pode aparecer em vários tipos, uma classe pode estar dividida entre declarações parciais, e a alteração de um símbolo público pode afetar projetos em toda a solução.
O Roslyn já entende essas relações. O MCP oferece uma forma padronizada de disponibilizar esse entendimento a ferramentas de AI.
O que é MCP?
O Model Context Protocol, ou MCP, é um padrão aberto para conectar aplicações de AI a sistemas externos. Um MCP server pode disponibilizar dados, prompts e ferramentas executáveis, enquanto um MCP client — como um editor ou assistente com recursos de AI — descobre e invoca esses recursos por meio de um protocolo definido. (modelcontextprotocol.io)
Essa separação é importante. O modelo de linguagem não precisa de código de integração personalizado para cada sistema externo. Ele pode perguntar a um MCP server quais ferramentas estão disponíveis, enviar parâmetros estruturados e receber resultados estruturados.
Para o desenvolvimento de software, um MCP server poderia fornecer operações como:
- Encontrar a definição de um símbolo.
- Retornar diagnósticos do compilador para um projeto.
- Encontrar todas as referências a um método.
- Renomear um tipo em toda uma solução.
- Analisar dependências ou a complexidade do código.
O modelo ainda decide quando solicitar uma operação, mas a operação em si é executada por uma ferramenta especializada.
O que o Roslyn oferece ao .NET
O Roslyn é a plataforma de compiladores do .NET por trás dos compiladores C# e Visual Basic. Suas APIs expõem o modelo detalhado criado enquanto o compilador processa o código-fonte, incluindo árvores sintáticas, informações semânticas, símbolos, compilações, diagnósticos e workspaces. Essas APIs também oferecem suporte a recursos conhecidos das IDEs, como Find All References, Go to Definition, renomeação inteligente, analisadores, correções de código e refatorações. (learn.microsoft.com)
A distinção entre sintaxe e semântica é importante nesse contexto. A sintaxe descreve a estrutura do código-fonte. A análise semântica determina o que esse código significa — por exemplo, a qual método específico uma invocação se refere ou qual tipo um identificador representa. (learn.microsoft.com)
Um assistente de AI que lê arquivos pode inferir essas relações. O Roslyn pode calculá-las usando as mesmas regras de linguagem usadas pelo compilador.
Como o Roslyn e o MCP trabalham juntos
Um Roslyn MCP server atua como um adaptador entre um MCP client e as APIs do Roslyn. Ele carrega um projeto ou uma solução, disponibiliza operações selecionadas do Roslyn como ferramentas MCP e converte os resultados delas em responses que o client pode usar.
Uma interação simplificada poderia ser assim:
- O desenvolvedor pede ao assistente que renomeie
UserServiceparaAccountService. - O assistente chama uma ferramenta de renomeação de um Roslyn MCP com o caminho da solução e as informações do símbolo.
- O Roslyn identifica o símbolo e suas referências em toda a solução.
- O server retorna uma visualização prévia ou aplica as alterações, dependendo da ferramenta e da configuração.
Isso é mais confiável do que uma sequência de substituições de texto porque referências de símbolos não são o mesmo que strings correspondentes. Comentários, métodos não relacionados, sobrecargas, namespaces, código gerado e limites entre projetos afetam a operação.
Benefícios práticos
O primeiro benefício é a melhor navegação pelo código. O Roslyn pode retornar definições de símbolos, implementações, chamadores, referências, hierarquias de tipos e estruturas de documentos sem exigir que o assistente pesquise manualmente todos os arquivos.
O segundo são os diagnósticos respaldados pelo compilador. Em vez de tentar adivinhar se o código gerado compila, um assistente pode solicitar erros e avisos reais do modelo do projeto.
O terceiro é a refatoração mais segura. Algumas implementações oferecem renomeação em toda a solução, alterações de namespace, extração de métodos, formatação e modos de visualização prévia. Visualizar um diff antes de gravar arquivos é particularmente útil quando um AI client pode invocar operações automaticamente. (github.com)
Por fim, o MCP cria uma fronteira reutilizável. A integração com o Roslyn permanece no server, enquanto diferentes clients compatíveis podem consumir o mesmo conjunto de ferramentas.
Implementações atuais do Roslyn MCP
Atualmente, Roslyn MCP descreve uma abordagem de integração implementada por diferentes projetos da comunidade, e não uma única ferramenta uniforme.
O RoslynMcpServer concentra-se em operações de refatoração, navegação, análise, geração e conversão de código. Suas ferramentas incluem rastreamento de referências em toda a solução e suporte à visualização prévia. (github.com)
O RoslynMCP fornece operações para pesquisas de símbolos com curingas, referências, informações de símbolos, análise de dependências e análise de complexidade. (github.com)
A Roslyn MCP Extension adota outra abordagem ao usar o workspace ativo do Visual Studio. Isso permite que ela trabalhe com o estado atual do editor, incluindo alterações não salvas, em vez de carregar apenas os arquivos armazenados em disco. (marketplace.visualstudio.com)
Também há uma discussão sobre o Roslyn em andamento a respeito de integrações de AI respaldadas pelo compilador. A discussão inclui um contraponto importante: o MCP não é a única camada de integração possível, pois ferramentas de desenvolvimento com AI também podem se comunicar com serviços de linguagem por meio do LSP. (github.com)
O que avaliar antes da adoção
Um Roslyn MCP server não torna automaticamente correta toda alteração gerada por AI. Seu valor depende das operações que ele disponibiliza, de como carrega o workspace, de as alterações poderem ou não ser visualizadas previamente e de como os erros e as permissões são tratados.
Também é necessário revisar ações destrutivas, especialmente refatorações e remoção de código morto. Reflection, injeção de dependência, serialização, XAML, geração de código-fonte e convenções de frameworks podem criar relações que a análise estática nem sempre identifica por completo.
Portanto, o valor prático do Roslyn MCP é específico: ele dá a um assistente de AI acesso a informações estruturadas e respaldadas pelo compilador sobre uma base de código .NET. Ele não substitui builds, testes, revisão de código nem o julgamento do desenvolvedor, mas pode oferecer uma base técnica mais sólida do que apenas o texto do código-fonte.
Referências
- What is the Model Context Protocol (MCP)? - Model Context Protocol — modelcontextprotocol.io
- The .NET Compiler Platform SDK (Roslyn APIs) - C# | Microsoft Learn — learn.microsoft.com
- Use the .NET Compiler Platform SDK syntax model - C# | Microsoft Learn — learn.microsoft.com
- GitHub - JoshuaRamirez/RoslynMcpServer: Model Context Protocol server for Roslyn-powered C# refactoring operations · GitHub — github.com
- GitHub - carquiza/RoslynMCP: A Model Context Protocol (MCP) server that provides C# code analysis capabilities using Microsoft Roslyn · GitHub — github.com
- Roslyn MCP Extension - Visual Studio Marketplace — marketplace.visualstudio.com
- Why we need Roslyn MCP? · dotnet roslyn · Discussion #82187 · GitHub — github.com