Compartilhar via


Visão geral das associações de protocolo de contexto do modelo para o Azure Functions

O Protocolo de Contexto de Modelo (MCP) é um protocolo cliente-servidor destinado a permitir que modelos de linguagem e agentes descubram e usem ferramentas e fontes de dados externas com mais eficiência.

A extensão MCP do Azure Functions permite que você use o Azure Functions para criar servidores MCP remotos. Esses servidores podem hospedar funções de gatilho da ferramenta MCP, que clientes MCP, como modelos de linguagem e agentes, podem consultar e acessar para realizar tarefas específicas.

Action Tipo
Executar uma função de uma solicitação de chamada de ferramenta MCP Trigger

Important

Atualmente, a extensão MCP não dá suporte a aplicativos do PowerShell.

Prerequisites

  • Requer a versão 2.1.0 ou posterior do Microsoft.Azure.Functions.Worker pacote.
  • Requer a versão 2.0.2 ou posterior do Microsoft.Azure.Functions.Worker.Sdk pacote.

Instalar extensão

Note

Para C#, a extensão MCP do Azure Functions dá suporte apenas ao modelo de trabalho isolado.

Adicione a extensão ao seu projeto instalando este pacote NuGet da maneira preferida:

Microsoft.Azure.Functions.Worker.Extensions.Mcp

Instalar o pacote

Para poder usar essa extensão de associação em seu aplicativo, verifique se o arquivo host.json na raiz do projeto contém esta extensionBundle referência:

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

Neste exemplo, o version valor instrui o host do [4.0.0, 5.0.0) Functions a usar uma versão de pacote pelo menos 4.0.0 menor que 5.0.0, que inclui todas as versões potenciais do 4.x. Essa notação mantém efetivamente seu aplicativo na versão secundária mais recente disponível do pacote de extensão v4.x.

Quando possível, você deve usar a versão principal do pacote de extensão mais recente e permitir que o runtime mantenha automaticamente a versão secundária mais recente. Você pode exibir o conteúdo do pacote mais recente na página de lançamento dos pacotes de extensão. Para obter mais informações, consulte os pacotes de extensão do Azure Functions.

configurações de host.json

Esta seção descreve as configurações disponíveis para essa associação na versão 2.x e posterior. As configurações no arquivo host.json se aplicam a todas as funções em uma instância do aplicativo de funções. Para obter mais informações sobre as configurações de aplicativo de funções, consulte host.json referência para o Azure Functions.

Você pode usar a extensions.mcp seção para definir informações do host.json 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 Descreve aos clientes como acessar o servidor MCP remoto.
serverName Um nome amigável para o servidor MCP remoto.
serverVersion Versão atual do servidor MCP remoto.
encryptClientState Determina se o estado do cliente está criptografado. O padrão é true. A configuração como false pode ser útil para cenários de depuração e teste, mas não é recomendada para produção.
messageOptions Objeto Options para o ponto de extremidade de mensagem no transporte SSE.
messageOptions.UseAbsoluteUriForEndpoint Usa false como padrão. Aplicável somente ao transporte SSE (eventos enviados pelo servidor) ; essa configuração não afeta o transporte HTTP streamable. Se definido como false, o ponto de extremidade da mensagem será fornecido como um URI relativo durante as conexões iniciais pelo transporte SSE. Se definido como true, o ponto de extremidade da mensagem será retornado como um URI absoluto. O uso de um URI relativo não é recomendado, a menos que você tenha um motivo específico para fazer isso.
system Objeto Options para configuração no nível do sistema.
system.webhookAuthorizationLevel Define o nível de autorização necessário para o ponto de extremidade do webhook. O padrão é "System". Os valores permitidos são "Sistema" e "Anônimo". Quando você define o valor como "Anônimo", uma chave de acesso não é mais necessária para solicitações. Independentemente de uma chave ser necessária ou não, você pode usar a autorização interna do servidor MCP como uma camada de controle de acesso baseada em identidade.

Conectar-se ao servidor MCP

Para se conectar ao servidor MCP exposto pelo aplicativo de funções, você precisa fornecer a um cliente MCP as informações apropriadas de ponto de extremidade e transporte. A tabela a seguir mostra os transportes compatíveis com a extensão MCP do Azure Functions, juntamente com o ponto de extremidade de conexão correspondente.

Transport Ponto final
HTTP que pode ser transmitido /runtime/webhooks/mcp
eventos de Server-Sent (SSE)1 /runtime/webhooks/mcp/sse

1 Versões de protocolo mais recentes preteriram o transporte de eventos Server-Sent. A menos que seu cliente exija especificamente, você deve usar o transporte HTTP streamable em vez disso.

Quando hospedados no Azure, por padrão, os pontos de extremidade expostos pela extensão também exigem a chave do sistema chamada mcp_extension. Se ele não for fornecido no x-functions-key cabeçalho HTTP ou no parâmetro de code cadeia de caracteres de consulta, o cliente receberá uma 401 Unauthorized resposta. Você pode remover esse requisito definindo a system.webhookAuthorizationLevel propriedade como host.jsonAnonymous. Para obter mais informações, consulte a seção de configurações dehost.json .

Você pode recuperar a chave usando qualquer um dos métodos descritos em Obter as chaves de acesso da função. O exemplo a seguir mostra como obter a chave com a CLI do Azure:

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

Os clientes MCP aceitam essa configuração de várias maneiras. Consulte a documentação do cliente escolhido. O exemplo a seguir mostra um mcp.json arquivo como você pode usar para configurar servidores MCP para o GitHub Copilot no Visual Studio Code. O exemplo configura dois servidores, ambos usando o transporte HTTP streamable. A primeira é para testes locais com as Ferramentas Principais do Azure Functions. A segunda é para um aplicativo de funções hospedado no Azure. A configuração usa parâmetros de entrada para os quais o Visual Studio Code solicita quando você executa o servidor remoto pela primeira vez. O uso de entradas garante que segredos como a chave do sistema não sejam salvos no arquivo e verificados no controle do código-fonte.

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