<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ladislav Sopko</title>
    <description>The latest articles on Forem by Ladislav Sopko (@ladislav_sopko_0ics).</description>
    <link>https://forem.com/ladislav_sopko_0ics</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3755428%2F4b424856-4493-4cc5-a751-bbfb2306e070.jpg</url>
      <title>Forem: Ladislav Sopko</title>
      <link>https://forem.com/ladislav_sopko_0ics</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ladislav_sopko_0ics"/>
    <language>en</language>
    <item>
      <title>How to give Your AI Coder Visual Studio's IntelliSense?</title>
      <dc:creator>Ladislav Sopko</dc:creator>
      <pubDate>Thu, 05 Feb 2026 19:28:17 +0000</pubDate>
      <link>https://forem.com/ladislav_sopko_0ics/what-if-your-ai-had-visual-studios-intellisense-40e7</link>
      <guid>https://forem.com/ladislav_sopko_0ics/what-if-your-ai-had-visual-studios-intellisense-40e7</guid>
      <description>&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Every AI coding tool operates at the filesystem level. They read files. They run grep. They parse text.&lt;/p&gt;

&lt;p&gt;When you ask "find all usages of &lt;code&gt;ProcessDocument&lt;/code&gt;", they run something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="s2"&gt;"ProcessDocument"&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"*.cs"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And you get back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The actual method definition&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ProcessDocumentAsync&lt;/code&gt; (different method!)&lt;/li&gt;
&lt;li&gt;String literals in log messages&lt;/li&gt;
&lt;li&gt;Comments mentioning the method&lt;/li&gt;
&lt;li&gt;Variable names like &lt;code&gt;processDocumentResult&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;XML documentation references&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine doing a &lt;strong&gt;rename&lt;/strong&gt; based on that. 💀&lt;/p&gt;

&lt;p&gt;Meanwhile, Visual Studio knows — through Roslyn, the C# compiler — exactly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where &lt;code&gt;ProcessDocument&lt;/code&gt; is &lt;strong&gt;defined&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Every place it's &lt;strong&gt;called&lt;/strong&gt; (and nothing else)&lt;/li&gt;
&lt;li&gt;What &lt;strong&gt;interface&lt;/strong&gt; declares it&lt;/li&gt;
&lt;li&gt;What classes &lt;strong&gt;override&lt;/strong&gt; it&lt;/li&gt;
&lt;li&gt;What it's &lt;strong&gt;not&lt;/strong&gt; (ProcessDocumentAsync is a different symbol)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Solution: Expose Roslyn via MCP
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=LadislavSopko.mcpserverforvs" rel="noopener noreferrer"&gt;VS-MCP&lt;/a&gt; is a Visual Studio extension that exposes Roslyn's semantic analysis as MCP (Model Context Protocol) tools.&lt;/p&gt;

&lt;p&gt;Any MCP-compatible client — Claude Code, Claude Desktop, Codex CLI, Gemini CLI, OpenCode, Aider, Cline, Windsurf — can now use &lt;strong&gt;20 tools&lt;/strong&gt; powered by the actual C# compiler.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔍 Navigation (find things semantically)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;FindSymbols&lt;/code&gt;&lt;/strong&gt; — Search symbols by name. Not text. Symbols.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Find WhisperFactory in my solution"

AI: Found WhisperFactory
    → Class | Whisper.net | WhisperFactory.cs | Line 16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One result. Exact. Knows it's a class, knows the namespace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;FindSymbolDefinition&lt;/code&gt;&lt;/strong&gt; — The semantic equivalent of F12.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Go to the definition of IDocumentService"

AI: → Interface | DocFlow.Core | IDocumentService.cs | Line 8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;FindSymbolUsages&lt;/code&gt;&lt;/strong&gt; — Every reference, compiler-verified.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Find all usages of ProcessDocument"

AI: Found 4 usages:
    → IDocumentService.cs:12 (declaration)
    → DocumentService.cs:45 (implementation)
    → DocumentController.cs:23 (call)
    → BackgroundWorker.cs:67 (call)

    Note: ProcessDocumentAsync NOT included — different symbol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;GetSymbolAtLocation&lt;/code&gt;&lt;/strong&gt; — What's at line X, column Y?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "What's the symbol at line 15 in Program.cs?"

AI: → Method: ConfigureServices | Class: Program | Returns: void
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌳 Understanding (comprehend architecture)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;GetInheritance&lt;/code&gt;&lt;/strong&gt; — Full type hierarchy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "What inherits from BaseDocument?"

AI: BaseDocument hierarchy:
    → Base: EntityBase
    → Interfaces: IDocument, ITrackable, IAuditable
    → Derived: Invoice, PurchaseOrder, CreditNote, DeliveryNote
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Try getting this from grep. I'll wait.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;GetMethodCallers&lt;/code&gt;&lt;/strong&gt; — Who calls this method?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "What calls ValidateToken?"

AI: ValidateToken is called by:
    → ApiKeyMiddleware.Invoke()
    → LoginController.Authenticate()
    → RefreshTokenHandler.Handle()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;GetMethodCalls&lt;/code&gt;&lt;/strong&gt; — What does this method call?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "What does ValidateToken call internally?"

AI: ValidateToken calls:
    → TokenRepository.FindByHash()
    → ClaimsParser.Extract()
    → AuditLogger.LogAccess()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combine callers + callees and you have a &lt;strong&gt;call graph&lt;/strong&gt;. From the compiler. Not from guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;GetDocumentOutline&lt;/code&gt;&lt;/strong&gt; — Semantic structure of any file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Show me the structure of DocumentService.cs"

AI: DocumentService.cs outline:
    → Namespace: DocFlow.Services
      → Class: DocumentService : IDocumentService
        → Method: ProcessDocument(Document doc) → Result
        → Method: ValidateDocument(Document doc) → bool
        → Property: Logger (ILogger)
        → Field: _repository (IDocumentRepository)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ✏️ Refactoring (change things safely)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;RenameSymbol&lt;/code&gt;&lt;/strong&gt; — The killer tool. Roslyn-powered rename across the entire solution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Rename ProcessDocument to HandleDocument"

AI: ✓ Renamed in 8 files, 23 locations
    → Interface updated
    → Implementations updated
    → Call sites updated
    → ProcessDocumentAsync: untouched (different symbol)
    → String literals: untouched
    → Build verification: 0 errors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;FormatDocument&lt;/code&gt;&lt;/strong&gt; — Visual Studio's own formatter, not &lt;code&gt;dotnet format&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏗️ Infrastructure
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;ExecuteCommand&lt;/code&gt;&lt;/strong&gt; — Build/clean with structured diagnostics.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Build MyProject"

AI: Build succeeded | 0 errors | 2 warnings
    → Warning CS0168: Variable 'ex' declared but never used (File.cs:42)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;ExecuteAsyncTest&lt;/code&gt;&lt;/strong&gt; — Run tests with real-time status.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You: "Run the integration tests"

AI: Running tests... 12/45 passed
    ...
    Complete: 44 passed, 1 failed
    → Failed: TestPaymentProcessing — Assert.Equal failed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;GetSolutionTree&lt;/code&gt;&lt;/strong&gt; — Full solution structure.&lt;br&gt;
&lt;strong&gt;&lt;code&gt;GetProjectReferences&lt;/code&gt;&lt;/strong&gt; — Dependency graph between projects.&lt;br&gt;
&lt;strong&gt;&lt;code&gt;TranslatePath&lt;/code&gt;&lt;/strong&gt; — WSL ↔ Windows path conversion (crucial for Claude Code users).&lt;br&gt;
&lt;strong&gt;&lt;code&gt;GetSelection&lt;/code&gt; / &lt;code&gt;CheckSelection&lt;/code&gt;&lt;/strong&gt; — Read active editor selection.&lt;br&gt;
&lt;strong&gt;&lt;code&gt;GetActiveFile&lt;/code&gt;&lt;/strong&gt; — Current file and cursor position.&lt;br&gt;
&lt;strong&gt;&lt;code&gt;GetLoggingStatus&lt;/code&gt; / &lt;code&gt;SetLogLevel&lt;/code&gt;&lt;/strong&gt; — Diagnostics.&lt;/p&gt;
&lt;h2&gt;
  
  
  Multi-Solution: See Inside Your Dependencies
&lt;/h2&gt;

&lt;p&gt;Enterprise devs don't just work on their own code. You depend on libraries — and sometimes you need the AI to understand those libraries too.&lt;/p&gt;

&lt;p&gt;VS-MCP supports &lt;strong&gt;multiple Visual Studio instances simultaneously&lt;/strong&gt; — each on its own configurable port.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your project                         → VS-MCP on port 3010
Whisper.net source (cloned from GH)  → VS-MCP on port 3011
EF Core source (cloned from GH)      → VS-MCP on port 3012
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your AI connects to all three. Now it can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find how library authors &lt;strong&gt;intended&lt;/strong&gt; their API to be used&lt;/li&gt;
&lt;li&gt;Discover &lt;strong&gt;implementation patterns&lt;/strong&gt; inside library source code&lt;/li&gt;
&lt;li&gt;Trace calls &lt;strong&gt;across your code and library code&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Understand inheritance that &lt;strong&gt;spans project boundaries&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In your MCP client configuration, you simply set up named connections. Three options depending on your client:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1: Clients with native HTTP support (Claude Desktop, Claude Code)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vs-mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:3010/sdk/"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vs-mcp-whisper"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:3011/sdk/"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option 2: Clients without HTTP support (via mcp-remote proxy)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vs-mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:3010/sdk/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vs-mcp-whisper"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:3011/sdk/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option 3: Codex CLI (TOML)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[mcp_servers.vs-mcp]&lt;/span&gt;
&lt;span class="py"&gt;type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"stdio"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npx"&lt;/span&gt;
&lt;span class="py"&gt;args&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"http://localhost:3010/sdk/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nn"&gt;[mcp_servers.vs-mcp-whisper]&lt;/span&gt;
&lt;span class="py"&gt;type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"stdio"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npx"&lt;/span&gt;
&lt;span class="py"&gt;args&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"http://localhost:3011/sdk/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each name tells the AI what it's connecting to. &lt;code&gt;vs-mcp&lt;/code&gt; is your project, &lt;code&gt;vs-mcp-whisper&lt;/code&gt; is the library source. The AI knows where to look.&lt;/p&gt;

&lt;p&gt;No more guessing how a library works. Open the source, connect VS-MCP, and your AI reads it with compiler-level understanding.&lt;/p&gt;

&lt;p&gt;Plus: toggle individual tools on/off and switch WSL/Windows path formats from a settings panel inside VS.&lt;/p&gt;

&lt;h2&gt;
  
  
  When You Need This
&lt;/h2&gt;

&lt;p&gt;You don't need this for a weekend project with 3 files.&lt;/p&gt;

&lt;p&gt;You need this when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your solution has 20+ projects&lt;/li&gt;
&lt;li&gt;You have complex inheritance hierarchies&lt;/li&gt;
&lt;li&gt;Dependency injection makes grep useless for finding implementations&lt;/li&gt;
&lt;li&gt;You need safe refactoring across hundreds of files&lt;/li&gt;
&lt;li&gt;Your AI assistant keeps saying "I found 47 matches for that method name"&lt;/li&gt;
&lt;li&gt;You want your AI to understand architecture, not just read text&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install from &lt;a href="https://marketplace.visualstudio.com/items?itemName=LadislavSopko.mcpserverforvs" rel="noopener noreferrer"&gt;Visual Studio Marketplace&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Set your port in MCP Server Settings (default: 3010)&lt;/li&gt;
&lt;li&gt;Add to your MCP client config:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"vs-mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:3010/sdk/"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or via mcp-remote for clients without native HTTP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"vs-mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:3010/sdk/"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Your AI now has compiler-level intelligence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Works with Claude Code, Claude Desktop, Codex CLI, Gemini CLI, OpenCode, Aider, Cline, Windsurf, and any MCP-compatible client.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;VS-MCP: 20 tools. 12 Roslyn-powered. Free.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌐 &lt;a href="https://www.0ics.com/static/vs-mcp.html" rel="noopener noreferrer"&gt;Website →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📥 &lt;a href="https://marketplace.visualstudio.com/items?itemName=LadislavSopko.mcpserverforvs" rel="noopener noreferrer"&gt;Install from Marketplace →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎬 &lt;a href="https://youtu.be/fYV4oqY9n5g" rel="noopener noreferrer"&gt;Watch the demo →&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;a href="https://0ics.it" rel="noopener noreferrer"&gt;0ics srl&lt;/a&gt; — Italian software company specializing in AI-powered development tools.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>mcp</category>
      <category>visualstudio</category>
    </item>
  </channel>
</rss>
