Servidor MCP remoto auto-hospedado no Azure Functions (pré-visualização pública)

O Azure Functions oferece duas formas de alojar servidores MCP remotos:

Com a primeira abordagem, podes usar o modelo de programação do Azure Functions com triggers e bindings para construir o servidor MCP. Depois, podes alojar o servidor remotamente ao implementá-lo numa aplicação Function.

Se já tens um servidor MCP criado com os SDKs MCP oficiais e só queres alojá-lo remotamente, a segunda abordagem provavelmente se adequa às tuas necessidades. Não precisas de fazer alterações de código ao servidor para o alojar no Azure Functions. Em vez disso, pode adicionar os artefactos de Funções necessários, e o servidor está pronto para ser implementado. Assim, estes servidores são designados como servidores MCP auto-hospedados.

Diagrama que mostra o alojamento da aplicação Function e das apps de handler personalizadas.

Este artigo fornece uma visão geral dos servidores MCP auto-hospedados e ligações para artigos e exemplos relevantes.

Processadores personalizados

Servidores MCP auto-hospedados são implementados na plataforma Azure Functions como handlers personalizados. Manipuladores personalizados são servidores Web leves que recebem eventos do host Functions. Proporcionam uma forma de executar aplicações na plataforma Functions construídas com frameworks diferentes do modelo de programação Functions ou em linguagens não suportadas de fábrica. Para mais informação, consulte handlers personalizados do Azure Functions.

Quando implementa um servidor baseado em SDK MCP para Azure Functions, deve incluir um host.json no seu projeto. A host.json mínima é a seguinte:

{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "python",
            "arguments": ["Path to main script file, e.g. hello_world.py"] 
        },
        "port": "<MCP server port>"
    }
}
{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "npm",
            "arguments": ["run", "start"] 
        },
        "port": "<MCP server port>"
    }
}
{
   "version": "2.0",
    "configurationProfile": "mcp-custom-handler",
    "customHandler": {
        "description": {
            "defaultExecutablePath": "dotnet",
            "arguments": ["Path to the compiled DLL, e.g. HelloWorld.dll"] 
        },
        "port": "<MCP server port>"
    }
}

Observação

Como a carga útil implantada no Azure Functions é o conteúdo do diretório bin/output, o caminho para a DLL compilada é relativo a esse diretório, e não à raiz do projeto.

Exemplo ainda não disponível.

Usar um valor configuration Profile de mcp-custom-handler configura automaticamente estas definições de host das Funções, que são necessárias para executar o servidor MCP no Azure Functions.

  • http.enableProxying a true
  • http.routes a [{ "route": "{*route}" }]
  • extensions.http.routePrefix a ""

Este exemplo mostra um ficheiro host.json com propriedades de handler personalizadas adicionais, equivalentes ao uso do mcp-custom-handler perfil:

{
    "version": "2.0",
    "extensions": {
        "http": {
            "routePrefix": ""
        }
    },
    "customHandler": {
        "description": {
            "defaultExecutablePath": "",
            "arguments": [""]
        },
        "http": {
            "enableProxying": true, 
            "defaultAuthorizationLevel": "anonymous", 
            "routes": [ 
                {
                    "route": "{*route}",
                    // Default authorization level is `defaultAuthorizationLevel`
                },
                {
                    "route": "admin/{*route}",
                    "authorizationLevel": "admin"
                }
            ]
        }
    }
}

Esta tabela explica as propriedades de customHandler.http, juntamente com os valores padrão:

Propriedade O que faz Valor predefinido
enableProxying Controla como o host do Azure Functions gere pedidos HTTP para handlers personalizados. Quando enableProxying está definido para true, o host de Funções atua como um proxy inverso e encaminha todo o pedido HTTP (incluindo cabeçalhos, corpo, parâmetros de consulta) diretamente para o handler personalizado. Esta configuração dá ao handler personalizado acesso total aos detalhes originais do pedido HTTP.

Quando enableProxying está false, o host das Funções processa o pedido e transforma-o primeiro no formato de pedido/resposta do Azure Functions antes de o passar para o handler personalizado.
false
defaultAuthorizationLevel Controla o requisito de autenticação para aceder a endpoints personalizados de manipuladores. Por exemplo, function requer uma chave API específica para a função para aceder. Para mais informações, consulte os níveis de autorização. function
route Especifica o padrão de caminho URL ao qual o handler personalizado responde. {*route} corresponde a qualquer caminho de URL (como /, /mcp, /api/tools, ou /anything/nested/path) e encaminha o pedido para o handler personalizado. {*route}

Autenticação de servidor incorporada

A autenticação e autorização baseadas em OAuth fornecidas pela plataforma de App Service implementam os requisitos da especificação de autorização MCP, como a emissão do desafio 401 e a exposição do documento de Metadados de Recursos Protegidos (PRM). Quando ativa a autenticação incorporada, os clientes que tentam aceder ao servidor são redirecionados para fornecedores de identidade como o Microsoft Entra ID para autenticação antes de se ligarem.

Para mais informações, veja Configurar autorização de servidor incorporada (pré-visualização) e Alojar servidores MCP em Azure Functions.

Integrações com agentes Microsoft Foundry

Os agentes no Foundry podem ser configurados para usar ferramentas em servidores MCP alojados em Azure Functions.

Registe o teu servidor no Azure API Center

Quando regista o seu servidor MCP no Azure API Center, cria um catálogo privado de ferramentas organizacionais. Esta abordagem é recomendada para partilhar servidores MCP em toda a sua organização, com governação consistente e capacidade de descoberta. Para mais informações, consulte Registar servidores MCP alojados em Azure Functions no Azure API Center.

Suporte de pré-visualização pública

A capacidade de alojar os seus próprios servidores MCP baseados em SDK no Functions está atualmente em pré-visualização e suporta estas funcionalidades:

  • servidores sem estado que utilizam o transporte streamable-http. Se precisar que o seu servidor seja stateful, considere usar a extensão MCP Functions.
  • Servidores implementados com os SDKs MCP em Python, TypeScript, C# ou Java.
  • Ao executar o projeto localmente, deve usar o comando Azure Functions Core Tools (func start). Atualmente, não podes usar F5 para começar a executar com o depurador.
  • Os servidores devem ser alojados como aplicações do plano Flex Consumption .

Samples

Ainda não disponível.

Azure Functions controladores personalizados