Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como hospedar servidores MCP ( Protocolo de Contexto de Modelo ) remotos no Azure Functions. Você também aprenderá a usar a autenticação interna para configurar a autorização do ponto de extremidade do servidor e proteger melhor suas ferramentas de IA.
Há duas maneiras de hospedar um servidor MCP remoto no Azure Functions:
| Opção de servidor MCP | Description | Mais adequado para... |
|---|---|---|
| Servidor de extensão MCP | Utiliza a extensão MCP do Azure Functions para criar servidores MCP personalizados, em que o gatilho da extensão permite definir os endpoints das suas ferramentas. Esses servidores têm suporte em todos os idiomas do Functions e são desenvolvidos, implantados e gerenciados como qualquer outro aplicativo de funções. | Quando você já estiver familiarizado com o Functions e seu modelo de programação baseado em associações. |
| Servidor auto-hospedado | As funções podem hospedar um projeto de servidor MCP criado usando os SDKs do MCP padrão. | Quando você já criou seu servidor usando os SDKs oficiais do MCP e está procurando por hospedagem controlada por eventos, sem servidor e escalonável no Azure. |
Observação
A capacidade de Azure Functions hospedar servidores MCP que você cria usando SDKs oficiais do MCP está atualmente em prévia.
Este tutorial aborda as duas opções de servidor MCP compatíveis com o Functions. Selecione a guia que melhor se ajusta ao seu cenário.
Neste tutorial, você usará o Visual Studio Code para:
- Crie um projeto de servidor MCP usando a extensão MCP.
- Execute e verifique o servidor MCP localmente.
- Crie um aplicativo de funções no Azure.
- Implante seu projeto de servidor MCP.
- Habilite a autenticação interna.
Importante
Atualmente, este artigo dá suporte apenas a C#, Python e TypeScript. Para concluir o início rápido, selecione um desses idiomas com suporte na parte superior do artigo.
Este artigo dá suporte à versão 4 do modelo de programação Node.js para o Azure Functions.
Este artigo dá suporte à versão 2 do modelo de programação do Python para o Azure Functions.
Pré-requisitos
Visual Studio Code com estas extensões:
Extensão Azure Functions. Essa extensão requer as Ferramentas Principais do Azure Functions e tenta instalá-la quando não está disponível.
CLI do Azure. Você também pode executar comandos da CLI do Azure no Azure Cloud Shell.
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Criar seu projeto de servidor MCP
Use o Visual Studio Code para criar localmente um projeto de servidor MCP em seu idioma preferido.
No Visual Studio Code, pressione F1 para abrir a paleta de comandos. Pesquise e execute o comando
Azure Functions: Create New Project....Escolha o local de diretório para o workspace do projeto e escolha Selecionar. Você deve criar uma pasta ou escolher uma pasta vazia para o workspace do projeto. Não escolha uma pasta de projeto que já faça parte de um workspace.
Forneça as seguintes informações nos campos solicitados.
Rápido Seleção Selecionar um tipo de projeto Escolha C#.Selecionar um runtime do .NET Escolha .NET 8.0 LTS.Selecione um modelo para a primeira função do projeto Escolha MCP Tool trigger.Forneça um nome para a função Digite McpTrigger.Forneça um namespace Digite My.Functions.Nível de autorização Escolha FUNCTION, que requer chave de acesso ao se conectar ao servidor MCP remoto.Selecione como deseja abrir o projeto Escolha Open in current window.
Forneça as seguintes informações nos campos solicitados.
Rápido Seleção Selecionar um tipo de projeto Escolha TypeScript.Selecione um modelo para a primeira função do projeto Escolha MCP Tool trigger.Forneça um nome para a função Digite mcpToolTrigger.Nível de autorização Escolha FUNCTION, que requer chave de acesso ao se conectar ao servidor MCP remoto.Selecione como deseja abrir o projeto Escolha Open in current window.
Forneça as seguintes informações nos campos solicitados.
Rápido Seleção Selecionar um tipo de projeto Escolha Python.Selecione o interpretador do Python para criar um ambiente virtual Escolha seu interpretador do Python preferido. Se uma opção não for mostrada, digite o caminho completo no binário do Python. Selecione um modelo para a primeira função do projeto Escolha MCP Tool trigger.O nome da função que você deseja criar Digite mcp_trigger.Nível de autorização Escolha FUNCTION, que requer chave de acesso ao se conectar ao servidor MCP remoto.Selecione como deseja abrir o projeto Escolha Open in current window.
Usando essas informações, o Visual Studio Code gera um projeto de código para um gatilho de servidor MCP. Você pode exibir os arquivos de projeto locais no Explorer.
Iniciar o servidor MCP localmente
Os aplicativos de funções precisam de um componente de armazenamento para serem executados. Antes de iniciar o servidor, inicie o emulador de armazenamento local:
Em local.setting.json, verifique se você tem
"AzureWebJobsStorage": "UseDevelopmentStorage=true".No Visual Studio Code, pressione F1 para abrir a paleta de comandos. Na paleta de comandos, pesquise e selecione
Azurite: Start.Verifique a barra inferior e verifique se os serviços de emulação do Azurite estão em execução. Nesse caso, agora você pode executar o servidor localmente.
Para começar a ser executado localmente, pressione F5.
Os aplicativos de funções precisam de um componente de armazenamento para serem executados. Antes de iniciar o servidor, inicie o emulador de armazenamento local:
Em local.setting.json, verifique se você tem
"AzureWebJobsStorage": "UseDevelopmentStorage=true".No Visual Studio Code, pressione F1 para abrir a paleta de comandos. Na paleta de comandos, pesquise e selecione
Azurite: Start.Verifique a barra inferior e verifique se os serviços de emulação do Azurite estão em execução. Nesse caso, agora você pode executar o servidor localmente.
Para começar a ser executado localmente, pressione F5.
Os aplicativos de funções precisam de um componente de armazenamento para serem executados. Antes de iniciar o servidor, inicie o emulador de armazenamento local:
Em local.setting.json, verifique se você tem
"AzureWebJobsStorage": "UseDevelopmentStorage=true".No Visual Studio Code, pressione F1 para abrir a paleta de comandos. Na paleta de comandos, pesquise e selecione
Azurite: Start.Verifique a barra inferior e verifique se os serviços de emulação do Azurite estão em execução. Nesse caso, agora você pode executar o servidor localmente.
Para começar a ser executado localmente, pressione F5.
Testar o servidor
Localize o
.vscodediretório e abramcp.json. O editor deve adicionar as informações de conexão do servidor.Inicie o servidor selecionando o botão Iniciar acima do nome do servidor.
Ao se conectar ao servidor, você verá o número de ferramentas disponíveis acima do nome do servidor.
Abra o chat do Copilot do Visual Studio Code no modo de agente e faça uma pergunta. Por exemplo, "Cumprimentar com #seu-nome-de-servidor-local". Essa pergunta garante que o Copilot use o servidor para ajudar a responder à pergunta.
Quando o Copilot solicita executar uma ferramenta no servidor MCP local, selecione Permitir.
Desconecte-se do servidor quando terminar de testar selecionando Parar e
Cntrl+Cparar de executá-lo localmente.
Dica
Na janela de chat do Copilot, selecione o ícone de ferramenta na parte inferior para ver a lista de servidores e ferramentas disponíveis para o chat. Verifique se o servidor MCP local está marcado durante o teste.
Autorização remota do servidor MCP
Há duas maneiras de reduzir ou impedir o uso não autorizado de seus pontos de extremidade remotos do servidor MCP:
| Método | Description |
|---|---|
| Autenticação interna do servidor (versão prévia) | Functions inclui autenticação e autorização internas do Serviço de Aplicativo do Azure que implementam os requisitos OAuth do protocolo especificação de autorização MCP. Os clientes que tentam acessar o servidor são redirecionados para um provedor de identidade configurado, como o Microsoft Entra ID, para autenticação antes de terem permissão para se conectar. Esse método fornece o nível mais alto de segurança para os endpoints de suas ferramentas. |
| Autenticação baseada em chave | Por padrão, o Functions implementa um requisito de chave de acesso para que os clientes que tentam usar ferramentas de servidor MCP apresentem um valor de chave secreta compartilhado no cabeçalho da solicitação. Embora não forneça o mesmo nível de segurança que a autenticação baseada em OAuth, as chaves de acesso dificultam o acesso às ferramentas públicas. Use um Anonymous nível de acesso para desabilitar chaves de acesso em seu servidor ao usar a autenticação baseada em OAuth. |
Observação
Este tutorial contém instruções de configuração detalhadas para o recurso de autorização e autenticação de servidor interno, que também pode ser chamado de Autenticação do Serviço de Aplicativo em outros artigos. Você pode encontrar uma visão geral do recurso e algumas diretrizes de uso no artigo Configurar autorização de servidor interno (versão prévia ).
Desabilitar a autenticação baseada em chave
O recurso de autorização de servidor interno é um componente separado do Azure Functions. Ao usar a autenticação do servidor, é melhor primeiro desabilitar a autenticação baseada em chave permitindo acesso anônimo.
Para desabilitar a autenticação baseada em host no servidor MCP, defina system.webhookAuthorizationLevel para Anonymous no arquivo host.json:
{
"version": "2.0",
"extensions": {
"mcp": {
...
"system": {
"webhookAuthorizationLevel": "Anonymous"
}
}
}
}
Criar o aplicativo de funções no Azure
Crie um aplicativo de funções no plano de Consumo Flex no Azure que hospeda seu servidor MCP.
No portal do Azure, no menu ou na Página inicial, selecione Criar um recurso.
Selecione Introdução e, em seguida, Criar em Aplicativo de Funções.
Em Selecione uma opção de hospedagem, escolha Consumo Flex>Selecionar.
Na página Informações básicas, use as configurações do aplicativo de funções conforme especificado na seguinte tabela:
Configurações Valor sugerido Description Subscription Sua assinatura A assinatura na qual você cria seu novo aplicativo de funções. Grupo de Recursos myResourceGroup Nome do novo grupo de recursos no qual você cria o aplicativo de funções. Nome do aplicativo de funções Nome globalmente exclusivo Nome que identifica seu novo aplicativo de funções. Os caracteres válidos são a-z(não diferencia maiúsculas de minúsculas),0-9e-.Região Região preferencial Selecione uma região perto de você ou perto de outros serviços que suas funções podem acessar. Regiões sem suporte não são exibidas. Para obter mais informações, consulte Exibir regiões com suporte no momento. Pilha de tempo de execução Idioma preferencial Escolha uma das pilhas de runtime de idioma com suporte. Atualmente, a edição no portal usando o Visual Studio Code para a Web só está disponível para aplicativos Node.js, PowerShell e Python. A biblioteca de classes C# e as funções Java devem ser desenvolvidas localmente. Versão Versão da linguagem Escolha uma versão com suporte da pilha de runtime do idioma. Tamanho da instância Padrão Determina a quantidade de memória da instância alocada para cada instância do seu aplicativo. Para obter mais informações, consulte tamanhos de instância. Na página Armazenamento , aceite o comportamento padrão da criação de uma nova conta de armazenamento de host padrão ou escolha usar uma conta de armazenamento existente.
Na página Monitoramento , verifique se a opção Habilitar o Application Insights está selecionada. Aceite o padrão para criar uma nova instância do Application Insights ou escolha usar uma instância existente. Ao criar uma instância do Application Insights, você também é solicitado a selecionar um Workspace do Log Analytics.
Na página Autenticação , altere o tipo de Autenticação para Identidade Gerenciada para todos os recursos. Com essa opção, uma identidade gerenciada atribuída pelo usuário também é criada que seu aplicativo usa para acessar esses recursos do Azure usando a autenticação da ID do Microsoft Entra. As identidades gerenciadas com a ID do Microsoft Entra fornecem o nível mais alto de segurança para se conectar aos recursos do Azure.
Aceite as opções padrão nas guias restantes e selecione Examinar + criar para examinar a configuração de aplicativo escolhida.
Quando estiver satisfeito, selecione Criar para provisionar e implantar o aplicativo de funções e os recursos relacionados.
Selecione o ícone Notificações no canto superior direito do portal e veja se a mensagem Implantação concluída com êxito é exibida.
Selecione Ir para recursos para exibir o novo aplicativo de funções. Você também pode selecionar Fixar no painel. A fixação facilita retornar a esse recurso de aplicativo de função no seu painel.
Implantar o projeto do servidor MCP
Importante
A implantação em um aplicativo de funções existente sempre substitui o conteúdo do aplicativo no Azure.
Na paleta de comandos, insira e, em seguida, selecione Azure Functions: implantar no Aplicativo de Funções.
Selecione o aplicativo de funções que você acabou de criar. Quando solicitado sobre a substituição de implantações anteriores, selecione Implantar para implantar seu código de função no novo recurso do aplicativo de funções.
Após a implantação ser concluída, selecione Ver a saída para ver os resultados da criação e da implantação, incluindo os recursos do Azure que você criou. Se você não viu a notificação, selecione o ícone do sino no canto inferior direito para vê-la novamente.
Os aplicativos Python também exigem que você adicione esta configuração de aplicativo:
PYTHONPATH=/home/site/wwwroot/.python_packages/lib/site-packages.
Agora você pode implantar o projeto do servidor:
Importante
A implantação em um aplicativo de funções existente sempre substitui o conteúdo do aplicativo no Azure.
Na paleta de comandos, insira e, em seguida, selecione Azure Functions: implantar no Aplicativo de Funções.
Selecione o aplicativo de funções que você acabou de criar. Quando solicitado sobre a substituição de implantações anteriores, selecione Implantar para implantar seu código de função no novo recurso do aplicativo de funções.
Após a implantação ser concluída, selecione Ver a saída para ver os resultados da criação e da implantação, incluindo os recursos do Azure que você criou. Se você não viu a notificação, selecione o ícone do sino no canto inferior direito para vê-la novamente.
Quando a implantação for concluída, você deverá ver uma notificação no Visual Studio Code sobre como se conectar ao servidor. Selecione o botão Conectar para que o editor configure as informações de conexão do servidor.mcp.json
Habilitar a autorização e a autenticação internas do servidor
A instrução a seguir mostra como habilitar o recurso interno de autorização e autenticação no aplicativo do servidor e configura a ID do Microsoft Entra como o provedor de identidade. Quando terminar, você testa conectando-se ao servidor no Visual Studio Code e vê que é solicitado que você se autentique antes de se conectar.
Configurar a autenticação no aplicativo do servidor
Abra o aplicativo do servidor no portal do Azure e selecioneAutenticação de > no menu à esquerda.
Selecione Adicionar provedor de identidade>Microsoft como o provedor de identidade.
Para escolher um locatário para seu aplicativo e seus usuários, selecione a configuração da Força de Trabalho (locatário atual).
Em Registro de aplicativo: use estas configurações:
Configurações Seleção Tipo de registro de aplicativo Criar novo registro de aplicativo Nome Insira um nome descritivo para seu aplicativo Expiração do segredo de cliente Recomendado: 180 dias Tipos de conta com suporte Locatário atual – Locatário único Em verificações adicionais:, para o requisito de aplicativo cliente , selecione Permitir solicitações de aplicativos cliente específicos, selecione o ícone de lápis, adicione a ID
aebc6443-996d-45c2-90f0-388ff96faa56do cliente do Visual Studio Code e selecione OK. Deixe as outras seções como estão.Nas configurações de autenticação do Serviço de Aplicativo , use estas configurações:
Configurações Seleção Restringir o acesso Exigir autenticação Solicitações não autenticadas HTTP 401 Não autorizado: recomendado para APIs Repositório de tokens Marque a caixa, que permite a atualização do token Selecione Adicionar. Após a propagação das configurações, você deverá ver o seguinte resultado:
Pré-autenticar o Visual Studio Code como cliente
Selecione o nome do aplicativo Entra ao lado da Microsoft. Essa ação leva você para a visão geral do recurso do aplicativo Entra.
No menu à esquerda, localize Gerenciar –> Expor uma API.
Em Aplicativos cliente autorizados, selecione +Adicionar um aplicativo cliente.
Insira a ID do cliente do Visual Studio Code:
aebc6443-996d-45c2-90f0-388ff96faa56.Selecione a caixa à frente do escopo que se parece com
api://abcd123-efg456-hijk-7890123/user_impersonation.Selecione Adicionar aplicativo.
Configurar metadados de recursos protegidos (versão prévia)
Na mesma exibição Expor uma API, localize a seção Escopos e copie o escopo que permite que administradores e usuários deem consentimento ao aplicativo Entra. Esse valor se parece com
api://abcd123-efg456-hijk-7890123/user_impersonation.Execute o mesmo comando que anterior para adicionar a configuração
WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES:az functionapp config appsettings set --name <function-app-name> --resource-group <resource-group-name> --settings "WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES=<scope>"Também na visão Expor uma API, localize o URI de ID do Aplicativo (parece
api://abcd123-efg456-hijk-7890123) na parte superior e salve para uma etapa posterior.
Conectar-se ao servidor
Abra mcp.json dentro do .vscode diretório.
Quando você seleciona Conectar no pop-up após a implantação, o Visual Studio Code preenche o arquivo com informações de conexão do servidor.
Se você ignorar essa etapa, também poderá abrir Saída (Ctrl/Cmd+Shift+U) para encontrar o botão de conexão embutido no final dos logs de implantação.
Você também pode adicionar informações de conexão manualmente:
Obtenha o domínio do servidor executando o seguinte comando:
az functionapp show --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --query "defaultHostName" --output tsvNo Visual Studio Code, abra a paleta de comandos, pesquise e execute o comando MCP: Adicionar Servidor... e siga estes prompts:
Rápido Sugestão Tipo de servidor a ser adicionado HTTP URL do servidor MCP https://<FUNCTION_APP_NAME>.azurewebsites.azurewebsites.net/runtime/webhooks/mcpNome do servidor remote-mcp-server Onde instalar o servidor Workspace O Visual Studio Code abre o
mcp.jsonarquivo de configuração para você.
Siga as instruções na próxima seção para se conectar ao servidor, dependendo de como você configurou a autenticação.
Com autenticação e autorização internas
Inicie o servidor remoto selecionando o botão Iniciar acima do nome do servidor.
Quando solicitado sobre a autenticação com a Microsoft, selecione Permitir e entre com seu email (aquele usado para fazer logon no portal do Azure).
Quando você se conecta com êxito ao servidor, vê o número de ferramentas disponíveis acima do nome do servidor.
Abra o chat do Copilot do Visual Studio Code no modo de agente e faça uma pergunta. Por exemplo,
Greet with #your-remote-mcp-server-name.Pare o servidor ao concluir o teste.
Para entender detalhadamente o que acontece quando o Visual Studio Code tenta se conectar ao servidor MCP remoto, consulte o protocolo de autorização do servidor.
Com a chave de acesso
Se você não habilitar a autenticação e a autorização internas e, em vez disso, quiser se conectar ao servidor MCP usando uma chave de acesso, deverá conter a mcp.json chave de acesso do Functions nos cabeçalhos de solicitação de um registro de servidor.
O Visual Studio preenche automaticamente a chave de acesso quando você inicia o servidor.
O mcp.json arquivo deve ser como o seguinte exemplo:
{
"servers": {
"remote-mcp-server": {
"type": "http",
"url": "https://${input:functionapp-domain}/runtime/webhooks/mcp",
"headers": {
"x-functions-key": "${input:functions-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "functions-key",
"description": "Functions App Key",
"password": true
},
{
"type": "promptString",
"id": "functionapp-domain",
"description": "The domain of the function app.",
"password": false
}
]
}
Se você quiser encontrar a chave de acesso por conta própria, acesse o aplicativo de funções no portal do Azure. No menu à esquerda, localize Funções –> Chaves de aplicativo. Na seção Chaves do sistema, localize a chamada mcp_extension.
Dica
Para ver os logs de conexão, vá para o nome do servidor e selecione Mais>Mostrar Saída. Para obter mais detalhes sobre a interação entre o cliente (Visual Studio Code) e o servidor MCP remoto, selecione o ícone de engrenagem e escolha Rastreamento.
Configurar o agente do Azure AI Foundry para usar suas ferramentas
Você pode configurar um agente no Azure AI Foundry para usar ferramentas expostas por servidores MCP hospedados no Azure Functions.
No portal do Foundry, localize o agente que você deseja configurar com servidores MCP hospedados no Functions.
Em Ferramentas, selecione o botão Adicionar e, em seguida, selecione + Adicionar uma nova ferramenta.
Selecione a guia Personalizado e, em seguida, selecione Protocolo de Contexto de Modelo (MCP) e o botão Criar .
Preencha as seguintes informações:
- Nome: Nome do servidor
- Ponto de extremidade remoto do Servidor MCP:
- Servidor de extensão MCP:
https://<server domain>/runtime/webhooks/mcp - Servidor auto-hospedado:
https://<server domain>/mcp
- Servidor de extensão MCP:
- Autenticação: escolha "Microsoft Entra"
- Tipo: escolha "Identidade Gerenciada do Projeto"
- Audiência: este é o URI de ID do aplicativo Entra em Configurar metadados de recurso protegido
Por exemplo:
Selecione Conectar.
Teste fazendo uma pergunta que pode ser respondida com a ajuda de uma ferramenta de servidor na janela de chat.
Protocolo de autorização do servidor
Na saída de depuração do Visual Studio Code, você vê uma série de solicitações e respostas à medida que o cliente MCP e o servidor interagem. Ao usar a autorização interna do servidor MCP, você verá a seguinte sequência de eventos:
- O editor envia uma solicitação de inicialização para o servidor MCP.
- O servidor MCP responde com um erro indicando que a autorização é necessária. A resposta inclui um ponteiro para os metadados de recurso protegido (PRM) do aplicativo. O recurso de autorização interno gera o PRM para o aplicativo de servidor.
- O editor busca o PRM e o usa para identificar o servidor de autorização.
- O editor tenta obter metadados do servidor de autorização (ASM) de um ponto de extremidade bem conhecido no servidor de autorização.
- O Microsoft Entra ID não dá suporte a ASM no ponto de extremidade bem conhecido, portanto, o editor volta a usar o ponto de extremidade de metadados do OpenID Connect para obter o ASM. Ele tenta descobrir isso inserindo o ponto de extremidade conhecido antes de qualquer outra informação de caminho.
- As especificações do OpenID Connect definiram o ponto de extremidade bem conhecido como sendo após as informações de caminho, e é onde o Microsoft Entra ID o hospeda. Portanto, o editor tenta novamente com esse formato.
- O editor recupera com êxito o ASM. Em seguida, ele usa essas informações com seu próprio ID de cliente para realizar um acesso. Neste ponto, o editor solicita que você entre e consenta com o aplicativo.
- Supondo que você entre e consenta com êxito, o editor concluirá a autenticação. Ele repete a solicitação de intialização para o servidor MCP, desta vez incluindo um token de autorização na solicitação. Essa nova tentativa não é visível no nível de saída de Depuração, mas você pode vê-la no nível de saída de Rastreamento.
- O servidor MCP valida o token e responde com uma resposta bem-sucedida à solicitação de inicialização. O fluxo de MCP padrão continua a partir desse ponto, resultando na descoberta da ferramenta MCP definida neste exemplo.
Resolução de problemas
Se você tiver problemas, peça ajuda ao GitHub Copilot. Aqui estão algumas ideias específicas para solução de problemas:
Nenhuma outra ideia no momento. Lembre-se de perguntar ao chat do Copilot sobre os erros que ocorrerem.
Próximas etapas
Saiba como registrar servidores MCP hospedados pelo Azure Functions no Centro de API do Azure.