Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Functions предоставляет два способа размещения удаленных серверов MCP:
- Серверы MCP, созданные с расширением Functions MCP
- Серверы MCP, созданные с использованием официальных SDK для MCP
При первом подходе можно использовать модель программирования Azure Functions с триггерами и привязками для создания сервера MCP. Затем вы можете удаленно разместить сервер, разместив его в приложении типа Function.
Если у вас уже есть сервер MCP, созданный с помощью официальных пакетов SDK MCP и просто хотите разместить его удаленно, второй подход, скорее всего, соответствует вашим потребностям. Чтобы разместить его на Azure Functions, вам не нужно вносить изменения в код. Вместо этого можно добавить необходимые функциональные артефакты, а сервер будет готов к развертыванию. Таким образом, эти серверы называются локальными серверами MCP.
В этой статье представлен обзор локальных серверов MCP и ссылки на соответствующие статьи и примеры.
Пользовательские обработчики
Самостоятельные серверы MCP развертываются на платформе Azure Functions в качестве обработчиков custom handlers. Пользовательские обработчики — это упрощенные веб-серверы, получающие события от узла функций. Они предоставляют способ запуска на платформе Functions приложений, созданных с использованием фреймворков, отличных от модели программирования Functions, или на языках, не поддерживаемых по умолчанию. Дополнительные сведения см. в разделе пользовательские обработчики Azure Functions.
При развертывании сервера на основе пакета SDK MCP для Azure Functions необходимо включить в проект host.json. Минимальный host.json выглядит следующим образом:
{
"version": "2.0",
"configurationProfile": "mcp-custom-handler",
"customHandler": {
"description": {
"defaultExecutablePath": "python",
"arguments": ["Path to main script file, e.g. hello_world.py"]
},
"port": "<MCP server port>"
}
}
{
"version": "2.0",
"configurationProfile": "mcp-custom-handler",
"customHandler": {
"description": {
"defaultExecutablePath": "npm",
"arguments": ["run", "start"]
},
"port": "<MCP server port>"
}
}
{
"version": "2.0",
"configurationProfile": "mcp-custom-handler",
"customHandler": {
"description": {
"defaultExecutablePath": "dotnet",
"arguments": ["Path to the compiled DLL, e.g. HelloWorld.dll"]
},
"port": "<MCP server port>"
}
}
Замечание
Поскольку полезная нагрузка, развернутая в Azure Functions, представляет собой содержимое каталога bin/output, путь к скомпилированной библиотеке DLL должен быть относительным к этому каталогу, а не к корневому каталогу проекта.
Пример еще недоступен.
При использовании значения configuration Profile значения mcp-custom-handler автоматически настраиваются эти параметры узла функций, необходимые для запуска сервера MCP в Azure Functions:
-
http.enableProxyingдоtrue -
http.routesдо[{ "route": "{*route}" }] -
extensions.http.routePrefixдо""
В этом примере показан файл host.json с дополнительными свойствами настраиваемых обработчиков, эквивалентными использованию mcp-custom-handler профиля:
{
"version": "2.0",
"extensions": {
"http": {
"routePrefix": ""
}
},
"customHandler": {
"description": {
"defaultExecutablePath": "",
"arguments": [""]
},
"http": {
"enableProxying": true,
"defaultAuthorizationLevel": "anonymous",
"routes": [
{
"route": "{*route}",
// Default authorization level is `defaultAuthorizationLevel`
},
{
"route": "admin/{*route}",
"authorizationLevel": "admin"
}
]
}
}
}
В этой таблице описываются свойства customHandler.http, а также значения по умолчанию:
| Недвижимость | Что он делает | Значение по умолчанию |
|---|---|---|
enableProxying |
Управляет тем, как хост Azure Functions обрабатывает HTTP-запросы к пользовательским обработчикам. Если enableProxying задано значение true, хост функций работает в качестве обратного прокси и пересылает весь HTTP-запрос (включая заголовки, тело, параметры запроса) непосредственно в пользовательский обработчик. Этот параметр предоставляет пользовательскому обработчику полный доступ к исходным сведениям HTTP-запроса. Когда enableProxyingfalse, хост Functions сначала обрабатывает запрос и преобразует его в формат запроса и ответа Azure Functions перед передачей в пользовательский обработчик. |
false |
defaultAuthorizationLevel |
Управляет требованием проверки подлинности для доступа к конечным точкам пользовательского обработчика. Например, function для доступа требуется ключ API для конкретной функции. Дополнительные сведения см. в разделе "Уровни авторизации". |
function |
route |
Указывает шаблон URL-пути, на который отвечает индивидуальный обработчик.
{*route} соответствует любому URL-пути (например, /, /mcp, /api/tools или /anything/nested/path) и перенаправляет запрос в пользовательский обработчик. |
{*route} |
Встроенная проверка подлинности сервера
Проверка подлинности и авторизация на основе OAuth, предоставляемые платформой службы приложений, реализует требования спецификации авторизации MCP, такие как выдача 401 запроса и предоставление документа "Защищенные метаданные ресурсов" (PRM). При включении встроенной проверки подлинности клиенты, пытающиеся получить доступ к серверу, перенаправляются поставщикам удостоверений, таким как Microsoft Entra ID для проверки подлинности перед подключением.
Дополнительные сведения см. в разделе Настройка встроенной авторизации сервера (предварительная версия) и Hosting MCP-серверов на Azure Functions.
Интеграция агента Microsoft Foundry
Агенты в Foundry можно настроить для использования инструментов на серверах MCP, размещенных в Azure Functions.
Регистрация сервера в Центре API Azure
При регистрации сервера MCP в Центре API Azure создается частный каталог средств организации. Этот подход рекомендуется для совместного использования серверов MCP в вашей организации с единообразным управлением и обнаруживаемостью. Дополнительные сведения см. в разделе Register MCP-серверов, размещенных в Azure Functions в Центре API Azure.
Поддержка общедоступной предварительной версии
Возможность размещения собственных серверов MCP на основе пакета SDK в Функциях в настоящее время доступна в предварительной версии и поддерживает следующие функции:
- Серверы стейтлесс, использующие транспорт streamable-http. Если вам нужно, чтобы сервер был с отслеживанием состояния, рассмотрите возможность использования расширения Functions MCP.
- Серверы, реализованные с помощью пакетов SDK Python, TypeScript, C#или Java MCP.
- При локальном запуске проекта необходимо использовать команду Azure Functions Core Tools (
func start). В настоящее время нельзя использоватьF5для запуска с отладчиком. - Серверы должны размещаться как приложения плана Flex Consumption.
Samples
Пока недоступно.
Связанные статьи
Azure Functions пользовательские обработчики