Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Протокол контекста модели (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.
Параметры файла 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. Если клиент не требует его специально, вместо этого следует использовать транспорт 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}"
}
}
}
}