프로그래밍 및 소프트웨어 개발

Microsoft, C#용 공식 MCP 패키지 버전 2.0 출시

새 버전은 2026-07-28자 MCP 사양과 호환되며, 기본적으로 무상태 방식을 채택하고 HTTP 헤더를 표준화하며 대화형 도구를 처리하기 위한 다중 라운드 요청을 지원한다. 또한 실험적인 Tasks 확장을 제외하고 기존 코드와 클라이언트 및 서버와의 폭넓은 호환성을 유지한다.

2026-07-28
4 분 읽기
9 조회수
فريق تحرير certi.news
Microsoft, C#용 공식 MCP 패키지 버전 2.0 출시

Microsoft는 2026-07-28 사양 적용과 함께 C#용 공식 MCP 소프트웨어 개발 키트 버전 2.0을 발표했다. 이번 버전은 HTTP를 통한 MCP 서버의 작동 방식을 변경해 기본적으로 무상태로 만들고, 표준화된 HTTP 헤더를 추가하며, 도구가 지속적인 세션에 의존하지 않고 사용자 또는 언어 모델의 입력을 요청할 수 있도록 하는 다중 라운드 요청을 지원한다.

이번 버전은 .NET에서 MCP 서버와 클라이언트를 구축하는 개발자를 대상으로 하며, 1.x 버전의 안정적인 API가 계속 작동하도록 유지한다. 또한 net8.0, net9.0, net10.0 프레임워크와 .NET Framework에서 사용할 수 있는 netstandard2.0을 지원한다.

기본적으로 무상태인 서버

이전 버전에서는 Streamable HTTP를 사용하려면 초기화 핸드셰이크를 완료하고 세션을 생성한 다음, 이후 모든 요청에 Mcp-Session-Id 헤더를 전송해야 했다. 이 방식은 요청을 해당 식별자를 발급한 서버 인스턴스에 연결하므로, 여러 인스턴스를 실행할 때 고정 라우팅이나 세션 이전이 필요했다.

2026-07-28 사양은 initialize 및 initialized 핸드셰이크와 Mcp-Session-Id 헤더를 제거하고, 프로토콜 버전과 기능을 각 요청에 포함한다. 그 결과 어떤 서버 인스턴스든 모든 요청을 처리할 수 있으며, 프로토콜 수준에서 고정 세션이나 공유 세션 저장소가 필요하지 않다. 이에 따라 serverless, 다중 인스턴스 또는 엣지 환경에서 MCP 서버를 배포하는 방식이 로드 밸런서 뒤에서 일반적인 ASP.NET Core 애플리케이션을 실행하는 방식에 가까워진다.

버전 2.0에서는 HttpServerTransportOptions.Stateless 옵션이 기본적으로 true로 설정된다. 서버에서 클라이언트로 보내는 비요청 메시지나 세션에 연결된 전송 상태가 필요한 경우에는 상태 유지 모드를 활성화할 수 있다. 세션은 여전히 사용할 수 있지만 더 이상 기본 설정이 아니다.

라우팅 및 모니터링을 위한 HTTP 헤더

무상태 방식은 MCP 요청을 독립적인 HTTP POST 요청으로 변환하므로, 일반적인 인프라가 다른 HTTP 트래픽과 동일한 방식으로 처리할 수 있다. 사양은 Mcp-Method 및 Mcp-Name과 같은 헤더를 제공하며, 일부 도구 매개변수를 Mcp-Param-* 형식의 헤더로 승격할 수도 있다.

로드 밸런서, 프록시, 게이트웨이 또는 웹 애플리케이션 방화벽은 JSON-RPC 요청 본문을 분석하지 않고도 이러한 헤더를 라우팅과 모니터링에 사용할 수 있다. 요청 본문은 계속 신뢰할 수 있는 출처로 유지된다. 헤더 값이 본문에 있는 값과 다르면 서버는 HeaderMismatch 오류와 함께 요청을 거부한다. 또한 이 설계는 ASCII가 아닌 값과 같이 헤더에서 지원되지 않는 값의 인코딩을 Base64 지시자를 사용해 지원한다.

대화형 도구를 위한 다중 라운드 요청

Multi Round-Trip Requests 또는 MRTR 기능은 한 번의 호출로 작업을 완료할 수 없는 도구를 처리하는 방법을 추가한다. 요청을 실행하는 동안 서버가 활성 세션을 통해 클라이언트에 연결하는 대신, 입력 요청과 requestState라는 불투명한 상태를 포함하는 InputRequiredResult 유형의 결과를 반환한다.

클라이언트는 사용자 확인 요청, 언어 모델 호출 또는 작업 공간 루트 표시와 같은 필요한 작업을 수행한 다음 inputResponses와 requestState를 첨부해 동일한 도구 호출을 다시 전송한다. 이 과정은 여러 라운드에 걸쳐 반복할 수 있으며, 지속성 정보가 페이로드 안에서 전달되므로 세션이 필요하지 않다.

고수준 McpClient는 적절한 핸들러를 등록한 후 MRTR을 자동으로 처리한다. 또한 상태 유지 세션이 있는 경우 이전 클라이언트와의 호환성 브리지를 사용할 수 있다. 세션 없이 작동하는 이전 클라이언트는 다중 라운드 상호작용을 수행할 수 없으므로, 도구는 필요한 값을 호출 매개변수로 직접 전달하는 방식과 같은 대체 경로를 제공해야 한다.

호환성 및 제공 패키지

폐기되지 않은 안정적인 1.x API는 2.0에서도 계속 컴파일되고 실행되며, 변경된 폐기 예정 항목은 삭제되지 않고 경고로 표시된다. 2.0 클라이언트는 이전 서버에 연결할 때 기존 초기화 핸드셰이크를 사용할 수 있으며, 2.0 서버도 이전 클라이언트의 해당 핸드셰이크를 수락한다.

프로토콜 호환성의 유일한 예외는 Tasks 확장이다. 2.0에서 재설계된 방식이 2025-11-25 사양에 포함된 실험적 Tasks를 대체하며, 인터페이스 또는 프로토콜 수준에서 서로 호환되지 않는다. Tasks는 이제 별도 패키지인 ModelContextProtocol.Extensions.Tasks로 제공되며, 실험적인 MCP Apps는 ModelContextProtocol.Extensions.Apps에 포함된다.

핵심 패키지에는 클라이언트와 저수준 구성 요소를 위한 ModelContextProtocol.Core, 대부분의 서버를 위한 ModelContextProtocol, Streamable HTTP 서버를 위한 ModelContextProtocol.AspNetCore가 포함된다. 게시물은 2.x 시리즈의 다음 초점이 OAuth 및 OpenID Connect와의 더욱 긴밀한 호환성을 기반으로 한 포괄적인 인증 및 권한 부여가 될 것이라고 밝혔다.

뉴스 출처
.NET Blog
원문 보기 ↗
ف
작성자

فريق تحرير certi.news

같은 카테고리

추천 기사

모든 뉴스 보기