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

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

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

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

Important

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

Prerequisites

  • Требуется версия 2.1.0 или более поздняя Microsoft.Azure.Functions.Worker версия пакета.
  • Требуется версия 1.0.0 или более поздней версии Azure.Functions.Sdk 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.

В настоящее время 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}"
            }
        }
    }
}