MCP-сервер на C#/.NET: от Hello World до Production

Опубликовано 12.11.2026 07:57:00 в категории Курсы и уроки

Пишем на C# сервер протокола контекста модели (Model Context Protocol, MCP), который даёт ИИ-агенту доступ к вашему коду, данным и сервисам. Путь курса — от первого сервера в десяток строк до сервиса с авторизацией, тестами и наблюдаемостью. Официальный SDK 2.x и спецификация 2026-07-28: инструменты (tools), ресурсы, многошаговые запросы, HTTP без состояния, OAuth 2.1, OpenTelemetry, публикация в NuGet и Docker. Сервер работает с любым совместимым клиентом. Отдельный модуль посвящён переходу с SDK 1.x.

Чему вы научитесь

  • Объяснять архитектуру MCP: хост, клиент, сервер, инструменты, ресурсы и шаблоны запросов
  • Создавать MCP-сервер на .NET 10 с официальным SDK и проверять его работу в MCP Inspector
  • Проектировать инструменты MCP-сервера (tools) — методы C#, которые языковая модель вызывает сама, — так, чтобы она выбирала и вызывала их правильно: имена, описания, схемы параметров, сообщения об ошибках
  • Предоставлять агенту безопасный доступ к решению .NET: файлы, поиск, структура проектов, сборка и тесты
  • Применять ресурсы и шаблоны запросов и обоснованно выбирать между ними и инструментами
  • Реализовывать многошаговые запросы: подтверждение опасных действий у пользователя без хранения сеанса
  • Запускать долгие операции как задачи с отслеживанием состояния
  • Разворачивать удалённый сервер на ASP.NET Core с потоковым HTTP и масштабировать его без привязки к сеансу
  • Защищать сервер авторизацией OAuth 2.1 и противостоять внедрению инструкций через данные
  • Тестировать сервер на трёх уровнях: модульные, интеграционные и контрактные тесты, а также проверять поведение агента
  • Настраивать наблюдаемость: журналы, трассы и метрики OpenTelemetry в панели Aspire
  • Упаковывать сервер как .NET-инструмент, пакет NuGet, нативный исполняемый файл и контейнер Docker
  • Использовать MCP-серверы из своих приложений через Microsoft.Extensions.AI и Microsoft Agent Framework
  • Переводить существующие серверы с SDK 1.x на 2.x и поддерживать старых и новых клиентов одновременно

О курсе

Протокол контекста модели стал общим языком между ИИ-агентами и внешним миром: один сервер работает с любым совместимым клиентом, без отдельной интеграции под каждый.

Почти все курсы на stepik.org по MCP построены на Python. Этот курс — для экосистемы .NET: внедрение зависимостей, ASP.NET Core, OpenTelemetry, NuGet и привычные инструменты разработчика на C#.

Курс пригодится, если:

→ вы хотите, чтобы агент видел ваше решение целиком, собирал его и запускал тесты, а не угадывал по фрагментам;

→ нужно открыть агентам доступ к внутренней системе компании, не раздавая ключи и не теряя контроль;

→ у вас есть MCP-сервер на SDK 1.x и пора переходить на версию 2.x;

 вы выбираете, как встроить агентов в инфраструктуру, и хотите понимать протокол изнутри.

Сквозной учебный проект — сервер Calabonga.CodeAtlas, который даёт агенту доступ к решению .NET. Он проходит весь путь из названия курса: от первой программы (Hello World) с одним инструментом до защищённого, протестированного и опубликованного сервиса, готового к Production.

Курс опирается на актуальную спецификацию 2026-07-28 и SDK 2.x. Отдельный модуль посвящён переходу с первой версии SDK: большая часть материалов в сети ещё написана под неё.

Для кого этот курс

Для разработчиков на C# среднего уровня и выше, которые хотят, чтобы ИИ-агенты работали с их кодом, данными и внутренними сервисами по стандартному протоколу. Курс будет полезен архитекторам и ведущим разработчикам, выбирающим способ встроить агентов в инфраструктуру компании, а также тем, кто уже писал MCP-серверы на Python или на SDK 1.x и переходит на актуальную версию.

Подробнее о курсе. 

Комментарии к статье ()

Загрузка...

Что-то пошло не по сценарию и завершилось ошибкой. Перезагрузить страницу (F5) 🗙

Переподключаем сервер...

Переподключение сломалось... Пробуем еще раз сек.

Не получилось переподключится.
Пожалуйста, обновите страницу F5

Сессия была поставлена сервером на паузу.

Восстановить сессию не получилось.
Пожалуйста, обновите страницу F5.