Costruire un MCP Server in C#: agenti AI con contesto reale usando il Model Context Protocol
#tech
spcnet.it/costruire-un-mcp-ser…
@informatica
Costruire un MCP Server in C#: agenti AI con contesto reale usando il Model Context Protocol
Uno degli ostacoli più concreti nel lavorare con agenti AI è la mancanza di contesto reale: i modelli linguistici hanno una conoscenza “congelata” nel tempo e non hanno accesso ai vostri dati aziendali, alle vostre API interne o agli strumenti specifici del dominio. Il Model Context Protocol (MCP) nasce per risolvere esattamente questo problema, standardizzando il modo in cui applicazioni e agenti AI si scambiano contesto e strumenti. In questo articolo vediamo come i developer .NET possono costruire un MCP Server in C# e integrarlo con agenti AI come GitHub Copilot.Cos’è il Model Context Protocol
MCP è un protocollo aperto — originariamente sviluppato da Anthropic e ora supportato da numerose aziende tech — che definisce un linguaggio comune tra agenti AI e endpoint specializzati. L’idea è semplice: un MCP Server espone tool (funzioni invocabili), resource (dati strutturati) e prompt (template riutilizzabili) che un agente AI può scoprire e usare dinamicamente. Il risultato è un’integrazione grounded e sicura, in cui l’agente sa cosa può fare e con quali dati lavorare.Per i developer .NET c’è una buona notizia: esiste un SDK C# ufficiale per MCP che rende la costruzione di server e client MCP relativamente semplice, integrabile con il familiare ecosistema di
Microsoft.Extensions.Struttura base di un MCP Server in C#
Il punto di partenza è un’applicazione console .NET. Le dipendenze NuGet necessarie nel file.csprojsono:<ItemGroup> <PackageReference Include="ModelContextProtocol" Version="*" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="*" /> </ItemGroup>
Il pacchettoModelContextProtocolfornisce le API per creare server e client MCP, mentre l’integrazione conMicrosoft.Extensions.AIconsente di collegare i tool a modelli AI tramite le astrazioni standard di .NET.Definire i Tool con gli attributi MCP
La magia di MCP in C# passa attraverso due attributi principali:[McpServerToolType]applicato alla classe e[McpServerTool]applicato ai metodi. Ecco un esempio minimale con un tool Echo:using ModelContextProtocol.Server; using System.ComponentModel; [McpServerToolType] public static class EchoTool { [McpServerTool, Description("Restituisce il messaggio ricevuto al mittente.")] public static string Echo(string message) => $"Hai detto: {message}"; }
L’attributo[Description]è fondamentale: il testo viene esposto all’agente AI come documentazione del tool, influenzando direttamente se e quando l’agente decide di invocarlo. Scrivete descrizioni chiare e precise.Vediamo ora un tool più realistico che chiama un’API HTTP e restituisce dati JSON:
using System.ComponentModel; using System.Net.Http.Json; using System.Text.Json; using ModelContextProtocol.Server; [McpServerToolType] public static class PostDataTool { [McpServerTool, Description("Recupera un elenco di post di esempio dall'API.")] public static async Task<string> GetSamplePosts() { using var client = new HttpClient { BaseAddress = new Uri("https://jsonplaceholder.typicode.com") }; var posts = await client.GetFromJsonAsync<List<Post>>("/posts"); return JsonSerializer.Serialize(posts ?? new List<Post>()); } } public class Post { public int Id { get; set; } public string? Title { get; set; } public string? Body { get; set; } }Configurare il server in Program.cs
La configurazione del server MCP avviene inProgram.cs, sfruttando il generic host di .NET:using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var builder = Host.CreateApplicationBuilder(args); builder.Services .AddMcpServer() .WithStdioServerTransport() // trasporto stdio per uso locale / VS Code .WithToolsFromAssembly(); // scoperta automatica di tutti i [McpServerToolType] await builder.Build().RunAsync();
Il trasportostdioè il più comune per server locali e per l’integrazione con VS Code. Per scenari più avanzati (server HTTP remoti, autenticazione OAuth) l’SDK supporta trasporti SSE e altri meccanismi.Registrare il server in VS Code
Per rendere il server MCP disponibile a VS Code e a GitHub Copilot, create un file.vscode/mcp.jsonnella root del progetto:{ "servers": { "MyMcpServer": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "/percorso/completo/MyMcpServer.csproj" ] } } }
VS Code legge questo file e avvia automaticamente il server MCP quando necessario. I tool vengono esposti nella chat di GitHub Copilot con il prefisso#NomeServer.Testare con l’MCP Inspector
Prima di integrare il server con un agente AI reale, è utile verificarne il funzionamento con l’MCP Inspector, uno strumento interattivo basato su Node.js con frontend React. Non richiede installazione: basta eseguire:npx @modelcontextprotocol/inspector
Dall’Inspector potete connettervi al vostro server .NET, esplorare i tool esposti, invocarli con parametri di test e verificare le risposte JSON — tutto senza dover aprire VS Code.Integrazione con GitHub Copilot in modalità agente
Con il server registrato inmcp.json, GitHub Copilot in modalità Agent può scoprire e invocare i vostri tool. Nella chat è sufficiente fare riferimento a un tool con#NomeServer_NomeTool, oppure chiedere all’agente di completare un compito e lasciare che sia lui a decidere quali tool usare.L’agente chiederà conferma prima di eseguire qualsiasi tool (a meno che non abbiate abilitato l’approvazione automatica per la sessione), e il risultato viene usato come contesto per la risposta successiva. Questo pattern è particolarmente potente quando il tool restituisce dati specifici del dominio — configurazioni di sistema, query a database interni, stati di pipeline CI/CD — che il modello non potrebbe altrimenti conoscere.
Scenari pratici per developer .NET
Alcuni use case concreti per un MCP Server in C#:
- Query al database aziendale: esporre viste o stored procedure come tool MCP per permettere all’agente di rispondere a domande sui dati reali.
- Integrazione con sistemi interni: wrappare API REST o servizi WCF legacy come tool MCP senza riscrivere nulla.
- Automazione DevOps: tool per interrogare lo stato di pipeline, deployment o metriche di monitoring direttamente dalla chat dell’agente.
- Contesto di progetto: esporre convenzioni architetturali, ADR (Architecture Decision Records) o specifiche di dominio come risorse MCP per guidare la generazione di codice.
Conclusione
Il Model Context Protocol è ancora in evoluzione, ma le fondamenta sono solide e l’adozione sta crescendo rapidamente. Per i developer .NET, l’SDK C# rende la costruzione di MCP Server accessibile e naturale, senza allontanarsi dalle convenzioni del framework. Investire oggi nel capire MCP significa essere pronti quando gli agenti AI diventeranno parte integrante del workflow di sviluppo quotidiano — e quel momento è già più vicino di quanto sembri.Fonti: MCP Magic: Building Tool-Enabled AI Agents with C# — Visual Studio Magazine; Build & Leverage MCP Servers in C# for AI-Driven Development — Uno Platform
Build & Leverage MCP Servers in C# for AI-Driven Development
Let's dive into how .NET developers can build MCP Servers and leverage them in AI workflows.Sam Basu (Uno Platform)
stefania maurizi
in reply to stefania maurizi • • •Without the #WikiLeaks secret files - especially #USDiplomaticCables - I would never have understood the details of my country’s—#Italy—role in the #USWarMachine: this topic is a no-go area for the mainstream Italian media