Поделиться через


Общие сведения о привязках протокола контекста модели для Функций Azure

Протокол контекста модели (MCP) — это протокол клиентского сервера, предназначенный для обеспечения более эффективного обнаружения и использования внешних источников данных и средств.

Расширение MCP функций Azure позволяет использовать Функции Azure для создания удаленных серверов MCP. Эти серверы могут размещать функции триггера средства MCP, которые клиенты MCP, такие как языковые модели и агенты, могут запрашивать и получать доступ к определенным задачам.

Action Type
Выполнение функции из запроса вызова средства MCP Trigger

Important

Расширение MCP в настоящее время не поддерживает приложения PowerShell.

Prerequisites

  • Требуется версия 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

Установка пакета

Чтобы использовать это расширение привязки в приложении, убедитесь, что файл 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}"
            }
        }
    }
}