Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье показано, как размещать удаленные серверы протокола контекста модели (MCP) в Функциях Azure. Вы также узнаете, как использовать встроенную проверку подлинности для настройки авторизации конечной точки сервера и повышения безопасности средств ИИ.
Существует два способа размещения удаленного сервера MCP в Функциях Azure:
| Параметр сервера MCP | Description | Оптимален для |
|---|---|---|
| Сервер расширения MCP | Использует расширение Azure Functions MCP для создания пользовательских серверов MCP, где триггер этого расширения позволяет задавать конечные точки вашего инструмента. Эти серверы поддерживаются на всех языках функций и разрабатываются, развертываются и управляются как любое другое приложение-функцию. | Если вы уже знакомы с функциями и ее моделью программирования на основе привязок. |
| Локальный сервер | Функции могут размещать проект сервера MCP, созданный с помощью стандартных пакетов SDK MCP. | Когда вы уже создали сервер с помощью официальных пакетов SDK MCP и ищете основанные на событиях, бессерверные и масштабируемые размещение в Azure. |
Замечание
Возможность использования Azure Functions для размещения серверов MCP, которые вы создаете с помощью официальных SDK MCP, в настоящее время находится в стадии предварительного просмотра.
В этом руководстве рассматриваются оба варианта сервера MCP, поддерживаемые функциями. Выберите вкладку, которая лучше всего соответствует вашему сценарию.
В этом руководстве вы используете Visual Studio Code для:
- Создайте проект сервера MCP с помощью расширения MCP.
- Запустите и проверьте сервер MCP локально.
- Создайте приложение-функцию в Azure.
- Разверните проект сервера MCP.
- Включите встроенную проверку подлинности.
Это важно
В настоящее время эта статья поддерживает только C#, Python и TypeScript. Чтобы завершить краткое руководство, выберите один из поддерживаемых языков в верхней части статьи.
Эта статья поддерживает версию 4 модели программирования Node.js для Функции Azure.
Эта статья поддерживает версию 2 модели программирования Python для Функции Azure.
Предпосылки
Visual Studio Code с этими расширениями:
Расширение "Функции Azure". Это расширение требует основные средства Azure Functions Core Tools и пытается установить их, если они недоступны.
Azure CLI. Вы также можете выполнять команды Azure CLI в Azure Cloud Shell.
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Создание проекта сервера MCP
Используйте Visual Studio Code для локального создания проекта сервера MCP на предпочитаемом языке.
В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. Найдите и выполните команду
Azure Functions: Create New Project....Выберите расположение каталога для рабочей области проекта и нажмите кнопку Выбрать. Нужно либо создать новую папку, либо выбрать пустую папку для рабочей области проекта. Не выбирайте папку проекта, которая является частью рабочей области.
Введите следующие сведения в соответствии с запросами.
Подсказка Отбор Выбор типа проекта Выберите C#.Выберите среду выполнения .NET Выберите .NET 8.0 LTS.Выбор шаблона для первой функции проекта Выберите MCP Tool trigger.Укажите имя функции Введите McpTrigger.Укажите пространство имен Введите My.Functions.Уровень авторизации Выберите FUNCTION, для которого требуется ключ доступа при подключении к удаленному серверу MCP.Выбор способа открытия проекта Выберите Open in current window.
Введите следующие сведения в соответствии с запросами.
Подсказка Отбор Выбор типа проекта Выберите TypeScript.Выбор шаблона для первой функции проекта Выберите MCP Tool trigger.Укажите имя функции Введите mcpToolTrigger.Уровень авторизации Выберите FUNCTION, для которого требуется ключ доступа при подключении к удаленному серверу MCP.Выбор способа открытия проекта Выберите Open in current window.
Введите следующие сведения в соответствии с запросами.
Подсказка Отбор Выбор типа проекта Выберите Python.Выберите интерпретатор Python для создания виртуальной среды Выберите предпочтительный интерпретатор Python. Если нужный вариант не отображается, введите полный путь к двоичному файлу Python. Выбор шаблона для первой функции проекта Выберите MCP Tool trigger.Имя создаваемой функции Введите mcp_trigger.Уровень авторизации Выберите FUNCTION, для которого требуется ключ доступа при подключении к удаленному серверу MCP.Выбор способа открытия проекта Выберите Open in current window.
С помощью этой информации Visual Studio Code создает проект кода для триггера сервера MCP. Файлы локального проекта можно просмотреть в Explorer.
Локальный запуск сервера MCP
Для запуска приложений-функций требуется компонент хранилища. Перед запуском сервера запустите локальный эмулятор хранилища:
В local.setting.jsonубедитесь, что у вас есть
"AzureWebJobsStorage": "UseDevelopmentStorage=true".В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и выберите
Azurite: Start.Проверьте нижнюю панель и убедитесь, что службы эмуляции Azurite выполняются. Если да, теперь сервер можно запустить локально.
Чтобы запустить локально, нажмите клавишу F5.
Для запуска приложений-функций требуется компонент хранилища. Перед запуском сервера запустите локальный эмулятор хранилища:
В local.setting.jsonубедитесь, что у вас есть
"AzureWebJobsStorage": "UseDevelopmentStorage=true".В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и выберите
Azurite: Start.Проверьте нижнюю панель и убедитесь, что службы эмуляции Azurite выполняются. Если да, теперь сервер можно запустить локально.
Чтобы запустить локально, нажмите клавишу F5.
Для запуска приложений-функций требуется компонент хранилища. Перед запуском сервера запустите локальный эмулятор хранилища:
В local.setting.jsonубедитесь, что у вас есть
"AzureWebJobsStorage": "UseDevelopmentStorage=true".В Visual Studio Code нажмите клавишу F1, чтобы открыть палитру команд. В палитре команд найдите и выберите
Azurite: Start.Проверьте нижнюю панель и убедитесь, что службы эмуляции Azurite выполняются. Если да, теперь сервер можно запустить локально.
Чтобы запустить локально, нажмите клавишу F5.
Тестирование сервера
.vscodeНайдите каталог и откройтеmcp.jsonего. Редактор должен добавить сведения о подключении сервера.Запустите сервер, нажав кнопку "Пуск " над именем сервера.
При подключении к серверу отображается количество средств, доступных выше имени сервера.
Откройте чат Visual Studio Code Copilot в режиме агента, а затем задайте вопрос. Например, "Приветствие с именем #your-local-server-name". Этот вопрос гарантирует, что Copilot использует сервер для ответа на этот вопрос.
Когда Copilot запрашивает запуск средства на локальном сервере MCP, нажмите кнопку "Разрешить".
Отключитесь от сервера после завершения тестирования, нажав кнопку "Остановить" и
Cntrl+Cперестав запускать его локально.
Подсказка
В окне чата Copilot щелкните значок инструмента в нижней части, чтобы просмотреть список серверов и инструментов, доступных для чата. Убедитесь, что локальный сервер MCP проверяется при тестировании.
Удаленная авторизация сервера MCP
Существует два способа уменьшить или запретить несанкционированное использование конечных точек удаленного сервера MCP:
| Метод | Description |
|---|---|
| Встроенная проверка подлинности сервера (предварительная версия) | Функции включают встроенную проверку подлинности и авторизацию службы приложений , реализующую требования OAuth для протокола спецификации авторизации MCP . Клиенты, пытающиеся получить доступ к серверу, перенаправляются к настроенному поставщику удостоверений, например Microsoft Entra ID, для проверки подлинности перед разрешением на подключение. Этот метод обеспечивает высокий уровень безопасности для конечных точек средства. |
| Проверка подлинности на основе ключей | По умолчанию Функции реализуют требование ключа доступа, чтобы клиенты, пытающиеся использовать средства сервера MCP, должны представлять значение общего секретного ключа в заголовке запроса. Хотя не обеспечивается тот же уровень безопасности, что и проверка подлинности на основе OAuth, ключи доступа затрудняют доступ к общедоступным средствам.
Anonymous Используйте уровень доступа, чтобы отключить ключи доступа на сервере при использовании проверки подлинности на основе OAuth. |
Замечание
В этом руководстве содержатся подробные инструкции по настройке встроенной функции авторизации сервера и проверки подлинности, которая также может называться проверкой подлинности службы приложений в других статьях. Общие сведения о функции и некоторые рекомендации по использованию см. в статье "Настройка встроенной авторизации сервера (предварительная версия).
Отключение проверки подлинности на основе ключей
Встроенная функция авторизации сервера — это компонент, отделенный от функций Azure. При использовании проверки подлинности сервера рекомендуется сначала отключить проверку подлинности на основе ключей, разрешая анонимный доступ.
Чтобы отключить хостовую аутентификацию на сервере MCP, установите параметр system.webhookAuthorizationLevel в host.json на Anonymous в файле:
{
"version": "2.0",
"extensions": {
"mcp": {
...
"system": {
"webhookAuthorizationLevel": "Anonymous"
}
}
}
}
Создание приложения-функции в Azure
Создайте приложение-функцию в плане потребления Flex в Azure, на котором размещен сервер MCP.
В портал Azure в меню или домашней странице выберите пункт "Создать ресурс".
Выберите "Начало работы" и "Создать" в разделе "Приложение-функция".
В разделе "Выбор размещения" выберите "Выбор потребления> Flex".
На странице Основные сведения используйте параметры приложения-функции как указано в таблице ниже:
Setting Рекомендуемое значение Description Subscription Ваша подписка Подписка, в которой создается новое приложение-функция. Группа ресурсов myResourceGroup Имя новой группы ресурсов, в которой создается приложение-функция. Имя приложения-функции Глобально уникальное имя Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z(без учета регистра),0-9и-.Регион Предпочтительный регион Выберите регион , расположенный рядом с вами или рядом с другими службами, к которым могут обращаться ваши функции. Неподдерживаемые регионы не отображаются. Дополнительные сведения см. в разделе "Просмотр поддерживаемых в настоящее время регионов". Стек среды выполнения Предпочитаемый язык Выберите один из поддерживаемых стеков среды выполнения языка. Редактирование на портале с помощью Visual Studio Code для Интернета в настоящее время доступно только для Node.js, приложений PowerShell и Python. Библиотека классов C# и функции Java должны быть разработаны локально. Версия Версия языка Выберите поддерживаемую версию стека среды выполнения языка. Размер экземпляра По умолчанию Определяет объем памяти экземпляра, выделенной для каждого экземпляра приложения. Дополнительные сведения см. в разделе "Размеры экземпляров". На странице хранилища примите поведение по умолчанию для создания новой учетной записи хранения узла по умолчанию или выберите использовать существующую учетную запись хранения.
На странице мониторинга убедитесь, что выбран параметр Enable Application Insights . Примите значение по умолчанию для создания нового экземпляра Application Insights или выберите существующий экземпляр. При создании экземпляра Application Insights вам также предлагается выбрать рабочую область Log Analytics.
На странице проверки подлинности измените тип проверки подлинности на Управляемое удостоверение для всех ресурсов. С помощью этого параметра также создается управляемое удостоверение, назначаемое пользователем, которое приложение использует для доступа к этим ресурсам Azure с помощью проверки подлинности идентификатора Microsoft Entra. Управляемые удостоверения с идентификатором Microsoft Entra обеспечивают высокий уровень безопасности для подключения к ресурсам Azure.
Примите параметры по умолчанию на оставшихся вкладках, а затем нажмите кнопку "Просмотр и создание ", чтобы просмотреть выбранную конфигурацию приложения.
Когда вы удовлетворены, выберите «Создать» для подготовки и развертывания функционального приложения и связанных ресурсов.
Выберите значок Уведомления в правом верхнем углу портала. Вы должны увидеть сообщение Развертывание выполнено.
Выберите Перейти к ресурсу для просмотра нового приложения-функции. Можно также установить флажок Закрепить на панели мониторинга. Закрепление упростит возвращение к этому ресурсу функционального приложения с панели управления.
Развертывание проекта сервера MCP
Это важно
При развертывании на существующее функциональное приложение его содержимое всегда перезаписывается в Azure.
В командной палитре введите и выберите Функции Azure: Развернуть в функциональном приложении.
Выберите только что созданное функциональное приложение. При появлении запроса на перезапись предыдущих развертываний выберите «Развернуть», чтобы развернуть функциональный код в новом ресурсе функционального приложения.
После завершения развертывания выберите "Просмотреть выходные данные ", чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.
Приложения Python также требуют добавления этого параметра приложения:
PYTHONPATH=/home/site/wwwroot/.python_packages/lib/site-packages.
Теперь можно развернуть серверный проект:
Это важно
При развертывании на существующее функциональное приложение его содержимое всегда перезаписывается в Azure.
В командной палитре введите и выберите Функции Azure: Развернуть в функциональном приложении.
Выберите только что созданное функциональное приложение. При появлении запроса на перезапись предыдущих развертываний выберите «Развернуть», чтобы развернуть функциональный код в новом ресурсе функционального приложения.
После завершения развертывания выберите "Просмотреть выходные данные ", чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.
После завершения развертывания в Visual Studio Code появится уведомление о подключении к серверу. Нажмите кнопку «Подключиться», чтобы редактор настроил информацию о подключении сервера в mcp.json.
Включение встроенной авторизации сервера и проверки подлинности
В следующей инструкции показано, как включить встроенную функцию авторизации и проверки подлинности в серверном приложении и настроить идентификатор Microsoft Entra в качестве поставщика удостоверений. По завершении вы протестируете, подключившись к серверу с помощью Visual Studio Code, и убедитесь, что перед подключением вам будет предложено пройти аутентификацию.
Настройка проверки подлинности в серверном приложении
Откройте серверное приложение на портале Azure и выберите "Параметры>" в меню слева.
Выберите Добавить поставщик удостоверений>Microsoft в качестве поставщика удостоверений.
Для выбора клиента для приложения и его пользователей выберите конфигурацию рабочей силы (текущий клиент).
В разделе регистрации приложений используйте следующие параметры:
Setting Отбор Тип регистрации приложения Создание регистрации приложения Имя Введите описательное имя приложения Срок действия секрета клиента Рекомендуется: 180 дней Поддерживаемые типы учетных записей Текущий клиент — один клиент В разделе "Дополнительные проверки:" для клиентского приложения выберите"Разрешить запросы из определенных клиентских приложений", щелкните значок карандаша, добавьте идентификатор
aebc6443-996d-45c2-90f0-388ff96faa56клиента Visual Studio Code и нажмите кнопку "ОК". Оставьте остальные разделы так, как они есть.В разделе "Параметры проверки подлинности службы приложений " используйте следующие параметры:
Setting Отбор Ограничение доступа Требовать проверку подлинности Запросы без проверки подлинности HTTP 401 Неавторизован: рекомендуется для интерфейсов программирования приложений (API) Хранилище токенов Установите флажок, позволяющий обновить токен Нажмите кнопку "Добавить". После распространения параметров вы увидите следующий результат:
Предварительная авторизация Visual Studio Code в качестве клиента
Выберите имя приложения Entra рядом с Microsoft. Это действие переносит вас на Обзор ресурса приложения Entra.
В меню слева найдите элемент "Управление—> предоставление API".
В разделе "Авторизованные клиентские приложения" выберите +Добавить клиентское приложение.
Введите идентификатор клиента Visual Studio Code:
aebc6443-996d-45c2-90f0-388ff96faa56Выберите поле перед областью, которая выглядит следующим
api://abcd123-efg456-hijk-7890123/user_impersonationобразом.Выберите Добавить приложение.
Настройка защищенных метаданных ресурсов (предварительная версия)
В том же представлении Опубликовать API найдите раздел Области и скопируйте область, которая позволяет администраторам и пользователям дать согласие на действия в приложении Entra. Это значение выглядит следующим образом
api://abcd123-efg456-hijk-7890123/user_impersonation.Выполните ту же команду, что и предыдущая, чтобы добавить параметр
WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES:az functionapp config appsettings set --name <function-app-name> --resource-group <resource-group-name> --settings "WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES=<scope>"Кроме того, в представлении предоставления API найдите URI идентификатора приложения (выглядит как
api://abcd123-efg456-hijk-7890123) в верхней части и сохраните его для последующего шага.
Подключение к серверу
Откройте mcp.json внутри .vscode каталога.
При нажатии кнопки "Подключиться " во всплывающем окне после развертывания Visual Studio Code заполняет файл сведениями о подключении к серверу.
Если вы пропустите этот шаг, вы также можете открыть выходные данные (Ctrl/Cmd+Shift+U), чтобы найти кнопку подключения в строке в конце журналов развертывания.
Вы также можете вручную добавить сведения о подключении:
Получите домен сервера, выполнив следующую команду:
az functionapp show --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --query "defaultHostName" --output tsvВ Visual Studio Code откройте палитру команд, найдите и запустите команду MCP: Добавить сервер... и выполните следующие запросы:
Подсказка Предложение Тип добавляемого сервера HTTP URL-адрес сервера MCP https://<FUNCTION_APP_NAME>.azurewebsites.azurewebsites.net/runtime/webhooks/mcpИмя сервера remote-mcp-server Место установки сервера Workspace Visual Studio Code открывает
mcp.jsonфайл параметров для вас.
Следуйте инструкциям в следующем разделе, чтобы подключиться к серверу в зависимости от того, как вы настроили проверку подлинности.
Встроенная проверка подлинности и авторизация
Запустите удаленный сервер, нажав кнопку "Пуск " над именем сервера.
При появлении запроса на проверку подлинности с помощью Корпорации Майкрософт выберите "Разрешить", а затем войдите с помощью электронной почты (который использовался для входа на портал Azure).
При успешном подключении к серверу отображается количество средств, доступных выше имени сервера.
Откройте чат Visual Studio Code Copilot в режиме агента, а затем задайте вопрос. Например:
Greet with #your-remote-mcp-server-name.Остановите сервер после завершения тестирования.
Подробные сведения о том, что происходит, когда Visual Studio Code пытается подключиться к удаленному серверу MCP, см. протокол авторизации сервера.
С ключом доступа
Если вы не включаете встроенную проверку подлинности и авторизацию, а вместо этого хотите подключиться к серверу MCP с помощью ключа доступа, mcp.json должен содержать ключ доступа для функций в заголовках запроса регистрации сервера.
Visual Studio автоматически заполняет ключ доступа при запуске сервера.
Файл mcp.json должен выглядеть следующим образом:
{
"servers": {
"remote-mcp-server": {
"type": "http",
"url": "https://${input:functionapp-domain}/runtime/webhooks/mcp",
"headers": {
"x-functions-key": "${input:functions-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "functions-key",
"description": "Functions App Key",
"password": true
},
{
"type": "promptString",
"id": "functionapp-domain",
"description": "The domain of the function app.",
"password": false
}
]
}
Если вы хотите найти ключ доступа самостоятельно, перейдите в приложение-функцию на портале Azure. В меню слева найдите функции —> ключи приложения. В разделе "Системные ключи" найдите один из именованных mcp_extension.
Подсказка
Чтобы просмотреть журналы подключений, перейдите к имени сервера, а затем выберите "Показать выходные>данные". Для получения дополнительной информации о взаимодействии между клиентом (Visual Studio Code) и удаленным сервером MCP нажмите на значок шестеренки, затем выберите Трассировку.
Настройка агента Azure AI Foundry для использования ваших инструментов
Вы можете настроить агент в Azure AI Foundry для использования инструментов, доступных на серверах MCP, размещенных в службах Azure Functions.
На портале Foundry найдите агент, который нужно настроить с серверами MCP, размещенными на функциях.
В разделе "Инструменты" нажмите кнопку "Добавить", а затем выберите "+ Добавить новый инструмент".
Перейдите на вкладку "Настраиваемая", затем выберите "Протокол контекста модели (MCP)" и кнопку Создать.
Введите следующие данные:
- Имя: имя сервера
- Удаленная конечная точка сервера MCP:
- Сервер расширения MCP:
https://<server domain>/runtime/webhooks/mcp - Локальный сервер:
https://<server domain>/mcp
- Сервер расширения MCP:
- Проверка подлинности: выберите "Microsoft Entra"
- Тип: выберите "Управляемая идентификация проекта"
- Аудитория: это URI идентификатора приложения Entra из настройки защищенных метаданных ресурса
Рассмотрим пример.
Нажмите Подключиться.
Проверьте, задав вопрос, который можно ответить с помощью средства сервера в окне чата.
Протокол авторизации сервера
В выходных данных отладки из Visual Studio Code вы увидите серию запросов и ответов, когда клиент и сервер MCP взаимодействуют. При использовании встроенной авторизации сервера MCP вы увидите следующую последовательность событий:
- Редактор отправляет запрос инициализации серверу MCP.
- Сервер MCP отвечает с ошибкой, указывающей, что требуется авторизация. Ответ содержит указатель на защищенные метаданные ресурса (PRM) для приложения. Встроенная функция авторизации создает PRM для серверного приложения.
- Редактор получает PRM и использует его для идентификации сервера авторизации.
- Редактор пытается получить метаданные сервера авторизации (ASM) из известной конечной точки на сервере авторизации.
- Идентификатор Microsoft Entra не поддерживает ASM в известной конечной точке, поэтому редактор возвращается к использованию конечной точки метаданных OpenID Connect для получения ASM. Он пытается обнаружить это, вставив общеизвестную конечную точку перед любой другой информацией о пути.
- Спецификации OpenID Connect фактически определили известную конечную точку как расположенную после информации о пути, и именно там Microsoft Entra ID её размещает. Поэтому редактор пытается повторить попытку с этим форматом.
- Редактор успешно получает ASM. Затем эта информация используется вместе с собственным идентификатором клиента для входа. На этом этапе редактор запрашивает вход и дать согласие на использование приложения.
- При успешном входе и согласии редактор завершает проверку подлинности. Повторяется запрос инициализации к серверу MCP, на этот раз включая токен авторизации в запрос. Это повторное действие не отображается на уровне выходных данных отладки, но его можно увидеть на уровне выходных данных трассировки.
- Сервер MCP проверяет маркер и отвечает с успешным ответом на запрос инициализации. Стандартный поток MCP продолжается с этой точки, что в конечном счете приводит к обнаружению инструмента MCP, определенного в этом примере.
Устранение неполадок
Если у вас возникли проблемы, попросите GitHub Copilot обратиться за помощью. Ниже приведены некоторые конкретные идеи по устранению неполадок:
На данный момент других идей нет. Не забудьте спросить в чате с Copilot о любых возникающих ошибках.
Дальнейшие шаги
Узнайте, как зарегистрировать серверы MCP, размещенные в Функциях Azure, в Центре API Azure.