MCP w .NET (C#) – jak zbudować serwer AI krok po kroku
Chcesz zintegrować AI z backendem w .NET w sposób uporządkowany i skalowalny?
Model Context Protocol (MCP) to nowy standard, który pozwala modelom AI korzystać z Twojej logiki biznesowej jak z API.
W tym artykule pokażę Ci, jak zbudować pierwszy serwer MCP w C#, jak działają tools, resources i prompts oraz gdzie to rozwiązanie ma realny sens produkcyjny.
Bez teorii — konkretny kod i praktyczne podejście.
🔍 Czym jest MCP i dlaczego ma znaczenie?
Model Context Protocol w praktyce
Model Context Protocol (MCP) to standard komunikacji między:
- modelami AI
- a Twoją aplikacją backendową
Zamiast pisać dedykowane integracje pod każdy model (OpenAI, Claude itd.), to tworzysz jeden spójny interfejs.
Co udostępnia MCP?
Serwer MCP expose’uje trzy kluczowe elementy:
- Tools – akcje (np. use case’y, logika biznesowa)
- Resources – dane (np. pliki, schematy, URI)
- Prompts – gotowe konteksty dla AI
👉 To coś więcej niż REST API to kontrakt dla AI.
🏗️ Architektura MCP w .NET
Gdzie MCP pasuje w Clean Architecture?
Najlepsze podejście:
- Domain → bez zmian
- Application → use case’y (logika)
- Infrastructure → MCP Server
👉 MCP działa jako adapter (port) dla AI.

⚙️ Tworzenie pierwszego serwera MCP w C#
Krok 1 – utworzenie projektu
dotnet new console -n DevHobby.Mcp
W kroku 2 – instalacja pakietów
dotnet add package ModelContextProtocol
dotnet add package Microsoft.Extensions.Hosting
Następnie krok 3 – konfiguracja serwera MCP
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ModelContextProtocol.Server;
using System.ComponentModel;
var builder = Host.CreateApplicationBuilder(args);
// Logowanie do STDIO (ważne dla MCP)
builder.Logging.AddConsole(options =>
{
options.LogToStandardErrorThreshold = LogLevel.Trace;
});
builder.Services
.AddMcpServer()
.WithStdioServerTransport()
.WithToolsFromAssembly();
await builder.Build().RunAsync();
🔍 Co tu się dzieje?
Host.CreateApplicationBuilder→ DI + konfiguracjaAddMcpServer()→ rejestracja MCPWithStdioServerTransport()→ komunikacja przez STDIOWithToolsFromAssembly()→ auto-discovery tooli
👉 MCP skanuje assembly i wystawia metody jako narzędzia dla AI.
🛠️ Tworzenie pierwszego Toola

Tool jako use case
[McpServerToolType]
public static class EchoTool
{
[McpServerTool, Description("Echoes the message back to the client.")]
public static string Echo(string message) => $"hello {message}";
}
Dlaczego to dobre podejście?
- brak logiki w infrastrukturze
- tool = cienka warstwa nad use case
- łatwe testowanie
👉 Best practice: mapuj Tool → Application Use Case

🧪 Testowanie MCP (Postman)
Jak sprawdzić działanie?
- Zbuduj aplikację
- Uruchom Postman
- Wybierz typ: MCP
- Podłącz plik
.exe - Wywołaj tool
🔄 Rozszerzenie: więcej tooli
Przykład z logiką i DI
[McpServerToolType]
public class FirstTools(ILogger<FirstTools> logger)
{
[McpServerTool, Description("Echoes the message back to the client.")]
public static string Echo(string message) => $"hello {message}";
[McpServerTool(Name = "reverse"), Description("Odwraca ciąg wejściowy.")]
public string ReverseText(string text)
{
logger.LogInformation("Odwraca ciąg wejściowy:{text}", text);
if (string.IsNullOrEmpty(text))
return text;
return new string(text.Reverse().ToArray());
}
}
Wnioski
- możesz używać DI
- tool nie musi być statyczny
- masz pełną kontrolę nad logiką
🔢 Kolejne przykłady
[McpServerTool(Name = "sum"), Description("Oblicza sumę podanych liczb.")]
public int Sum(params int[] numbers) => numbers.Sum();
[McpServerTool(Name = "average"), Description("Oblicza średnią z podanych liczb.")]
public double Average(params int[] numbers)
{
if (numbers.Length == 0)
return 0;
return numbers.Average();
}
🔐 Bezpieczeństwo MCP

Na co uważać?
Największy błąd:
👉 dawanie AI pełnego dostępu do systemu
✔️ Dobre praktyki:
- whitelist tooli
- walidacja inputu
- ograniczenie scope
- logowanie i audyt
🌍 STDIO vs HTTP
Który transport wybrać?
| Tryb | Zastosowanie |
| STDIO | lokalne narzędzia |
| HTTP | produkcja / integracje |
👉 W produkcji używaj ASP.NET Core + OAuth2

🧠 Kiedy MCP ma sens?
Realne use case’y
- AI agents wykonujące akcje
- automatyzacja procesów
- integracja AI z backendem
- “AI jako użytkownik systemu”
📌 Checklist – czy warto użyć MCP?
✔ masz integrację z AI
✔ chcesz skalować rozwiązanie
✔ masz wiele tooli/use case’ów
✔ zależy Ci na standaryzacji
❌ tylko prosty API → overkill

⚡ Podsumowanie
- MCP to standard komunikacji AI ↔ backend
- działa jako adapter w architekturze
- najlepiej mapować Tool → Use Case
- ma sens głównie przy AI + integracjach + skali
🔗 Zobacz też
- C# Podstawy Programowania: Twój Pierwszy Krok w Świat Kodowania
- AI w .NET: Zostań Architektem Inteligentnych Aplikacji!
- C# Clean Architecture w Praktyce
- C# – Zbuduj Własnego Tetrisa! Kompletny Przewodnik
- 7 Dniowe Wyzwanie C# Tic Tac Toe
- C# Zbuduj Profesjonalny Portal Randkowy od Podstaw!
📣 Call To Action
Jeśli chcesz więcej materiałów o:
- architekturze .NET
- integracji z AI
- praktycznych wzorcach
👉 Zostaw komentarz i daj znać, czy chcesz część 2 (HTTP + produkcja)
Zobacz także — powiązane artykuły
👉 Tworzenie klas i obiektów w C# — kompletny przewodnik
👉LINQ w C# — przetwarzanie kolekcji bez pętli – zobacz w kursie LINQ w C# -czytelny kod, wydajne zapytania
👉 Typy wartościowe vs referencyjne w C# — jak działa pamięć – zobacz w kursie C# Podstawy Programowania: Twój Pierwszy Krok w Świat Kodowania
Dołącz do Listy VIP
I otrzymaj roadmapę Junior .NET Developer oraz najlepszą ofertę, gdy tylko ruszą zapisy!!!

