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
| Progetto | Tipo | Scopo |
| Msvc.Info | .NET 4.7.2 VSIX | Host dell'estensione, 20 tool, trasporti, comandi, UI impostazioni (34 file) |
| Msvc.Info.Core | .NET 4.7.2 Library | Logica condivisa — impostazioni, traduzione percorsi, parser TRX, modelli, interfacce (23 file) |
| Msvc.Info.StdioBridge | .NET 8 Console | Bridge stdio-to-HTTP per AI desktop app (1 file) |
| Msvc.Info.Tests | .NET 8 xUnit | 188 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?
- Sviluppatore singolo con visione chiara — sa esattamente cosa costruire e l'approccio generale
- Scrive tutto il codice a mano, usa l'AI (ChatGPT) solo per cercare API e documentazione
- Partenza da zero assoluto: nessun ambiente, nessun repo, nessuna dipendenza installata
- Scenario ottimistico — nessun blocco importante, le API funzionano come documentato
- Dedicazione a tempo pieno
Dettaglio per Fase
| # | Fase | Giorni | Cosa 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
Testing + stabilizzazione
Fattori di Rischio
| Rischio | Impatto | Probabilità |
| 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
| Scenario | Moltiplicatore | Totale |
| 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
-
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.
-
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.
-
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.
-
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.
-
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
| Periodo | Giorni | Commit | ~Ore | Cosa È 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à
| Fase | Stimato (manuale) | Reale (con AI) | Speedup |
| Ambiente + Ricerca | 2 giorni | ~0.5 giorni | 4x |
| Scaffolding + Shell Estensione | 1 giorno | ~0.3 giorni | 3x |
| Server MCP + Trasporto HTTP | 2 giorni | ~1 giorno | 2x |
| Tool di Navigazione | 2 giorni | ~0.5 giorni | 4x |
| Tool Ricerca Simboli | 3 giorni | ~1 giorno | 3x |
| Contesto Editor + Comandi Build | 2 giorni | ~0.5 giorni | 4x |
| Esecuzione Test Asincrona | 2 giorni | ~0.5 giorni | 4x |
| Sistema Impostazioni + UI | 2 giorni | ~2 giorni | 1x |
| Trasporto SSE + Stdio Bridge | 1 giorno | ~0.3 giorni | 3x |
| Tool Refactoring + Analisi | 1 giorno | ~0.3 giorni | 3x |
| Testing | 2 giorni | ~2 giorni | 1x |
| Rifinitura + Pubblicazione | 1 giorno | ~1 giorno | 1x |
| TOTALE | 21 giorni | ~10 giorni | 2.1x |
Osservazioni Chiave
-
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.
-
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.
-
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.
-
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.
-
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.