Start Debugging

Microsoft `mcp`: подключаем серверы Model Context Protocol на C# в .NET 10

Как подключить серверы Model Context Protocol (MCP) на C# в .NET 10 с помощью microsoft/mcp. Контракты инструментов, валидация ввода, аутентификация, наблюдаемость и шаблоны для продакшна.

Сегодняшний GitHub Trending (C#, ежедневный) включает microsoft/mcp — репозиторий Microsoft по Model Context Protocol (MCP). Если вы строите внутренние инструменты на .NET 10 и хотите чёткую границу между LLM-клиентом и реальными системами (файлы, тикеты, базы данных, CI), MCP — это та форма, за которой стоит следить.

Источник: microsoft/mcp

Полезный сдвиг: инструменты становятся контрактом, а не разовой обвязкой

Большинство “AI-интеграций” начинаются как разовый связующий код: шаблоны промптов, пара HTTP-вызовов и растущая стопка “ещё один инструмент”. В тот момент, когда вам нужны надёжность, аудит или удобный сценарий локальной разработки, вам нужен контракт:

Именно к этому стремится MCP: к границе протокола, чтобы клиент и сервер могли развиваться независимо.

Форма крошечного MCP-сервера на C# (что вы реально будете писать)

Точная форма API зависит от выбранной C#-библиотеки MCP (и это всё ещё ранний этап). При этом форма сервера стабильна: определить инструменты, валидировать ввод, выполнить, вернуть структурированный вывод.

Вот минимальный пример в стиле C# 14 для .NET 10, демонстрирующий подход “сначала контракт”. Воспринимайте его как шаблон для формы ваших обработчиков.

using System.Text.Json;

public static class CiTools
{
    public static string GetBuildStatus(JsonElement args)
    {
        if (!args.TryGetProperty("pipeline", out var pipelineProp) || pipelineProp.ValueKind != JsonValueKind.String)
            throw new ArgumentException("Missing required string argument: pipeline");

        var pipeline = pipelineProp.GetString()!;

        // Replace with your real implementation (Azure DevOps, GitHub, Jenkins).
        var status = new
        {
            pipeline,
            state = "green",
            lastRunUtc = DateTimeOffset.UtcNow.AddMinutes(-7),
        };

        return JsonSerializer.Serialize(status);
    }
}

Важны не детали парсинга JSON. Важно вот что:

Куда это ложится в реальной кодовой базе .NET 10

Если вы внедряете MCP в продакшн, вас будут заботить те же вещи, что и в любом сервисе:

Если на этой неделе делать что-то одно: клонируйте репозиторий, пробегитесь по документации протокола и набросайте список из 5 инструментов, которые вы сейчас реализуете как “обвязку промптов”. Этого списка обычно достаточно, чтобы обосновать настоящую MCP-границу.

Ресурс: microsoft/mcp

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад