Partilhar via


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 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 obter mais informações, consulte Manipuladores 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 o payload implementado no Azure Functions é o conteúdo do bin/output diretório, o caminho para a DLL compilada é relativo a esse diretório, não à raiz do projeto.

Exemplo ainda não disponível.

Usar um valor de configuration Profilemcp-custom-handler configura automaticamente estas definições de ambiente de execução necessárias para correr um 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 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 é false, o anfitrião Functions processa primeiro o pedido e transforma-o no formato de pedido/resposta 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, consulte Configurar autorização de servidor incorporada (pré-visualização) e Alojar servidores MCP no Azure Functions.

Integrações de agentes do Azure AI Foundry

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

Registe o teu servidor no Azure API Center

Ao registrar seu servidor MCP na Central de API do Azure, você cria um catálogo de ferramentas organizacionais privadas. 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 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.

Handlers personalizados do Azure Functions