В этом руководстве вы узнаете:
- Что такое семантическое ядро, какие основные функции оно предоставляет и как оно работает.
- Почему его расширение с помощью MCP делает его еще более мощным.
- Как создать агента ИИ с интеграцией Bright Data Web MCP с помощью Semantic Kernel.
Давайте погрузимся!
Что такое Semantic Kernel?
Semantic Kernel – это SDK с открытым исходным кодом, разработанный Microsoft, который помогает интегрировать модели ИИ и LLM в приложения для создания агентов ИИ и передовых решений GenAI. Он выступает в качестве готового к производству промежуточного программного обеспечения, предоставляя коннекторы к различным сервисам ИИ и обеспечивая выполнение как семантических (на основе подсказок), так и собственных (на основе кода) функций.
SDK доступен на языках C#, Python и Java. Это гибкое решение для генерации текста, выполнения завершений чата или подключения к внешним источникам данных и сервисам. На момент написания статьи репозиторий проекта на GitHub насчитывает более 26 тысяч звезд.
Основные возможности
Основными возможностями Semantic Kernel являются:
- Интеграция моделей ИИ: Подключение к таким сервисам, как OpenAI и Azure OpenAI, с единым интерфейсом для завершения чата, генерации текста и многого другого.
- Система плагинов: Поддерживает плагины с семантическими функциями (подсказками) и нативными функциями (C#, Python или Java) для расширения функциональности ИИ.
- ИИ-агенты: Позволяет создавать агентов, которые интерпретируют запросы пользователей и координируют работу нескольких плагинов и сервисов для решения сложных задач.
- Планирование и вызов функций: Помогает агентам разбивать и выполнять многоэтапные задачи, выбирая нужные плагины или функции.
- Генерация с расширением поиска (RAG): Интегрирует реальные данные в подсказки с помощью поиска и соединителей данных для получения более точных и актуальных ответов.
Принцип работы Semantic Kernel
Чтобы понять, как работает библиотека, необходимо знать ее основные компоненты:
- Ядро: Оркестрирует сервисы ИИ и плагины.
- Коннекторы сервисов ИИ: Связывают код приложения с различными моделями и сервисами ИИ через общий интерфейс.
- Плагины: Содержат семантические и собственные функции, расширяющие возможности агента.
- Агенты ИИ: Построены поверх ядра, используют плагины для обработки запросов и запуска рабочих процессов.
Зачем расширять Semantic Kernel с помощью интеграции MCP
Semantic Kernel – это SDK, не зависящий от модели, который позволяет создавать, оркестровать и развертывать сложные агенты ИИ, рабочие процессы и даже мультиагентные системы. Независимо от того, насколько сложной становится ваша архитектура, для функционирования этих рабочих процессов и агентов все равно требуется базовая модель ИИ.
Будь то OpenAI, Azure OpenAI или другая LLM, все модели имеют одно и то же фундаментальное ограничение: их знания статичны…
LLM обучаются на данных, которые представляют собой моментальный снимок во времени, а значит, их знания могут быстро устареть. Что еще более важно, они не могут взаимодействовать с живыми веб-сайтами или внешними источниками данных.
Именно здесь расширяемость Semantic Kernel за счет плагинов играет решающую роль. Интегрировав его с Web MCP от Bright Data, вы сможете расширить возможности своих агентов ИИ за пределы статических знаний, позволяя им получать свежие высококачественные данные непосредственно из Интернета.
Сервер Web MCP с открытым исходным кодом предоставляет доступ к более чем 60 инструментам ИИ, которые работают на базе инфраструктуры Bright Data для взаимодействия с Интернетом и сбора данных.
Даже на бесплатном уровне ваш агент ИИ уже может использовать два мощных инструмента:
| Инструмент | Описание |
|---|---|
search_engine |
Получение результатов поиска из Google, Bing или Yandex в формате JSON или Markdown. |
scrape_as_markdown |
Соскребает любую веб-страницу в чистый формат Markdown, минуя обнаружение ботов и CAPTCHA. |
Кроме того, Web MCP открывает десятки специализированных инструментов для сбора структурированных данных на таких платформах, как Amazon, LinkedIn, Yahoo Finance, TikTok и других. Подробнее об этом можно узнать на официальной странице GitHub.
Короче говоря, сочетание Semantic Kernel с Web MCP превращает статические рабочие процессы в динамические агенты ИИ, которые могут взаимодействовать с живыми веб-сайтами и получать доступ к веб-данным, чтобы генерировать идеи, основанные на реальном мире.
Как создать агента ИИ в Semantic Kernel, который подключается к Web MCP компании Bright Data
В этом руководстве вы узнаете, как подключить Web MCP Bright Data к агенту ИИ в Semantic Kernel, написанному на C#. В частности, вы будете использовать эту интеграцию для создания ИИ-агента, анализирующего Reddit, который:
- Использует инструменты Bright Data Web MCP для получения информации из постов Reddit.
- Обрабатывает полученные данные с помощью модели OpenAI GPT-5.
- Возвращает вам результаты в виде отчета в формате Markdown.
Примечание: приведенный ниже код написан на C# с использованием .NET 9. Однако вы можете легко перевести его на Python или Java – два других поддерживаемых языка программирования.
Выполните следующие шаги, чтобы начать работу!
Предварительные условия
Прежде чем приступить к работе, убедитесь, что у вас установлен :
- .NET 8.0 или выше установлен локально (в данном руководстве речь идет о .NET 9)
- ключ API OpenAI
- Учетная запись Bright Data с готовым ключом API
Не беспокойтесь о настройке учетной записи Bright Data, поскольку этот процесс будет рассмотрен в следующем шаге.
Шаг № 1: Настройка проекта .NET C#
Инициализируйте новый консольный проект .NET под названием SK_MCP_Agent с помощью команды:
dotnet new console -n SK_MCP_Agent
Затем войдите в папку проекта:
cd SK_MCP_Agent
Теперь вы должны увидеть следующую структуру файлов:
SK_MCP_Agent/
├──── Program.cs
├── SK_MCP_Agent.csproj
└──── obj/
├──── project.assets.json
├──── project.nuget.cache
├── SK_MCP_Agent.csproj.nuget.dgspec.json
├── SK_MCP_Agent.csproj.nuget.g.props
└── SK_MCP_Agent.csproj.nuget.g.targets
Если говорить подробно, то файл Program.cs содержит программу по умолчанию “Hello, World”. В этом файле вы разместите логику агента ИИ Semantic Kernel.
Теперь откройте папку с проектом в .NET C# IDE, например Visual Studio или Visual Studio Code. В терминале IDE установите необходимые зависимости с помощью следующих команд:
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.EnvironmentVariables
dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package Microsoft.SemanticKernel --prerelease
dotnet add package Microsoft.SemanticKernel.Agents.Core --prerelease
dotnet add package ModelContextProtocol --prerelease
dotnet add package System.Linq.AsyncEnumerable --prerelease
Необходимыми пакетами NuGet являются:
Microsoft.Extensions.Configuration.*: Обеспечивает конфигурацию на основе ключевых значений для чтения параметров из переменных окружения и пользовательских секретов .NET.Microsoft.SemanticKernel.*: Легкий SDK для интеграции ИИ LLM с обычными языками программирования, с инструментами для разработки агентов.ModelContextProtocol: Официальный клиент MCP на C#, который будет использоваться для подключения к Bright Data Web MCP.System.Linq.AsyncEnumerable: Предоставляет полный набор методов расширения LINQ дляIAsyncEnumerable<T>.
Примечание: Флаг --prerelease в dotnet add package указывает .NET CLI на установку последних (предварительных) версий пакета NuGet. Это необходимо для некоторых пакетов, поскольку они все еще находятся в стадии разработки или эксперимента.
Готово! Ваша среда разработки .NET настроена на создание агента ИИ на C# с использованием Semantic Kernel и интеграцией с Bright Data Web MCP.
Шаг № 2: Настройка загрузки секретов
Ваш агент ИИ будет опираться на сторонние компоненты, такие как модели OpenAI и сервер Bright Data Web MCP. Обе эти интеграции требуют аутентификации с помощью токенов API-ключей. Чтобы не раскрывать эти ключи непосредственно в коде, храните их в безопасном месте с помощью системы хранения пользовательских секретов .NET или переменных окружения.
Чтобы настроить это, сначала импортируйте пакет конфигурации:
using Microsoft.Extensions.Configuration;
Затем загрузите секреты в объект config с помощью:
var config = new ConfigurationBuilder()
.AddUserSecrets<Program>()
.AddEnvironmentVariables()
.Build();
Теперь вы можете получить доступ к своим секретам в коде следующим образом:
config["<имя_секрета>"].
Инициализируйте хранилище пользовательских секретов, выполнив следующую команду в папке проекта:
dotnet user-secrets init
Это создаст безопасное локальное хранилище для ваших секретов (т.е. ключей API).
Отлично! Теперь ваша программа на C# может безопасно работать с секретными учетными данными, не раскрывая их в исходном коде.
Шаг № 3: Протестируйте Web MCP Bright Data
Прежде чем подключаться к Web MCP Bright Data в своем агенте, сначала убедитесь, что ваша машина может запускать MCP-сервер.
Если у вас еще нет учетной записи Bright Data, создайте новую. Если есть, просто войдите в систему. Для быстрой настройки перейдите в раздел “MCP” на приборной панели и следуйте инструкциям:

В противном случае начните с генерации ключа API Bright Data. Затем сохраните его в надежном месте, так как он вам скоро понадобится. В этом разделе мы будем считать, что ключ API имеет права администратора, поскольку это упрощает процесс интеграции Web MCP.
Выполните следующую команду, чтобы установить Web MCP глобально в вашей системе:
npm install -g @brightdata/mcp
Затем проверьте, что локальный MCP-сервер работает, выполнив команду:
$Env:API_TOKEN="<YOUR_BRIGHT_DATA_API>"; npx -y @brightdata/mcp
Или, эквивалентно, в Linux/macOS:
API_TOKEN="<YOUR_BRIGHT_DATA_API>" npx -y @brightdata/mcp
Замените <YOUR_BRIGHT_DATA_API> на ваш фактический API-токен Bright Data. Команда устанавливает необходимую переменную окружения API_TOKEN и запускает Web MCP через пакет @brightdata/mcp.
В случае успеха вы должны увидеть журналы, похожие на этот:

При первом запуске Web MCP автоматически создает две зоны по умолчанию в вашей учетной записи Bright Data:
mcp_unlocker: Зона для Web Unlocker.mcp_browser: Зона для Browser API.
Сервер MCP опирается на эти две зоны для работы всех 60+ инструментов.
Чтобы убедиться, что зоны созданы, войдите в панель управления Bright Data. Перейдите на страницу “Прокси и Скрейпинг-инфраструктура“, и вы должны увидеть их в таблице зон:

Если ваш API-токен не имеет прав администратора, эти зоны не будут созданы для вас. В этом случае вы должны создать их вручную в дашборде и настроить их имена через переменные окружения(подробности смотрите на странице GitHub).
Важно: По умолчанию на MCP-сервере доступны только инструменты search_engine и scrape_as_markdown (и их пакетные версии). Эти инструменты включены в бесплатный уровень Web MCP.
Чтобы разблокировать расширенные инструменты, такие как автоматизация браузера и структурированные потоки данных, необходимо включить режим Pro. Для этого перед запуском Web MCP установите переменную окружения PRO_MODE="true":
$Env:API_TOKEN="<YOUR_BRIGHT_DATA_API>"; $Env:PRO_MODE="true"; npx -y @brightdata/mcp
Или, в Linux/macOS:
API_TOKEN="<YOUR_BRIGHT_DATA_API>" PRO_MODE="true" npx -y @brightdata/mcp
Режим Pro открывает все 60+ инструментов, но он не входит в бесплатный уровень и требует дополнительной оплаты.
Успех! Вы убедились, что сервер Web MCP работает на вашей машине. Завершите процесс MCP, поскольку на следующих шагах вам предстоит настроить агента Semantic Kernel для запуска сервера и подключения к нему.
Шаг № 4: Настройте интеграцию Web MCP
Теперь, когда ваша машина может выполнять Web MCP, начните с добавления ключа API Bright Data, который вы получили ранее, в пользовательские секреты:
dotnet user-secrets set "BrightData:ApiKey" "<YOUR_BRIGHT_DATA_API_KEY>"
Замените место <YOUR_BRIGHT_DATA_API_KEY> своим настоящим ключом API. Эта команда надежно сохранит ключ в хранилище секретов вашего проекта.
Помните, что вы можете добиться того же результата, задав ключ API в качестве переменной окружения:
$Env:BrightData__ApiKey="<YOUR_BRIGHT_DATA_API_KEY>".
Или, на macOS/Linux:
export BrightData__ApiKey="<YOUR_BRIGHT_DATA_API_KEY>".
Примечание: Microsoft.Extensions.Configuration преобразует BrightData__ApiKey в BrightData:ApiKey за вас.
Далее используйте McpClientFactory из пакетаModelContextProtocol для определения MCP-клиента и подключения к Web MCP:
await using var mcpClient = await McpClientFactory.CreateAsync(new StdioClientTransport(new()
{
Name = "BrightDataWebMCP",
Command = "npx",
Arguments = ["-y", "@brightdata/mcp"],
EnvironmentVariables = new Dictionary<string, string?
{
{ "API_TOKEN", config["BrightData:ApiKey"] },
// { "PRO_MODE", "true" }, // <-- Необязательно: включение режима Pro Mode
}
}));
Приведенная выше конфигурация приводит к выполнению той же команды npx, что и в предыдущих шагах настройки, с необходимой переменной окружения. Обратите внимание, что PRO_MODE необязательна, а API_TOKEN считывается из секрета BrightData:ApiKey, определенного ранее.
Далее загрузите список всех доступных инструментов:
var tools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
Сценарий выполнит команду npx, чтобы запустить Web MCP как локальный процесс и подключиться к нему, получив доступ к инструментам, которые он предоставляет.
Вы можете убедиться, что подключение к Web MCP работает и что у вас есть доступ к его инструментам, зарегистрировав их все:
foreach (var tool in tools)
{
Console.WriteLine($"{tool.Name}: {tool.Description}");
}
Если вы запустите свой скрипт сейчас, вы должны увидеть вывод, похожий на этот:

Это 2 инструмента по умолчанию (+ 2 пакетные версии), доступные Web MCP в бесплатном режиме. В режиме Pro вы получите доступ ко всем 60 с лишним инструментам.
Замечательно! Приведенный выше результат подтверждает, что интеграция с Web MCP работает отлично!
Шаг № 5: Построение ядра с доступом к инструментам MCP
В Semantic Kernel ядро выступает в качестве контейнера Dependency Injection, который управляет всеми сервисами и плагинами, необходимыми для работы вашего приложения ИИ. Как только вы предоставите свои службы и плагины ядру, они могут быть использованы ИИ, когда это необходимо.
Теперь пришло время создать ядро для интеграции OpenAI с поддержкой вызова инструментов через MCP. Начните с добавления ключа API OpenAI в пользовательские секреты:
dotnet user-secrets set "OpenAI:ApiKey" "<YOUR_OPENAI_KEY>".
Как упоминалось ранее, вы также можете установить это как переменную окружения под названием OpenAI__ApiKey.
Далее определите новое ядро, которое подключается к OpenAI:
var builder = Kernel.CreateBuilder();
builder.Services
.AddOpenAIChatCompletion(
modelId: "gpt-5-mini",
apiKey: config["OpenAI:ApiKey"]
);
Ядро kernel = builder.Build();
В этом примере ядро подключается к модели gpt-5-mini (но вы можете настроить любую другую модель OpenAI), используя ключ API, хранящийся в ваших пользовательских секретах.
Затем добавьте в ядро плагин для использования инструмента:
kernel.Plugins.AddFromFunctions("BrightData", tools.Select(aiFunction => aiFunction.AsKernelFunction()));
Эта строка кода преобразует ваши инструменты MCP в функции, готовые к использованию в ядре, которые могут быть вызваны указанной моделью ИИ.
Необходимые импорты для этого раздела:
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
Отлично! Теперь у вас есть полностью настроенное ядро, которое является ядром вашего приложения ИИ Semantic Kernel.
Шаг № 6: Определите агента ИИ
Начните с импорта класса Agents из SemanticKernel:
using Microsoft.SemanticKernel.Agents;
Затем используйте ядро для инициализации нового агента ИИ, настроенного на автоматический вызов инструментов:
var executionSettings = new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() // Включить автоматический вызов функций для LLM
};
var agent = new ChatCompletionAgent()
{
Name = "RedditAgent",
Kernel = kernel,
Arguments = new KernelArguments(executionSettings),
};
По сути, созданный здесь агент может выполнять инструменты, предлагаемые Bright Data Web MCP. Это происходит всякий раз, когда модель ИИ определяет, что один или несколько инструментов необходимы для достижения того, что описано во входном запросе.
Обратите внимание, что агент был назван “RedditAgent”, потому что это руководство фокусируется на создании агента, ориентированного на Reddit. Адаптируйте название под свой проект, если вы создаете агента ИИ на основе семантического ядра для другой цели.
Круто! Следующим шагом будет просто выполнение запроса с помощью агента.
Шаг № 7: Выполнение задачи в агенте
Чтобы проверить возможности агента ИИ по поиску веб-данных с помощью инструментов, предоставляемых Bright Data Web MCP, вам понадобится соответствующая подсказка. Например, можно попросить агента ИИ получить информацию из определенного сабреддита следующим образом:
var prompt = @"
Соскрести страницы со следующего субреддита:
https://www.reddit.com/r/webscraping/
Из полученного контента создайте отчет в формате Markdown, включающий:
- Официальное описание сабреддита и ключевые статистические данные (тип сообщества, дата создания)
- Список URL-адресов ~10 последних постов
";
Это идеальное задание для проверки возможностей поиска информации в Интернете. Стандартные модели OpenAI не справляются с такой задачей, поскольку не могут программно получить доступ к странице Reddit для получения данных в реальном времени:

Примечание: Приведенный выше результат ненадежен, так как большая часть контента либо ложна, либо полностью сфабрикована. Модели OpenAI не могут надежно получать свежие веб-данные из Сети без внешних инструментов, подобных тем, что предоставляет Bright Data.
Благодаря инструментам, доступным в Web MCP, ваш агент сможет получить необходимые данные из Reddit и представить точный результат. Выполните задание и выведите результат в терминал с помощью:
ChatMessageContent response = await agent.InvokeAsync(prompt).FirstAsync();
Console.WriteLine($"nnResponse:n{response.Content}");
Этого достаточно для проверки одного запроса. В реальных сценариях вы, как правило, хотите поддерживать работу агента и следить за контекстом, реализовав цикл REPL с памятью для отслеживания предыдущих взаимодействий.
Вот и все! Ваш агент ИИ-эксперт Reddit, созданный с помощью Semantic Kernel и интегрированный с Bright Data Web MCP, теперь полностью функционален.
Шаг № 8: Соберите все вместе
Финальный код в файле Program.cs:
using Microsoft.Extensions.Configuration;
using ModelContextProtocol.Client;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Agents;
// Загрузите пользовательские секреты и переменные окружения для ключей API
var config = new ConfigurationBuilder()
.AddUserSecrets<Program>()
.AddEnvironmentVariables()
.Build();
// Создайте MCP-клиент для MCP-сервера Bright Data Web
await using var mcpClient = await McpClientFactory.CreateAsync(new StdioClientTransport(new()
{
Name = "BrightDataWebMCP",
Command = "npx",
Arguments = ["-y", "@brightdata/mcp"],
EnvironmentVariables = new Dictionary<string, string?
{
{ "API_TOKEN", config["BrightData:ApiKey"] },
// { "PRO_MODE", "true" }, // <-- Необязательно: включение режима Pro Mode
}
}));
// Получение списка инструментов, доступных на MCP-сервере Bright Data Web
var tools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
// Создайте семантическое ядро и зарегистрируйте инструменты MCP в качестве функций ядра
var builder = Kernel.CreateBuilder();
builder.Services
.AddOpenAIChatCompletion(
modelId: "gpt-5-mini",
apiKey: config["OpenAI:ApiKey"]
);
Kernel kernel = builder.Build();
// Создаем плагин из инструментов MCP и добавляем его в коллекцию плагинов ядра
kernel.Plugins.AddFromFunctions("BrightData", tools.Select(aiFunction => aiFunction.AsKernelFunction()));
// Включите автоматический вызов функций для LLM
var executionSettings = new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
};
// Определите агента ИИ с интеграцией MCP
var agent = new ChatCompletionAgent()
{
Name = "RedditAgent",
kernel = kernel,
Arguments = new KernelArguments(executionSettings), // Передаем настройки для вызовов инструмента MCP
};
// Протестируйте ИИ-агента с помощью запроса на скраппинг сабреддита
var prompt = @"
Соскребите страницы из следующего сабреддита:
https://www.reddit.com/r/webscraping/
На основе соскобленного контента создайте отчет в формате Markdown, включающий:
- Официальное описание сабреддита и ключевые статистические данные (тип сообщества, дата создания)
- Список URL-адресов ~10 последних постов
";
ChatMessageContent response = await agent.InvokeAsync(prompt).FirstAsync();
Console.WriteLine($"nnResponse:n{response.Content}");
Вот это да! Всего за 65 строк C# вы создали агента ИИ Semantic Kernel с интеграцией Bright Data Web MCP.
Запустите своего агента с помощью:
dotnet run
Результат должен выглядеть примерно так:

Обратите внимание на то, как агент сканирует страницу /about, чтобы получить информацию о субреддите, а затем страницы /new, чтобы получить самые последние сообщения.
Все данные, представленные в выводе, верны, в чем можно убедиться, посетив страницу /about субреддита:

Данные в выводе агента ИИ полностью совпадают с теми, что показаны на этой странице. То же самое относится и к последним сообщениям, которые можно найти на странице /new сабреддита.
Единственное отличие – порядок постов, который определяется фронтендом Reddit и в данном случае не имеет значения.
Скраппинг Reddit сложен, поскольку он защищен антибот системами, блокирующими автоматические запросы. Благодаря возможностям веб-скрейпинга с обходом антиботов, предоставляемым сервером Bright Data Web MCP, ваш агент ИИ получает доступ к мощному набору инструментов для получения веб-данных, взаимодействия и поиска.
Этот пример демонстрирует лишь один из множества возможных сценариев. Благодаря широкому набору инструментов Bright Data, доступных через Semantic Kernel, вы можете создавать более сложные агенты, адаптирующиеся ко многим другим сценариям использования.
И вуаля! Вы только что ощутили мощь интеграции Bright Data Web MCP в агенте ИИ Semantic Kernel на C#.
Заключение
В этой статье вы узнали, как подключить агента ИИ, созданного с помощью Semantic Kernel, к Web MCP Bright Data(который теперь доступен на бесплатном уровне!). Такая интеграция дает агенту расширенные возможности, включая веб-поиск, извлечение данных и взаимодействие в реальном времени.
Для создания более продвинутых агентов ИИ изучите более широкий набор продуктов и услуг в инфраструктуре ИИ Bright Data. Эти инструменты предназначены для обеспечения различных рабочих процессов ИИ и использования агентов.
Зарегистрируйте бесплатную учетную запись Bright Data сегодня и начните экспериментировать с решениями для веб-данных, готовых к ИИ!