.NET과 Azure Container Apps를 이용한 원격 MCP 서버 구축
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
.NET 및 Azure를 사용한 서버 개발자, MCP 프로토콜 구현에 관심 있는 개발자
난이도: 중급 이상 (C# 및 ASP.NET Core 경험 필요)
핵심 요약
- MCP 서버는
Streamable HTTP
전송 방식을 통해 Azure Container Apps에 배포할 수 있으며, 이는stdio
대신 HTTP POST/GET을 사용합니다. - C# SDK의
ModelContextProtocol.AspNetCore
패키지를 사용해 MCP 서버를 구축하며,WithHttpTransport()
메서드로 HTTP 전송을 활성화합니다. MapMcp()
메서드는Streamable HTTP
및SSE
엔드포인트를 생성하여 원격 MCP 서버의 HTTP 통신을 처리합니다.
섹션별 세부 요약
1. Model Context Protocol (MCP) 개요
- MCP는 LLM과 외부 데이터/도구를 연결하는 표준화된 프로토콜로,
stdio
와Streamable HTTP
두 가지 전송 방식을 제공합니다. Streamable HTTP
는 서버가 독립적인 프로세스로 작동하며, HTTP POST/GET과 SSE를 사용해 다중 클라이언트 연결을 처리합니다.- MCP는 GPT, Deepseek 등 다양한 LLM 사이의 유연한 전환을 지원합니다.
2. C# SDK와 Azure Container Apps 적용
ModelContextProtocol.AspNetCore
패키지를 사용해 MCP 서버를 구축하며,dotnet add package
명령어로 설치합니다.WithHttpTransport()
메서드는 HTTP 전송을 활성화하고,WithToolsFromAssembly()
는 어셈블리 내 도구를 MCP 서버에 등록합니다.app.MapMcp()
는Streamable HTTP
및SSE
엔드포인트를 생성하며, Azure Container Apps에 배포를 위해 HTTP 엔드포인트를 제공해야 합니다.
3. `MapMcp()` 메서드의 역할
StreamableHttpHandler
를 통해POST
,GET
,DELETE
요청을 처리하며,SSE
엔드포인트도/sse
와/message
경로에 매핑합니다.Stateless
모드에서는GET
/DELETE
엔드포인트가 비활성화되며,SSE
와Streamable HTTP
는 별도의 경로로 분리됩니다.- OpenTelemetry를 사용해 추적 및 메트릭을 수집하며,
HttpClient
를 통해 서버의 User-Agent를 설정합니다.
4. 보안 및 확장성 고려사항
- 현재 문서에서는 보안 구현에 대한 세부 사항은 생략되었으며, 향후 보안 강화(예: 인증/인가)가 필요합니다.
- Azure Container Apps에 배포 시, 서버의 확장성과 안정성을 위해
Stateless
모드를 고려해야 합니다.
결론
- MCP 서버는
Streamable HTTP
와SSE
를 기반으로 Azure Container Apps에 배포 가능하며,ModelContextProtocol.AspNetCore
패키지를 사용해 구현해야 합니다. 향후 보안 강화와 OpenTelemetry 통합이 필수적입니다.*