Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
- Quando você usa o transporte SSE, a extensão MCP depende do armazenamento de fila do Azure fornecido pela conta de armazenamento de host padrão (
AzureWebJobsStorage). Ao usar conexões baseadas em identidade, verifique se seu aplicativo de função tem pelo menos o equivalente a essas permissões baseadas em função na conta de armazenamento do host: Leitor de Dados da Fila de Armazenamento e Processador de Mensagens de Dados da Fila de Armazenamento. - Quando executada localmente, a extensão MCP requer a versão 4.0.7030 das Ferramentas Principais do Azure Functions ou uma versão posterior.
- Requer a versão 2.1.0 ou posterior do
Microsoft.Azure.Functions.Workerpacote. - Requer a versão 2.0.2 ou posterior do
Microsoft.Azure.Functions.Worker.Sdkpacote.
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
- Requer a versão 3.2.2 ou posterior da
azure-functions-java-librarydependência. - Requer a versão 1.40.0 ou posterior da
azure-functions-maven-plugindependência.
- Requer a versão 4.9.0 ou posterior da
@azure/functionsdependência
- Requer a versão 1.24.0 ou posterior do
azure-functionspacote.
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}"
}
}
}
}