В результате протокола контекста модели (MCP) произошел взрыв, который является хорошим признаком того, что люди пытаются создавать различные решения с использованием крупных языковых моделей (LLMS), но теперь с их собственными системами. MCP — это посредник между LLMS и вашими инструментами.
После того, как я выполнил короткий пример Python с Claude Code, я подумал, что расширил версию C# с использованием GitHub Copilot — все в коде Visual Studio. Преимущество использования IDE заключается в том, что у нас будет возможность интегрироваться с другими серверами MCP, не покидая IDE.
Microsoft рассмотрела MCP с апреля, и у моего поста есть свое происхождение в этом сообщении в блоге Dev. В то время как Microsoft обычно не работает в темпе, в наши дни они хорошо показывают свой прогресс. Я собираюсь предположить, что у вас есть код против кода и подписался в GitHub Copilot.
Внутри трасса
Поскольку Microsoft выпускает это, у вас, возможно, уже есть код VS, работающий с «режимом агента». Это ясно, где они будут сосредоточиться на своих агентских решениях. Просто включите чат GitHub Copilot и посмотрите внизу экрана, на выпадении «Спросите»:
Если у вас нет режима агента, вы можете попробовать поиск (в командной палитре) для настройки пользователя.
И если это не сработает, или вы не хотите связываться со своей IDE, вы можете получить инсайдеров кода Visual Studio. Здесь размещаются последние сборки (но, вероятно, не самые стабильные). Не волнуйтесь, хотя, потому что это предназначено для сидения рядом с вашим стабильным и кодом.
Это довольно аккуратный ход, так как он позволяет Microsoft следовать новым тенденциям, таким как MCP, не тонув их флот. Единственная вещь, которую вы должны сделать до того, как мы начнем,-добавить «кодовые-инснады» в ваш путь команды, чтобы мы могли найти его из командной оболочки. Просто начните вводить «команду оболочки» в палитре команд:
Просто чтобы вы уверены, что они могут бежать вместе, я могу заверить вас, что они выглядят по -разному в доке:
Код-индикаторы-это то, что в зеленом!
Теперь давайте получим то, что нам нужно для сервера MCP.
Настройка сервера MCP
Начиная с командной оболочки, давайте настроим консольный проект .NET для MCP:
Затем давайте перейдем к проекту и явно добавим несколько пакетов. Мы также должны быть в состоянии сделать это в коде VS, но мы можем быть более конкретными здесь:
Теперь давайте откроем код против каталога проекта в командной строке. Это гарантирует, что вы унаследуете контекст правильно:
Затем замените шаблон Program.cs с кодом для настройки сервера MCP:
Использование microsoft.extensions.ePectendencyInction; Использование microsoft.extensions.hosting; Использование ModelContextProtocol.Server; Использование System.componentModel; var builder = host.createApplicationbuilder (args); builder.logging.addconsole (consolelogoptions => {// Настроить все журналы, чтобы перейти к stderr consolelogoptions.logtostandarderrorthroshold = loglevel.trace;}); Builder.Services .AddMCPSERVER () .WithStDioServerTransport () .withtoolsfromassembly (); ждать builder.build (). runasync (); 1234567891011121314151617 с использованием microsoft.extensions.epectendencyInction; Использование microsoft.extensions.hosting; Использование ModelContextProtocol.Server; Использование System.componentModel; var builder = host.createApplicationbuilder (args); builder.logging.addconsole (consolelogoptions => {// Настроить все журналы, чтобы перейти к stderr consolelogoptions.logtostandarderrorthroshold = loglevel.trace;}); Builder.Services .AddMCPSERVER () .WithStDioServerTransport () .withtoolsfromassembly (); ждать builder.build (). runasync ();
Это не слишком отличается в принципе от примера Python через пару недель назад. Обратите внимание на запрос на поиск инструментов в запущенной сборке. Это эквивалент самоанализа, который мы сделали в Python. MCP -сервер эффективно действует как контейнер, и он рекламирует свои доступные инструменты.
Я использую тот же простой инструмент секретного слова из этого примера Python. Это просто возвращает наше секретное слово:
[McpServerToolType]
Public Static Class SecretWordTool {
[McpServerTool, Description(«Reveal the secret word.»)]
Public Static String Secretword (String Message) => «Abracadabra»; } 123456
[McpServerToolType]Public Static Class SecretWordTool { [McpServerTool, Description(«Reveal the secret word.»)] Public Static String SecretWord (String Message) => «Abracadabra»;}
Обратите внимание, что атрибут (термин в квадратных скобках, который предоставляет сигнал метаданных о коде под ним) отмечает метод как инструмент MCP. Опять же, у нас есть проклятие MCP: небольшая путаница между сервером и инструментом. Эти имена атрибутов действительно не помогают.
Теперь нажмите значок ответвления «Выбрать инструменты» в поле чата:
Вы должны увидеть список инструментов. Сейчас мы собираемся зарегистрировать наш новый инструмент.
Поиск настроек MCP на вкладке «Настройки», через шестерни внизу слева:
Нажмите на ссылку «Редактировать в настройках», и вы увидите настройки файла JSON:
Раздел MCP может быть пустым или в этом случае иметь инструмент времени по умолчанию. Посмотрите внимательно, и вы увидите стрелку «старт» чуть выше названия метода на «серверах».
Просто добавьте следующее (или замените пример) в файл JSON, чтобы описать наш инструмент:
{«Входы»: []»Servers»: {«theneWStackMcp»: {«type»: «stdio», «Команда»: «Dotnet», «Args»: [
«run»,
«—project»,
«/Users/eastmad/thenewstack/thenewstackMCP/thenewstackMCP.csproj»
]
}}} 1234567891011121314 {«Входы»: []»Servers»: {«theneWStackMcp»: {«type»: «stdio», «Команда»: «Dotnet», «Args»: [ «run», «—project», «/Users/eastmad/thenewstack/thenewstackMCP/thenewstackMCP.csproj» ] }}}
Мой абсолютный путь для моего MacBook. Я описал Stdio в своем последнем посте на MCP.
Сохраните это. Теперь нажмите кнопку «Пуск», которая должна появляться выше:
Возвращаясь к нашему чату, мы видим, что кнопка обновления обнаружила наш новый инструмент. Поэтому нажмите кнопку «Выбрать инструменты» еще раз, и вы увидите это в конце списка инструментов:
Да, мы существуем! Ура.
Просить об этом секретном словом
Теперь мы можем запустить секретное слово непосредственно через чат. То есть Copilot теперь семантически понимает, что существует инструмент под названием «Секретный слово», к которому он имеет доступ:
Microsoft знает, что с помощью этого уровня кодря, пользователя теперь можно убедить запустить код, не осознавая его. По этой причине система прерывает разговор, чтобы проверить, что это задумано.
Этот синий «продолжение» наборам набора разрешений на сеанс, в том числе разрешить ли инструмент работать. Как только мы это сделаем, мы получаем результат от CHATGPT:
После этого мы можем продолжить расширение инструментов на что -то более полезное.
Заключение
Если мы сравним этот процесс с примером Python с Claude Code, я не думаю, что мы пока получаем много преимуществ от интеграции визуального кода-потому что MCP на данный момент явно является болтом. Это явно направлено на то, что ранние разработчики пытаются выяснить наш рабочий процесс MCP и последствия.
Я могу предупредить Microsoft, вынуждающую свое собственное решение для пользователей вовремя, но это то, где мы сейчас находимся. Все на вечеринке MCP.
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Дэвид был лондонским профессиональным разработчиком программного обеспечения в Oracle Corp. и British Telecom, а также консультантом, помогающим командам работать более гибким образом. Он написал книгу по дизайну пользовательского интерфейса и с тех пор пишет технические статьи …. Подробнее от Дэвида Истмана