Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Протокол контекста модели (MCP) — это протокол клиентского сервера, предназначенный для обеспечения более эффективного обнаружения и использования внешних источников данных и средств.
Расширение MCP функций Azure позволяет использовать Функции Azure для создания удаленных серверов MCP. Эти серверы могут размещать функции триггера средства MCP, которые клиенты MCP, такие как языковые модели и агенты, могут запрашивать и получать доступ к определенным задачам.
| Action | Type |
|---|---|
| Выполнение функции из запроса вызова средства MCP | Trigger |
Important
Расширение MCP в настоящее время не поддерживает приложения PowerShell.
Prerequisites
- При использовании транспорта SSE расширение MCP использует хранилище очередей Azure, предоставляемое учетной записью хранения узла по умолчанию (
AzureWebJobsStorage). При использовании подключений на основе удостоверений убедитесь, что ваше приложение-функция имеет по крайней мере эквиваленты этих разрешений на основе ролей в учетной записи хранения узла: средство чтения данных очереди хранилища и обработчик данных очереди хранилища. - При локальном выполнении расширения MCP требуется версия 4.0.7030 основных средств Функций Azure или более поздняя версия.
- Требуется версия 2.1.0 или более поздняя
Microsoft.Azure.Functions.Workerверсия пакета. - Требуется версия 2.0.2 или более поздняя
Microsoft.Azure.Functions.Worker.Sdkверсия пакета.
Установка расширения
Note
Для C#расширение MCP функций Azure поддерживает только изолированную рабочую модель.
Добавьте расширение в проект, установив этот пакет NuGet предпочтительным способом:
Microsoft.Azure.Functions.Worker.Extensions.Mcp
- Требуется версия 3.2.2 или более поздней версии
azure-functions-java-libraryзависимости. - Требуется версия 1.40.0 или более поздней версии
azure-functions-maven-pluginзависимости.
- Требуется версия 4.9.0 или более поздней
@azure/functionsверсии зависимости
- Требуется версия 1.24.0 или более поздняя
azure-functionsверсия пакета.
Установка пакета
Чтобы использовать это расширение привязки в приложении, убедитесь, что файл host.json в корне проекта содержит следующую extensionBundle ссылку:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
В этом примере значение version указывает хосту функций использовать версию пакета, которая как минимум [4.0.0, 5.0.0), но меньше 4.0.0, охватывая все потенциальные версии 4.x. Эта нотация эффективно поддерживает ваше приложение в последней доступной дополнительной версии пакета расширений версии 4.x.
По возможности следует использовать последнюю версию пакета расширений и разрешить среде выполнения автоматически поддерживать последнюю дополнительную версию. Содержимое последнего пакета можно просмотреть на странице выпуска пакетов расширений. Дополнительные сведения см. в пакетах расширений функций Azure.
Для расширения MCP специально требуется пакет версии 4.29.0 или более поздней. Чтобы получить эту версию, укажите ее как минимальную версию в host.json файле:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.29.0, 5.0.0)"
}
}
Параметры файла host.json
В этом разделе описаны параметры конфигурации, доступные для этой привязки в версии 2.x и более поздних версиях. Параметры в файле host.json применяются ко всем функциям в экземпляре приложения-функции. Дополнительные сведения о параметрах конфигурации приложения-функции см. вhost.json справочнике по функциям Azure.
Раздел можно использовать для extensions.mcp определения сведений о сервере host.json MCP.
{
"version": "2.0",
"extensions": {
"mcp": {
"instructions": "Some test instructions on how to use the server",
"serverName": "TestServer",
"serverVersion": "2.0.0",
"encryptClientState": true,
"messageOptions": {
"useAbsoluteUriForEndpoint": false
},
"system": {
"webhookAuthorizationLevel": "System"
}
}
}
}
| Property | Description |
|---|---|
| instructions | Описывает клиентам доступ к удаленному серверу MCP. |
| serverName | Понятное имя удаленного сервера MCP. |
| serverVersion | Текущая версия удаленного сервера MCP. |
| encryptClientState | Определяет, зашифровано ли состояние клиента. По умолчанию используется значение true. Параметр false может быть полезен для отладки и тестирования сценариев, но не рекомендуется для рабочей среды. |
| messageOptions | Объект Options для конечной точки сообщения в транспорте SSE. |
| messageOptions.UseAbsoluteUriForEndpoint | По умолчанию — false. Применимо только к транспорту событий, отправленных сервером (SSE); Этот параметр не влияет на транспорт HTTP с потоковой передачей. Если задано значение false, конечная точка сообщения предоставляется как относительный URI во время начальных подключений по транспорту SSE. Если задано значение true, конечная точка сообщения возвращается в качестве абсолютного URI. Использование относительного URI не рекомендуется, если у вас нет определенной причины для этого. |
| system | Объект Options для конфигурации на уровне системы. |
| system.webhookAuthorizationLevel | Определяет уровень авторизации, необходимый для конечной точки веб-перехватчика. По умолчанию используется значение System. Допустимые значения: System и Anonymous. При установке значения "Анонимный" ключ доступа больше не требуется для запросов. Независимо от того, требуется ли ключ, можно использовать встроенную авторизацию сервера MCP в качестве уровня управления доступом на основе удостоверений. Этот параметр доступен только при запуске на узле функций версии 4.1045.0 или более поздней. |
Подключение к серверу MCP
Чтобы подключиться к серверу MCP, предоставляемому приложением-функцией, необходимо предоставить клиенту MCP соответствующую конечную точку и сведения о транспорте. В следующей таблице показаны транспорты, поддерживаемые расширением MCP функций Azure, а также соответствующая конечная точка подключения.
| Transport | Endpoint |
|---|---|
| Потоковая передача HTTP | /runtime/webhooks/mcp |
| события Server-Sent (SSE)1 | /runtime/webhooks/mcp/sse |
1 Более новые версии протокола устарели для транспорта событий Server-Sent. Если клиент не требует его специально, вместо этого следует использовать транспорт HTTP с возможностью потоковой передачи.
При размещении в Azure по умолчанию конечные точки, предоставляемые расширением, также требуют системного ключа.mcp_extension Если он не указан в заголовке x-functions-key HTTP или в параметре code строки запроса, клиент получает 401 Unauthorized ответ. Это требование можно удалить, задав system.webhookAuthorizationLevel для свойства значение host.jsonAnonymous . Дополнительные сведения см. в разделе host.json параметров .
Ключ можно получить с помощью любого из методов, описанных в разделе "Получить ключи доступа к функциям". В следующем примере показано, как получить ключ с помощью Azure CLI:
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
Клиенты MCP принимают эту конфигурацию различными способами. Ознакомьтесь с документацией по выбранному клиенту. В следующем примере показан mcp.json файл, как можно использовать для настройки серверов MCP для GitHub Copilot в Visual Studio Code. В примере настраивается два сервера, как с помощью транспорта Streamable HTTP. Первое — для локального тестирования с помощью основных средств Функций Azure. Второй — для приложения-функции, размещенного в Azure. Конфигурация принимает входные параметры, для которых Visual Studio Code запрашивает при первом запуске удаленного сервера. Использование входных данных гарантирует, что секреты, такие как системный ключ, не сохраняются в файле и проверяются в системе управления версиями.
{
"inputs": [
{
"type": "promptString",
"id": "functions-mcp-extension-system-key",
"description": "Azure Functions MCP Extension System Key",
"password": true
},
{
"type": "promptString",
"id": "functionapp-host",
"description": "The host domain of the function app."
}
],
"servers": {
"local-mcp-function": {
"type": "http",
"url": "http://localhost:7071/runtime/webhooks/mcp"
},
"remote-mcp-function": {
"type": "http",
"url": "https://${input:functionapp-host}/runtime/webhooks/mcp",
"headers": {
"x-functions-key": "${input:functions-mcp-extension-system-key}"
}
}
}
}