Compartir a través de


Introducción a los enlaces del protocolo de contexto de modelo para Azure Functions

El Protocolo de contexto de modelo (MCP) es un protocolo de servidor cliente diseñado para permitir que los modelos de lenguaje y los agentes detecten y usen de forma más eficaz orígenes de datos externos y herramientas.

La extensión MCP de Azure Functions permite usar Azure Functions para crear servidores MCP remotos. Estos servidores pueden hospedar funciones de desencadenador de herramientas MCP, que clientes MCP, como modelos de lenguaje y agentes, pueden consultar y acceder a tareas específicas.

Action Type
Ejecución de una función desde una solicitud de llamada de herramienta MCP Trigger

Important

La extensión MCP no admite actualmente aplicaciones de PowerShell.

Prerequisites

  • Requiere la versión 2.1.0 o posterior del Microsoft.Azure.Functions.Worker paquete.
  • Requiere la versión 2.0.2 o posterior del Microsoft.Azure.Functions.Worker.Sdk paquete.

Instalación de la extensión

Note

En C#, la extensión MCP de Azure Functions solo admite el modelo de trabajo aislado.

Agregue la extensión al proyecto mediante la instalación de este paquete NuGet de la manera que prefiera:

Microsoft.Azure.Functions.Worker.Extensions.Mcp

Instalación de la agrupación

Para poder usar esta extensión de enlace en la aplicación, asegúrese de que el archivo host.json en la raíz del proyecto contiene esta extensionBundle referencia:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

En este ejemplo, el version valor de [4.0.0, 5.0.0) indica al host de Functions que use una versión de agrupación que sea al menos 4.0.0 pero menor 5.0.0que , que incluye todas las versiones potenciales de 4.x. Esta notación mantiene eficazmente la aplicación en la versión secundaria más reciente disponible del paquete de extensiones v4.x.

Cuando sea posible, debe usar la versión principal del paquete de extensiones más reciente y permitir que el tiempo de ejecución mantenga automáticamente la versión secundaria más reciente. Puede ver el contenido de la agrupación más reciente en la página de versión de paquetes de extensiones. Para más información, consulte Paquetes de extensiones de Azure Functions.

configuración de host.json

En esta sección se describen las opciones de configuración disponibles para este enlace en la versión 2.x y posteriores. La configuración del archivo host.json se aplica a todas las funciones de una instancia de la aplicación de funciones. Para más información sobre las opciones de configuración de la aplicación de funciones, consulte host.json referencia para Azure Functions.

Puede usar la extensions.mcp sección de host.json para definir la información del servidor 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 Describe a los clientes cómo acceder al servidor MCP remoto.
serverName Nombre descriptivo para el servidor MCP remoto.
serverVersion Versión actual del servidor MCP remoto.
encryptClientState Determina si el estado del cliente está cifrado. El valor predeterminado es true. Establecer en false puede ser útil para los escenarios de depuración y prueba, pero no se recomienda para producción.
messageOptions Objeto Options para el punto de conexión del mensaje en el transporte SSE.
messageOptions.UseAbsoluteUriForEndpoint Tiene como valor predeterminado false. Solo se aplica al transporte de eventos enviados por el servidor (SSE); esta configuración no afecta al transporte HTTP que se puede transmitir. Si se establece en false, el punto de conexión del mensaje se proporciona como un URI relativo durante las conexiones iniciales a través del transporte SSE. Si se establece en true, el punto de conexión del mensaje se devuelve como un URI absoluto. No se recomienda usar un URI relativo a menos que tenga una razón específica para hacerlo.
Sistema Objeto Options para la configuración de nivel de sistema.
system.webhookAuthorizationLevel Define el nivel de autorización necesario para el punto de conexión de webhook. El valor predeterminado es "System". Los valores permitidos son "System" y "Anonymous". Cuando se establece el valor en "Anónimo", ya no se requiere una clave de acceso para las solicitudes. Independientemente de si se requiere o no una clave, puede usar la autorización del servidor MCP integrada como una capa de control de acceso basada en identidades.

Conexión al servidor MCP

Para conectarse al servidor MCP expuesto por la aplicación de funciones, debe proporcionar un cliente MCP con el punto de conexión y la información de transporte adecuadas. En la tabla siguiente se muestran los transportes admitidos por la extensión MCP de Azure Functions, junto con su punto de conexión correspondiente.

Transport Punto final
HTTP que se puede transmitir /runtime/webhooks/mcp
eventos de Server-Sent (SSE)1 /runtime/webhooks/mcp/sse

1 Las versiones de protocolo más recientes han dejado de usar el transporte de eventos de Server-Sent. A menos que el cliente lo requiera específicamente, debe usar el transporte HTTP que se puede transmitir en su lugar.

Cuando se hospeda en Azure, de forma predeterminada, los puntos de conexión expuestos por la extensión también requieren la clave del sistema denominada mcp_extension. Si no se proporciona en el x-functions-key encabezado HTTP o en el parámetro de cadena code de consulta, el cliente recibe una 401 Unauthorized respuesta. Para quitar este requisito, establezca la system.webhookAuthorizationLevel propiedad en en host.jsonAnonymous. Para obtener más información, consulte la sección configuración dehost.json .

Puede recuperar la clave mediante cualquiera de los métodos descritos en Obtención de las claves de acceso de la función. En el ejemplo siguiente se muestra cómo obtener la clave con la CLI de Azure:

az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv

Los clientes de MCP aceptan esta configuración de varias maneras. Consulte la documentación del cliente elegido. En el ejemplo siguiente se muestra un mcp.json archivo como puede usar para configurar servidores MCP para GitHub Copilot en Visual Studio Code. En el ejemplo se configuran dos servidores, ambos mediante el transporte HTTP que se puede transmitir. La primera es para las pruebas locales con Azure Functions Core Tools. El segundo es para una aplicación de funciones hospedada en Azure. La configuración toma los parámetros de entrada para los que Visual Studio Code le pide al ejecutar por primera vez el servidor remoto. El uso de entradas garantiza que los secretos como la clave del sistema no se guarden en el archivo y se protejan en el control de código fuente.

{
    "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}"
            }
        }
    }
}