Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Протокол контекста модели (MCP) — это протокол клиентского сервера, предназначенный для более эффективного обнаружения и использования внешних источников данных и средств.
Расширение MCP функций Azure позволяет использовать Функции Azure для создания удаленных серверов MCP. Эти серверы могут размещать функции триггера средства MCP, которые клиенты MCP, такие как языковые модели и агенты, могут запрашивать и получать доступ к определенным задачам. Расширение также поддерживает MCP Apps, что позволяет средствам возвращать интерактивные пользовательские интерфейсы вместо обычного текста, сочетая триггеры инструментов с триггерами ресурсов.
| Action | Type |
|---|---|
| Выполнение функции из запроса вызова средства MCP | Триггер средства |
| Предоставление функции в качестве ресурса MCP | Триггер ресурса |
| Предоставление функции в виде запроса MCP | Триггер запроса |
Important
Расширение MCP в настоящее время не поддерживает приложения PowerShell.
Prerequisites
- При использовании транспорта SSE расширение MCP использует хранилище очередей Azure, предоставляемое учетной записью хранения узла по умолчанию (
AzureWebJobsStorage). При использовании подключений на основе удостоверений убедитесь, что ваше приложение-функция имеет по крайней мере эквивалентные эти разрешения на основе ролей в учетной записи хранения узла: участник очередей хранилища и обработчик сообщений данных очереди хранилища. - При локальном выполнении расширения MCP требуется версия 4.0.7030 основных средств Функций Azure или более поздняя версия.
- Требуется версия 2.1.0 или более поздняя
Microsoft.Azure.Functions.Workerверсия пакета. - Требуется версия 1.0.0 или более поздней версии
Azure.Functions.SdkSDK проекта.
Установка расширения
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.
В настоящее время Go не поддерживается для этой функции.
Параметры файла 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 в качестве уровня управления доступом на основе удостоверений. |
Подключение к серверу MCP
Чтобы подключиться к серверу MCP, который предоставляет приложение-функция, предоставьте клиенту MCP соответствующую конечную точку и сведения о транспорте. В следующей таблице показаны транспорты, поддерживаемые расширением MCP функций Azure, а также соответствующая конечная точка подключения.
| Transport | Endpoint |
|---|---|
| Потоковая передача HTTP | /runtime/webhooks/mcp |
| события Server-Sent (SSE)1 | /runtime/webhooks/mcp/sse |
1 Более новые версии протокола нерекомендуют транспорт событий Server-Sent. Если клиент не требует его специально, используйте вместо него транспорт STREAMable 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}"
}
}
}
}