Compartilhar via


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

O Azure Functions fornece duas maneiras de hospedar servidores MCP remotos:

Com a primeira abordagem, você pode usar o modelo de programação do Azure Functions com gatilhos e associações para criar o servidor MCP. Em seguida, você pode hospedar o servidor remotamente implantando-o em um aplicativo de funções.

Se você já tiver um servidor MCP criado com os SDKs oficiais do MCP e apenas quiser hospedá-lo remotamente, a segunda abordagem provavelmente atenderá às suas necessidades. Você não precisa fazer alterações de código no servidor para hospedá-lo no Azure Functions. Em vez disso, você pode adicionar os artefatos necessários do Functions, e o servidor estará pronto para ser implantado. Dessa forma, esses servidores são chamados de servidores MCP auto-hospedados.

Diagrama mostrando a hospedagem de aplicativos de funções e aplicativos de manipulador personalizados.

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

Manipuladores personalizados

Servidores MCP auto-hospedados são implantados na plataforma do Azure Functions como manipuladores personalizados. Os manipuladores personalizados são servidores Web leves que recebem eventos do host do Functions. Eles fornecem uma maneira de executar na plataforma Functions aplicações criadas com frameworks diferentes do modelo de programação Functions ou em linguagens não suportadas de forma nativa. Para obter mais informações, confira Manipuladores personalizados do Azure Functions.

Ao implantar um servidor baseado em SDK do MCP no Azure Functions, você deve incluir um host.json em seu projeto. A host.json mínima tem esta aparência:

{
   "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 implantada 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.

Usando um valor configuration Profile de mcp-custom-handler, configura automaticamente essas configurações de host do Azure Functions, que são necessárias para executar seu servidor MCP no Azure Functions:

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

Este exemplo mostra um arquivo host.json com propriedades personalizadas adicionais de manipulador configuradas para serem equivalentes ao perfil de uso do mcp-custom-handler.

{
    "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 padrão
enableProxying Controla como o host do Azure Functions lida com solicitações HTTP para manipuladores personalizados. Quando enableProxying definido como true, o host do Functions atua como um proxy reverso e encaminha toda a solicitação HTTP (incluindo cabeçalhos, corpo, parâmetros de consulta) diretamente para o manipulador personalizado. Essa configuração fornece ao manipulador personalizado acesso total aos detalhes da solicitação HTTP original.

Quando enableProxying é false, o host do Functions processa a solicitação primeiro e a transforma no formato de solicitação/resposta do Azure Functions antes de passá-la para o manipulador personalizado.
false
defaultAuthorizationLevel Controla a necessidade de autenticação para acessar endpoints personalizados do manipulador. Por exemplo, function requer uma chave de API específica à função para acessar. Para obter mais informações, consulte os níveis de autorização. function
route Especifica o padrão de caminho de URL ao qual o manipulador personalizado responde. {*route}corresponde a qualquer caminho de URL (como/, , /mcp/api/toolsou /anything/nested/path) e encaminha a solicitação para o manipulador personalizado. {*route}

Autenticação de servidor interno

A autenticação e a autorização baseadas em OAuth fornecidas pela plataforma do Serviço de Aplicativo implementam os requisitos da especificação de autorização do MCP, como emitir o desafio 401 e expor o documento PRM (Metadados de Recurso Protegido). Quando você habilita a autenticação interna, os clientes que tentam acessar o servidor são redirecionados para provedores de identidade, como a ID do Microsoft Entra para autenticação antes de se conectarem.

Para obter mais informações, consulte Configurar a autorização interna do servidor (versão prévia) e hospedar servidores MCP no Azure Functions.

Integrações de agente do Azure AI Foundry

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

Registrar seu servidor no Centro de API do Azure

Ao registrar seu servidor MCP no Centro de API do Azure, você cria um catálogo de ferramentas organizacionais privadas. Essa abordagem é recomendada para compartilhar servidores MCP em sua organização com governança e descoberta consistentes. Para obter mais informações, consulte Registrar servidores MCP hospedados no Azure Functions no Centro de API do Azure.

Suporte à visualização pública

A capacidade de hospedar seus próprios servidores MCP baseados em SDK no Functions está atualmente em versão prévia e dá suporte a esses recursos:

  • Servidores sem estado que usam o transporte streamable-http. Se você precisar que seu servidor seja stateful, considere usar a extensão MCP do Functions.
  • Servidores implementados com os SDKs do Python, TypeScript, C#ou Java MCP.
  • Ao executar o projeto localmente, você deve usar as Ferramentas Principais do Azure Functions (func start comando). No momento, você não pode usar F5 para iniciar a execução com o depurador.
  • Os servidores devem ser hospedados como aplicativos do Flex Consumption plan.

Samples

Ainda não está disponível.

Manipuladores personalizados do Azure Functions