다음을 통해 공유


Azure Functions의 자체 호스팅 원격 MCP 서버(공개 미리 보기)

Azure Functions는 원격 MCP 서버를 호스팅하는 두 가지 방법을 제공합니다.

첫 번째 방법을 사용하면 트리거 및 바인딩과 함께 Azure Functions 프로그래밍 모델을 사용하여 MCP 서버를 빌드할 수 있습니다. 그런 다음, 함수 앱에 배포하여 서버를 원격으로 호스트할 수 있습니다.

공식 MCP SDK를 사용하여 만든 MCP 서버가 이미 있고 원격으로 호스트하려는 경우 두 번째 방법은 사용자의 요구에 적합할 수 있습니다. Azure Functions에서 호스트하기 위해 서버를 코드를 변경할 필요가 없습니다. 대신 필요한 Functions 아티팩트만 추가할 수 있으며 서버를 배포할 준비가 된 것입니다. 따라서 이러한 서버를 자체 호스팅 MCP 서버라고 합니다.

함수 앱 및 사용자 지정 처리기 앱의 호스팅을 보여 주는 다이어그램

이 문서에서는 자체 호스팅 MCP 서버에 대한 개요와 관련 문서 및 샘플에 대한 링크를 제공합니다.

사용자 지정 처리기

자체 호스팅 MCP 서버는 사용자 지정 처리기로 Azure Functions 플랫폼에 배포됩니다. 사용자 지정 처리기는 Functions 호스트에서 이벤트를 받는 간단한 웹 서버입니다. Functions 프로그래밍 모델과 다른 프레임워크로 빌드된 Functions 플랫폼 애플리케이션 또는 기본적으로 지원되지 않는 언어로 실행되는 방법을 제공합니다. 자세한 내용은 Azure Functions 사용자 지정 처리기를 참조하세요.

MCP SDK 기반 서버를 Azure Functions에 배포하는 경우 프로젝트에 host.json 포함해야 합니다. 최소 host.json 다음과 같습니다.

{
   "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>"
    }
}

비고

Azure Functions에 배포된 페이로드는 디렉터리의 콘텐츠 bin/output 이므로 컴파일된 DLL의 경로는 프로젝트 루트가 아닌 해당 디렉터리를 기준으로 합니다.

예제를 아직 사용할 수 없습니다.

configuration Profile 값을 mcp-custom-handler 사용하면 Azure Functions에서 MCP 서버를 실행하는 데 필요한 이러한 Functions 호스트 설정이 자동으로 구성됩니다.

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

이 예제는 mcp-custom-handler 프로필 사용과 동일하게 추가 사용자 지정 처리기 속성이 설정된 host.json 파일을 보여줍니다.

{
    "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"
                }
            ]
        }
    }
}

이 표에서는 기본값과 함께 ,의 customHandler.http속성을 설명합니다.

재산 수행하는 작업 기본값
enableProxying Azure Functions 호스트가 사용자 지정 처리기에 대한 HTTP 요청을 처리하는 방법을 제어합니다. enableProxyingtrue으로 설정되면, Functions 호스트는 역방향 프록시 역할을 하고, 전체 HTTP 요청(헤더, 본문, 쿼리 매개 변수 포함)을 사용자 지정 처리기에 직접 전달합니다. 이 설정은 사용자 지정 처리기에서 원래 HTTP 요청 세부 정보에 대한 모든 권한을 부여합니다.

이 경우 enableProxying Functions 호스트는 false요청을 먼저 처리하고 사용자 지정 처리기에 전달하기 전에 Azure Functions 요청/응답 형식으로 변환합니다.
false
defaultAuthorizationLevel 사용자 지정 처리기 엔드포인트에 액세스하기 위한 인증 요구 사항을 제어합니다. 예를 들어 function 액세스하려면 함수별 API 키가 필요합니다. 자세한 내용은 권한 부여 수준을 참조하세요. function
route 사용자 지정 처리기가 응답하는 URL 경로 패턴을 지정합니다. {*route}는 URL 경로(예: /, /mcp/api/tools또는/anything/nested/path)와 일치하고 사용자 지정 처리기에 요청을 전달합니다. {*route}

기본 제공 서버 인증

App Service 플랫폼에서 제공하는 OAuth 기반 인증 및 권한 부여는 401 챌린지 발급 및 PRM(보호된 리소스 메타데이터) 문서 노출과 같은 MCP 권한 부여 사양의 요구 사항을 구현합니다. 기본 제공 인증을 사용하도록 설정하면 서버에 액세스하려는 클라이언트가 연결하기 전에 인증을 위해 Microsoft Entra ID와 같은 ID 공급자로 리디렉션됩니다.

자세한 내용은 Azure Functions 에서 기본 제공 서버 권한 부여(미리 보기)호스팅 MCP 서버 구성을 참조하세요.

Azure AI Foundry 에이전트 통합

Azure AI Foundry의 에이전트는 Azure Functions에서 호스트되는 MCP 서버의 도구를 사용하도록 구성할 수 있습니다.

Azure API 센터에서 서버 등록

Azure API Center에 MCP 서버를 등록할 때 개인 조직 도구 카탈로그를 만듭니다. 이 방법은 일관된 거버넌스 및 검색 기능을 사용하여 조직 전체에서 MCP 서버를 공유하는 데 권장됩니다. 자세한 내용은 Azure API Center의 Azure Functions에서 호스트되는 MCP 서버 등록을 참조하세요.

공개 미리 보기 지원

Functions에서 자체 SDK 기반 MCP 서버를 호스트하는 기능은 현재 미리 보기로 제공되며 다음 기능을 지원합니다.

  • streamable-http 전송을 사용하는 상태 비지정 서버입니다. 서버를 상태 저장해야 하는 경우 Functions MCP 확장을 사용하는 것이 좋습니다.
  • Python, TypeScript, C#또는 Java MCP SDK를 사용하여 구현된 서버
  • 프로젝트를 로컬로 실행하는 경우 Azure Functions Core Tools(func start 명령)를 사용해야 합니다. 현재 디버거로 실행을 시작하는 데 사용할 F5 수 없습니다.
  • 서버는 Flex Consumption 계획 앱으로 호스트되어야 합니다.

Samples

아직 사용할 수 없습니다.

Azure Functions 사용자 지정 처리기