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.
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
- Quando você usa o transporte SSE, a extensão MCP depende do armazenamento de Filas 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ções tem pelo menos o equivalente dessas 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. - Ao executar 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 preferida:
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 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}"
}
}
}
}