Msvc.Info
VS MCP Server — Project Overview & Development Estimates
What It Is
A Visual Studio 2022 Extension that runs an MCP (Model Context Protocol) server
inside Visual Studio, giving AI coding assistants real-time access to
Roslyn's semantic understanding of the codebase — the same engine that powers IntelliSense.
Instead of AI tools blindly grepping files, they get structured, semantic access to solution structure,
symbol search, inheritance trees, refactoring, build/test execution, and editor context —
all through a standardized protocol with 70–90% token savings
via compact output formatting.
20 MCP Tools
3 Transports
4 Projects
188 Tests
.NET 4.7.2 + .NET 8
Architecture
graph TB
subgraph VS["Visual Studio 2022"]
EXT["Extension Entry\nVSIX Package"]
HOST["MCP Server Host\nstart · stop · restart"]
SDK["MCP SDK Server\nModelContextProtocol"]
SETTINGS["Settings UI\nToolWindow + XAML"]
STORE[("JSON Settings\nper-solution .mcp/")]
EXT --> HOST
EXT --> SETTINGS
HOST --> SDK
SETTINGS --> STORE
end
subgraph TOOLS["20 MCP Tools"]
NAV["Navigation\nSolutionTree · Outline\nProjectRefs"]
SYM["Symbol Search\nFind · Definition · Usages\nInheritance · Callers"]
EDIT["Editor Context\nActiveFile · Selection"]
CMD["Commands\nBuild · Clean · AsyncTests"]
PATH["Path Translation\nWindows · WSL · URI"]
REF["Refactoring\nRename · Format"]
end
SDK --> TOOLS
TOOLS -.->|"Roslyn API"| ROSLYN[("Roslyn\nWorkspace")]
TOOLS -.->|"DTE API"| DTE[("VS DTE\nServices")]
subgraph TRANSPORT["Transports"]
HTTP["HTTP\nHttpListener\nport 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
Solution Structure
| Project | Type | Purpose |
| Msvc.Info | .NET 4.7.2 VSIX | Extension host, 20 tools, transports, commands, settings UI (34 files) |
| Msvc.Info.Core | .NET 4.7.2 Library | Shared logic — settings, path translation, TRX parser, models, interfaces (23 files) |
| Msvc.Info.StdioBridge | .NET 8 Console | stdio-to-HTTP bridge for AI desktop apps (1 file) |
| Msvc.Info.Tests | .NET 8 xUnit | 188 unit tests with Moq (17 files) |
Development Time Estimate
How long would a super senior .NET developer take to build this from scratch, writing all code by hand?
- Solo developer with clear vision — knows exactly what to build and the general approach
- Writes all code manually, uses AI (ChatGPT) only for API lookups and documentation search
- Starting from absolute zero: no environment, no repo, no dependencies installed
- Optimistic scenario — no major blockers, APIs work as documented
- Full-time dedication
Phase Breakdown
| # | Phase | Days | What's Involved |
| 0 |
Environment + Research |
2 |
Install VS2022 + Extensibility workload + .NET SDK. Read MCP protocol spec. Study VS new extensibility model (VisualStudio.Extensibility). Understand Roslyn workspace APIs. Prototype “hello world” extension. |
| 1 |
Scaffolding + Extension Shell |
1 |
Create 4-project solution structure. Extension entry point. Menu commands (Start/Stop/Settings). DI registration. Basic Serilog logging. |
| 2 |
MCP Server + HTTP Transport |
2 |
Integrate MCP SDK NuGet. Custom HttpListener transport (MCP SDK has no built-in for .NET 4.7.2). Server lifecycle: start/stop/restart. Singleton reusability across restarts. First tool responding to a real MCP client. |
| 3 |
Navigation Tools |
2 |
IVsWorkspaceAccessor abstraction over Roslyn. GetSolutionTree (solution/project hierarchy). GetDocumentOutline (classes, methods, properties via Roslyn syntax trees). GetProjectReferences. Path translation service (Windows/WSL/URI). TranslatePath tool. |
| 4 |
Symbol Search Tools |
3 |
Heaviest phase — Roslyn's API surface is vast. FindSymbols (SymbolFinder). FindSymbolDefinition. FindSymbolUsages. GetSymbolAtLocation. GetInheritance (base types, derived, interfaces). GetMethodCallers + GetMethodCalls (call hierarchy). Compact output formatters for token efficiency. |
| 5 |
Editor Context + Build Commands |
2 |
DTE-based editor accessor. GetActiveFile, GetSelection, CheckSelection. ExecuteCommand (build/clean via VS DTE SolutionBuild API). Output truncation for large build logs. |
| 6 |
Async Test Execution |
2 |
External process runner (dotnet test). TRX result file parser (deterministic XML). Async workflow: start/status/stop. Token-efficient status reporting (suppress build noise). |
| 7 |
Settings System + UI |
2 |
Solution-local JSON settings store (.mcp/mcpserver.settings.json). McpSettingsProvider with in-memory caching + change events. Settings ToolWindow with RemoteUserControl (XAML). Port config, path format radios, 7 tool group checkboxes. Tool list filtering at MCP level. |
| 8 |
SSE Transport + Stdio Bridge |
1 |
SSE (Server-Sent Events) transport variant. .NET 8 console app as stdio-to-HTTP bridge for AI desktop app compatibility. |
| 9 |
Refactoring + Analysis Tools |
1 |
RenameSymbol (Roslyn rename across entire solution). FormatDocument (VS formatting engine). SetLogLevel + GetLoggingStatus (Serilog LevelSwitch). |
| 10 |
Testing |
2 |
188 unit tests covering: settings (30), commands (19), transports (9), tool filters (4), path translation, TRX parser. Moq for all VS service abstractions. Manual integration testing with real AI clients. |
| 11 |
Polish + Publish |
1 |
Compact output optimization (70–90% token reduction). VSIX packaging. VS Marketplace publishing. README with client configuration for 8+ AI tools. |
|
TOTAL |
21 |
~4 working weeks |
Where Time Actually Goes
Risk Factors
| Risk | Impact | Likelihood |
| VS new Extensibility model gaps (no StatusBar API, XAML limitations, no converters) |
+1–2 days of workarounds |
High — we hit this |
| HttpListener transport not in MCP SDK (had to write custom from scratch) |
+1–2 days |
High — we hit this |
| .NET 4.7.2 limitations (no init properties, missing modern APIs) |
+0.5 days scattered |
Medium |
| Roslyn API complexity for call hierarchy analysis |
+1 day |
Medium |
| VSIX packaging quirks (telemetry bug, manifest caching, VsixPublisher crash) |
+0.5 days |
Medium |
What AI Assistance Changes
| Scenario | Multiplier | Total |
| Manual coding + AI for lookups only (this estimate) |
1x |
~21 working days (~4 weeks) |
| Realistic (some VS APIs don't work as documented, rabbit holes) |
1.3x |
~27 days (~5.5 weeks) |
| With AI coding assistance (AI assistant writing ~90% of code) |
0.4x |
~8–10 days (~2 weeks) |
Key Observations
-
Research is the hidden time sink.
VS Extensibility new model is poorly documented. MCP protocol has edge cases.
Roslyn's API surface is enormous. A super senior can navigate faster, but still needs to read and experiment.
AI lookup (ChatGPT) saves ~1–2 days vs pure documentation reading.
-
Symbol Search (Roslyn) is the hardest implementation phase.
7 tools all hitting different Roslyn APIs (SymbolFinder, syntax trees, semantic model).
Call hierarchy and inheritance require deep understanding of Roslyn's compilation model.
3 days optimistic — this could easily become 5 with edge cases.
-
Custom transport is an unexpected cost.
The official MCP SDK doesn't ship an HTTP transport for .NET 4.7.2.
Building HttpListener-based transport with proper lifecycle management (restart, port reuse, dispose)
is a full 2-day effort that wouldn't be obvious from the initial spec reading.
-
VS debugging is inherently slow.
Every test cycle requires launching a VS experimental instance (~30s startup).
This multiplies debugging time by ~3x compared to normal .NET development.
No amount of skill eliminates this overhead.
-
The settings UI has disproportionate complexity.
RemoteUserControl (VS Extensibility's XAML) has no standard converters,
limited DataTemplate support, and XAML must be EmbeddedResource with PageRemove.
A simple settings dialog takes 2 days instead of the expected 0.5 days.
Bottom line: A super senior developer who knows what they want, with AI assistance for API lookups only,
can build this from zero to published on the VS Marketplace in approximately 4 working weeks (optimistic).
With AI writing the code (AI coding assistants), this compresses to ~2 weeks.
Actual Development Timeline (with AI Coding Assistant)
The project was built with an AI coding assistant writing ~90% of the code, directed by a senior developer
who designed architecture and made all decisions. Human role: architecture, vision, decisions, prompting, review, manual testing in VS.
Development happened in sporadic bursts over 9 months, not continuous full-time work.
105 Commits
146 Files
28,263 Lines
~75–85 Hours
Development Sprints
| Period | Days | Commits | ~Hours | What Was Built |
| May 15–20, 2025 |
6 |
35 |
25–30 |
Initial prototype: VS extension shell, first MCP tools (navigation, symbol search, editor context), HTTP transport, SSE transport, compact output formatting |
| Jun 7–10, 2025 |
4 |
23 |
15–20 |
Migration to official MCP SDK. Complete tool suite rewrite. Token optimization (70–90% reduction). Process-based test execution with TRX parser. StdioBridge. Documentation. |
| — 2 month pause — |
| Aug 8, 2025 |
1 |
1 |
~2 |
Fix: GetInheritance interface lookup. Block synchronous test execution to prevent VS hanging. |
| Sep 8, 2025 |
1 |
1 |
~2 |
Bug fixes, add file logging (Serilog), bump v1.8.0 |
| — 3 month pause — |
| Dec 8–11, 2025 |
4 |
13 |
15–20 |
Settings system (solution-local JSON). Settings UI (ToolWindow + XAML + ViewModel). All 3 commands (Start/Stop/Settings) with proper state sync. Transport reusability fix. TDDAB methodology. 150 tests passing. |
| — 6 week pause — |
| Jan 21, 2026 |
1 |
21 |
~8 |
Monster day: settings expansion (path format + tool groups + filtering), RenameSymbol, FormatDocument, VS Marketplace publishing, v2.3.0. 21 commits in one day. |
| Jan 25, 2026 |
1 |
4 |
3–4 |
Fix: missing "type" in MCP config docs. Fix: token-wasting lastOutput during async test status. |
| Jan 29, 2026 |
1 |
2 |
~1 |
C++/CMake support research → parked (low priority) |
| Feb 5–6, 2026 |
2 |
5 |
5–6 |
v2.4.0 release. README complete rewrite. Marketing materials (Dev.to, LinkedIn, Twitter, landing page). Marketing launch. |
| TOTAL |
21 |
105 |
75–85 |
~10–11 full working days over 9 months |
Estimate vs Reality
| Phase | Estimated (manual) | Actual (with AI) | Speedup |
| Environment + Research | 2 days | ~0.5 days | 4x |
| Scaffolding + Extension Shell | 1 day | ~0.3 days | 3x |
| MCP Server + HTTP Transport | 2 days | ~1 day | 2x |
| Navigation Tools | 2 days | ~0.5 days | 4x |
| Symbol Search Tools | 3 days | ~1 day | 3x |
| Editor Context + Build Commands | 2 days | ~0.5 days | 4x |
| Async Test Execution | 2 days | ~0.5 days | 4x |
| Settings System + UI | 2 days | ~2 days | 1x |
| SSE Transport + Stdio Bridge | 1 day | ~0.3 days | 3x |
| Refactoring + Analysis Tools | 1 day | ~0.3 days | 3x |
| Testing | 2 days | ~2 days | 1x |
| Polish + Publish | 1 day | ~1 day | 1x |
| TOTAL | 21 days | ~10 days | 2.1x |
Key Observations
-
Sporadic development works surprisingly well with AI.
9 months elapsed, but only ~10 full days of actual work. The AI assistant's memory bank system
meant zero ramp-up time between sessions — even after 3-month gaps, context was restored instantly.
-
Settings UI was the one area with no speedup (1x).
VS Extensibility's RemoteUserControl has no standard converters, undocumented XAML quirks,
and requires EmbeddedResource + PageRemove workarounds. AI couldn't shortcut the pain because
the documentation barely exists. This matches the LSAI experience where LSP debugging resisted AI acceleration.
-
Jan 21 was the monster day: 21 commits.
Settings expansion, tool filtering, RenameSymbol, FormatDocument, and VS Marketplace publishing —
all in a single day. This kind of throughput is only possible when AI handles the boilerplate
while the human focuses on architecture decisions.
-
The real bottleneck is manual VS testing.
Every change requires launching a VS experimental instance (~30s), connecting an MCP client,
and testing tool responses manually. Unit tests cover logic, but integration testing is inherently slow.
This is why the speedup is 2.1x instead of the 5–6x seen in LSAI.
-
Marketing took as much time as some features.
2 days for marketing materials (Dev.to article, LinkedIn, landing page, Twitter) is comparable
to building the entire settings system. Non-code work doesn't benefit as much from AI coding assistance.
Actual result: From idea to published VS Marketplace extension with 20 tools, 188 tests,
and marketing launch in ~10 full working days spread over 9 months.
That's 2.1x faster than the optimistic manual estimate of 21 days,
achieved with an AI coding assistant writing ~90% of the code and one senior developer directing everything.