Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
- Cuando se usa el transporte SSE, la extensión MCP se basa en Azure Queue Storage proporcionado por la cuenta de almacenamiento de host predeterminada (
AzureWebJobsStorage). Al usar conexiones basadas en identidades, asegúrese de que la aplicación de funciones tenga al menos el equivalente de estos permisos basados en roles en la cuenta de almacenamiento de host: Lector de datos de cola de storage y Procesador de mensajes de datos de cola de storage. - Cuando se ejecuta localmente, la extensión MCP requiere la versión 4.0.7030 de Azure Functions Core Tools o una versión posterior.
- Requiere la versión 2.1.0 o posterior del
Microsoft.Azure.Functions.Workerpaquete. - Requiere la versión 2.0.2 o posterior del
Microsoft.Azure.Functions.Worker.Sdkpaquete.
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
- Requiere la versión 3.2.2 o posterior de la
azure-functions-java-librarydependencia. - Requiere la versión 1.40.0 o posterior de la
azure-functions-maven-plugindependencia.
- Requiere la versión 4.9.0 o posterior de la
@azure/functionsdependencia.
- Requiere la versión 1.24.0 o posterior del
azure-functionspaquete.
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}"
}
}
}
}