Partilhar via


Visão geral das ligações do Protocolo de Contexto de Modelo para o Azure Functions

O MCP (Model Context Protocol) é um protocolo cliente-servidor destinado a permitir que modelos de linguagem e agentes descubram e usem fontes de dados e ferramentas externas de forma mais eficiente.

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 os clientes MCP, como modelos de linguagem e agentes, podem consultar e acessar para executar tarefas específicas.

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

Important

Atualmente, a extensão MCP não oferece 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 que preferir:

Microsoft.Azure.Functions.Worker.Extensions.Mcp

Instalar pacote

Para poder usar essa extensão de associação em seu aplicativo, certifique-se de que o arquivo dehost.json na raiz do seu 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 de instrui o host Functions a usar uma versão de [4.0.0, 5.0.0) pacote que seja pelo menos 4.0.0 , mas 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 mais recente do pacote de extensão e permitir que o tempo de execução mantenha automaticamente a versão secundária mais recente. Você pode visualizar o conteúdo do pacote mais recente na página de lançamento dos pacotes de extensão. Para obter mais informações, consulte Pacotes de extensão do Azure Functions.

configurações host.json

Esta seção descreve as definições de configuração 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 de aplicativo de função. Para obter mais informações sobre definições de configuração de aplicativo de função, consulte host.json referência para o Azure Functions.

Você pode usar a extensions.mcp seção em 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 é criptografado. O valor padrão é verdadeiro. A configuração como false pode ser útil para depurar e testar cenários, mas não é recomendada para produção.
messageOptions Objeto Options para o ponto de extremidade da mensagem no transporte SSE.
messageOptions.UseAbsoluteUriForEndpoint O padrão é false. Aplicável apenas ao transporte de eventos enviados pelo servidor (SSE); essa configuração não afeta o transporte HTTP streamable. Se definido como false, o ponto de extremidade da mensagem é fornecido como um URI relativo durante as conexões iniciais no 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 fazê-lo.
sistema 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.

Conecte-se ao seu servidor MCP

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

Transport Ponto final
Streamable HTTP /runtime/webhooks/mcp
Server-Sent Eventos (SSE)1 /runtime/webhooks/mcp/sse

1 As versões de protocolo mais recentes substituíram o transporte de Eventos Server-Sent. A menos que seu cliente exija especificamente isso, você deve usar o transporte HTTP Streamable.

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 não for fornecido no x-functions-key cabeçalho HTTP ou no parâmetro de cadeia de caracteres de code 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 Configurações dehost.json .

Você pode recuperar a chave usando qualquer um dos métodos descritos em Obter suas teclas de acesso de 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 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. O segundo é para um aplicativo de função 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}"
            }
        }
    }
}