Msvc.Info

VS MCP Server — Panoramica del Progetto & Stime di Sviluppo

Cos'è

Un'estensione per Visual Studio 2022 che esegue un server MCP (Model Context Protocol) all'interno di Visual Studio, dando agli assistenti AI di coding accesso in tempo reale alla comprensione semantica di Roslyn del codice sorgente — lo stesso motore che alimenta IntelliSense.

Invece di fare grep alla cieca sui file, gli strumenti AI ottengono accesso strutturato e semantico alla struttura della soluzione, ricerca simboli, alberi di ereditarietà, refactoring, esecuzione build/test e contesto dell'editor — tutto attraverso un protocollo standardizzato con risparmio del 70–90% sui token grazie a formati di output compatti.

20 Tool MCP 3 Trasporti 4 Progetti 188 Test .NET 4.7.2 + .NET 8

Architettura

graph TB
    subgraph VS["Visual Studio 2022"]
        EXT["Extension Entry\nPacchetto VSIX"]
        HOST["MCP Server Host\navvia · ferma · riavvia"]
        SDK["MCP SDK Server\nModelContextProtocol"]
        SETTINGS["Interfaccia Impostazioni\nToolWindow + XAML"]
        STORE[("Impostazioni JSON\nper-soluzione .mcp/")]

        EXT --> HOST
        EXT --> SETTINGS
        HOST --> SDK
        SETTINGS --> STORE
    end

    subgraph TOOLS["20 Tool MCP"]
        NAV["Navigazione\nSolutionTree · Outline\nProjectRefs"]
        SYM["Ricerca Simboli\nFind · Definition · Usages\nInheritance · Callers"]
        EDIT["Contesto Editor\nActiveFile · Selection"]
        CMD["Comandi\nBuild · Clean · AsyncTests"]
        PATH["Traduzione Percorsi\nWindows · WSL · URI"]
        REF["Refactoring\nRename · Format"]
    end

    SDK --> TOOLS
    TOOLS -.->|"Roslyn API"| ROSLYN[("Roslyn\nWorkspace")]
    TOOLS -.->|"DTE API"| DTE[("VS DTE\nServizi")]

    subgraph TRANSPORT["Trasporti"]
        HTTP["HTTP\nHttpListener\nporta 3001"]
        SSE["SSE\nServer-Sent Events"]
        STDIO["Stdio Bridge\n.NET 8 Console"]
    end

    HOST --> HTTP
    HOST --> SSE
    STDIO -->|"HTTP"| HTTP

    CC["AI Coding CLI"] -->|"HTTP"| HTTP
    GEM["Gemini CLI / Codex"] -->|"HTTP"| HTTP
    CD["AI Desktop App"] -->|"stdio"| STDIO
    OTHER["Aider · Cline\nWindsurf · OpenCode"] -->|"HTTP/SSE"| HTTP
  

Struttura della Soluzione

ProgettoTipoScopo
Msvc.Info.NET 4.7.2 VSIXHost dell'estensione, 20 tool, trasporti, comandi, UI impostazioni (34 file)
Msvc.Info.Core.NET 4.7.2 LibraryLogica condivisa — impostazioni, traduzione percorsi, parser TRX, modelli, interfacce (23 file)
Msvc.Info.StdioBridge.NET 8 ConsoleBridge stdio-to-HTTP per AI desktop app (1 file)
Msvc.Info.Tests.NET 8 xUnit188 test unitari con Moq (17 file)

Stima dei Tempi di Sviluppo

Quanto impiegherebbe un super senior developer .NET a costruire tutto da zero, scrivendo tutto il codice a mano?

Dettaglio per Fase

#FaseGiorniCosa Comporta
0 Ambiente + Ricerca 2 Installare VS2022 + workload Extensibility + .NET SDK. Leggere le specifiche MCP. Studiare il nuovo modello di estensibilità VS (VisualStudio.Extensibility). Capire le API Roslyn workspace. Prototipare un'estensione “hello world”.
1 Scaffolding + Shell dell'Estensione 1 Creare la struttura a 4 progetti. Entry point dell'estensione. Comandi di menu (Start/Stop/Settings). Registrazione DI. Logging con Serilog.
2 Server MCP + Trasporto HTTP 2 Integrare MCP SDK NuGet. Trasporto HttpListener custom (l'SDK MCP non ne ha uno per .NET 4.7.2). Ciclo di vita del server: avvio/arresto/riavvio. Riutilizzo singleton tra riavvii. Primo tool che risponde a un client MCP reale.
3 Tool di Navigazione 2 Astrazione IVsWorkspaceAccessor su Roslyn. GetSolutionTree (gerarchia soluzione/progetti). GetDocumentOutline (classi, metodi, proprietà via syntax tree Roslyn). GetProjectReferences. Servizio traduzione percorsi (Windows/WSL/URI). Tool TranslatePath.
4 Tool Ricerca Simboli 3 Fase più pesante — la superficie API di Roslyn è enorme. FindSymbols (SymbolFinder). FindSymbolDefinition. FindSymbolUsages. GetSymbolAtLocation. GetInheritance (tipi base, derivati, interfacce). GetMethodCallers + GetMethodCalls (gerarchia chiamate). Formatter output compatto per efficienza token.
5 Contesto Editor + Comandi Build 2 Accessor editor basato su DTE. GetActiveFile, GetSelection, CheckSelection. ExecuteCommand (build/clean via API VS DTE SolutionBuild). Troncamento output per log di build grandi.
6 Esecuzione Test Asincrona 2 Runner processo esterno (dotnet test). Parser file risultati TRX (XML deterministico). Workflow asincrono: start/status/stop. Reportistica status efficiente in token (soppressione rumore di build).
7 Sistema Impostazioni + UI 2 Store impostazioni JSON locale alla soluzione (.mcp/mcpserver.settings.json). McpSettingsProvider con cache in-memory + eventi di modifica. ToolWindow con RemoteUserControl (XAML). Configurazione porta, radio button formato percorsi, 7 checkbox gruppi tool. Filtraggio lista tool a livello MCP.
8 Trasporto SSE + Stdio Bridge 1 Variante trasporto SSE (Server-Sent Events). App console .NET 8 come bridge stdio-to-HTTP per compatibilità AI desktop app.
9 Tool Refactoring + Analisi 1 RenameSymbol (rename Roslyn su tutta la soluzione). FormatDocument (motore formattazione VS). SetLogLevel + GetLoggingStatus (LevelSwitch Serilog).
10 Testing 2 188 test unitari che coprono: impostazioni (30), comandi (19), trasporti (9), filtri tool (4), traduzione percorsi, parser TRX. Moq per tutte le astrazioni dei servizi VS. Test di integrazione manuale con client AI reali.
11 Rifinitura + Pubblicazione 1 Ottimizzazione output compatto (riduzione 70–90% token). Packaging VSIX. Pubblicazione su VS Marketplace. README con configurazione client per 8+ strumenti AI.
TOTALE 21 ~4 settimane lavorative

Dove Va Realmente il Tempo

Implementazione
45%
Ricerca / Lookup API
25%
Debug problemi VS
20%
Testing + stabilizzazione
10%

Fattori di Rischio

RischioImpattoProbabilità
Lacune nel nuovo modello Extensibility VS (nessuna API StatusBar, limitazioni XAML, nessun converter) +1–2 giorni di workaround Alta — ci siamo passati
Trasporto HttpListener non presente nell'SDK MCP (scritto custom da zero) +1–2 giorni Alta — ci siamo passati
Limitazioni .NET 4.7.2 (no proprietà init, API moderne mancanti) +0.5 giorni sparsi Media
Complessità API Roslyn per l'analisi della gerarchia delle chiamate +1 giorno Media
Problemi packaging VSIX (bug telemetria, cache manifest, crash VsixPublisher) +0.5 giorni Media

Cosa Cambia con l'Assistenza AI

ScenarioMoltiplicatoreTotale
Codice manuale + AI solo per ricerche (questa stima) 1x ~21 giorni lavorativi (~4 settimane)
Realistico (alcune API VS non funzionano come documentato, rabbit hole) 1.3x ~27 giorni (~5.5 settimane)
Con assistenza AI al coding (AI assistant scrive ~90% del codice) 0.4x ~8–10 giorni (~2 settimane)

Osservazioni Chiave

  1. La ricerca è il costo nascosto più grande. Il nuovo modello di estensibilità VS è scarsamente documentato. Il protocollo MCP ha casi limite. La superficie API di Roslyn è enorme. Un super senior naviga più veloce, ma deve comunque leggere e sperimentare. Il lookup AI (ChatGPT) fa risparmiare ~1–2 giorni rispetto alla lettura pura della documentazione.
  2. Ricerca Simboli (Roslyn) è la fase implementativa più difficile. 7 tool che colpiscono API Roslyn diverse (SymbolFinder, syntax tree, modello semantico). Gerarchia delle chiamate ed ereditarietà richiedono comprensione profonda del modello di compilazione di Roslyn. 3 giorni è ottimistico — potrebbe facilmente diventare 5 con i casi limite.
  3. Il trasporto custom è un costo inaspettato. L'SDK MCP ufficiale non include un trasporto HTTP per .NET 4.7.2. Costruire un trasporto basato su HttpListener con gestione corretta del ciclo di vita (riavvio, riuso porta, dispose) è un lavoro da 2 giorni pieni che non sarebbe ovvio dalla lettura iniziale delle specifiche.
  4. Il debug in VS è intrinsecamente lento. Ogni ciclo di test richiede l'avvio di un'istanza sperimentale VS (~30s di startup). Questo moltiplica i tempi di debug per ~3x rispetto allo sviluppo .NET normale. Nessuna quantità di esperienza elimina questo overhead.
  5. La UI delle impostazioni ha una complessità sproporzionata. RemoteUserControl (XAML dell'estensibilità VS) non ha converter standard, supporto DataTemplate limitato, e il XAML deve essere EmbeddedResource con PageRemove. Un semplice dialogo impostazioni richiede 2 giorni invece degli 0.5 previsti.
Conclusione: Un super senior developer che sa cosa vuole, con assistenza AI solo per ricerche API, può costruire tutto da zero fino alla pubblicazione sul VS Marketplace in circa 4 settimane lavorative (ottimistico). Con l'AI che scrive il codice (AI coding assistants), si comprime a ~2 settimane.

Timeline di Sviluppo Reale (con AI Coding Assistant)

Il progetto è stato costruito con un AI coding assistant che ha scritto ~90% del codice, diretto da un senior developer che ha progettato l'architettura e preso tutte le decisioni. Ruolo umano: architettura, visione, decisioni, prompting, review, testing manuale in VS. Lo sviluppo è avvenuto in burst sporadici nell'arco di 9 mesi, non lavoro continuativo a tempo pieno.

105 Commit 146 File 28.263 Righe ~75–85 Ore

Sprint di Sviluppo

PeriodoGiorniCommit~OreCosa È Stato Costruito
15–20 Mag 2025 6 35 25–30 Prototipo iniziale: shell estensione VS, primi tool MCP (navigazione, ricerca simboli, contesto editor), trasporto HTTP, trasporto SSE, formattazione output compatto
7–10 Giu 2025 4 23 15–20 Migrazione all'SDK MCP ufficiale. Riscrittura completa di tutti i tool. Ottimizzazione token (riduzione 70–90%). Esecuzione test basata su processo con parser TRX. StdioBridge. Documentazione.
— pausa di 2 mesi —
8 Ago 2025 1 1 ~2 Fix: lookup interfacce in GetInheritance. Blocco esecuzione test sincrona per prevenire blocco VS.
8 Set 2025 1 1 ~2 Bug fix, aggiunta logging su file (Serilog), bump v1.8.0
— pausa di 3 mesi —
8–11 Dic 2025 4 13 15–20 Sistema impostazioni (JSON locale alla soluzione). UI impostazioni (ToolWindow + XAML + ViewModel). Tutti e 3 i comandi (Start/Stop/Settings) con sincronizzazione stato. Fix riutilizzo trasporto. Metodologia TDDAB. 150 test superati.
— pausa di 6 settimane —
21 Gen 2026 1 21 ~8 Giornata monstre: espansione impostazioni (formato percorsi + gruppi tool + filtraggio), RenameSymbol, FormatDocument, pubblicazione VS Marketplace, v2.3.0. 21 commit in un solo giorno.
25 Gen 2026 1 4 3–4 Fix: campo "type" mancante nella documentazione config MCP. Fix: spreco token su lastOutput durante status test asincroni.
29 Gen 2026 1 2 ~1 Ricerca supporto C++/CMake → parcheggiato (bassa priorità)
5–6 Feb 2026 2 5 5–6 Release v2.4.0. Riscrittura completa README. Materiali marketing (Dev.to, LinkedIn, Twitter, landing page). Lancio marketing.
TOTALE 21 105 75–85 ~10–11 giornate lavorative piene in 9 mesi

Stima vs Realtà

FaseStimato (manuale)Reale (con AI)Speedup
Ambiente + Ricerca2 giorni~0.5 giorni4x
Scaffolding + Shell Estensione1 giorno~0.3 giorni3x
Server MCP + Trasporto HTTP2 giorni~1 giorno2x
Tool di Navigazione2 giorni~0.5 giorni4x
Tool Ricerca Simboli3 giorni~1 giorno3x
Contesto Editor + Comandi Build2 giorni~0.5 giorni4x
Esecuzione Test Asincrona2 giorni~0.5 giorni4x
Sistema Impostazioni + UI2 giorni~2 giorni1x
Trasporto SSE + Stdio Bridge1 giorno~0.3 giorni3x
Tool Refactoring + Analisi1 giorno~0.3 giorni3x
Testing2 giorni~2 giorni1x
Rifinitura + Pubblicazione1 giorno~1 giorno1x
TOTALE21 giorni~10 giorni2.1x

Osservazioni Chiave

  1. Lo sviluppo sporadico funziona sorprendentemente bene con l'AI. 9 mesi trascorsi, ma solo ~10 giorni pieni di lavoro effettivo. Il sistema memory bank dell'AI assistant ha significato zero tempo di ramp-up tra le sessioni — anche dopo pause di 3 mesi, il contesto veniva ripristinato istantaneamente.
  2. La UI delle impostazioni è stata l'unica area senza speedup (1x). Il RemoteUserControl dell'estensibilità VS non ha converter standard, ha quirk XAML non documentati, e richiede workaround con EmbeddedResource + PageRemove. L'AI non poteva abbreviare il dolore perché la documentazione praticamente non esiste.
  3. Il 21 Gennaio è stata la giornata monstre: 21 commit. Espansione impostazioni, filtraggio tool, RenameSymbol, FormatDocument e pubblicazione VS Marketplace — tutto in un solo giorno. Questo tipo di produttività è possibile solo quando l'AI gestisce il boilerplate mentre l'umano si concentra sulle decisioni architetturali.
  4. Il vero collo di bottiglia è il testing manuale in VS. Ogni modifica richiede l'avvio di un'istanza sperimentale VS (~30s), la connessione di un client MCP, e il test manuale delle risposte dei tool. I test unitari coprono la logica, ma il testing di integrazione è intrinsecamente lento. Ecco perché lo speedup è 2.1x invece del 5–6x visto in altri progetti.
  5. Il marketing ha richiesto quanto alcune feature. 2 giorni per i materiali marketing (articolo Dev.to, LinkedIn, landing page, Twitter) è paragonabile alla costruzione dell'intero sistema impostazioni. Il lavoro non-codice non beneficia altrettanto dell'assistenza AI al coding.
Risultato reale: Dall'idea all'estensione pubblicata sul VS Marketplace con 20 tool, 188 test e lancio marketing in ~10 giornate lavorative piene distribuite su 9 mesi. Ovvero 2.1x più veloce della stima ottimistica manuale di 21 giorni, ottenuto con un AI coding assistant che ha scritto ~90% del codice e un senior developer a dirigere tutto.