현행 명세를 사용하는 MCP 서버는 단 1%
공개된 MCP 서버 19,233대를 측정했습니다. 현행 프로토콜 버전으로 협상하는 것은 198대입니다. 클라이언트나 서버를 만든다면 이 격차가 무엇을 뜻할까요?
모든 MCP 서버는 initialize 핸드셰이크에서 자신이 사용하는 프로토콜 버전을 알립니다. 덕분에 도입률을 측정할 수 있고, 그래서 공개 생태계 전체를 측정했습니다.
숫자
지속적으로 탐침하는 19,233대 중 198대가 현행 버전으로 협상합니다. 1.0%입니다. 또 다른 1,451대(7.5%)는 중간에 있습니다. 현대적 구조는 인식하지만 결국 더 오래된 버전으로 합의합니다. 나머지는 모두 이전 세대에 머물러 있습니다.
이 격차는 반올림 오차가 아닙니다. 그것이 곧 생태계입니다.
도입이 이토록 느린 이유
- SDK가 뒤처집니다. 대부분의 서버는 공식 SDK를 얇게 감싼 것이고, 버전은 SDK가 고정합니다. 그 버전이 올라가기 전까지는 작성자가 원해도 서버는 움직일 수 없습니다.
- 업그레이드를 강제하는 것이 없습니다. 클라이언트가 하위 호환을 유지하므로 오래된 서버도 계속 동작합니다. 오류도, 지원 중단 경고도, 사용자 불만도 없습니다.
- 대부분의 서버는 방치되어 있습니다. 주말에 만든 프로젝트가 6개월 뒤 프로토콜 업그레이드를 받지는 않습니다.
클라이언트를 만든다면
현행 버전을 전제하지 마세요. 협상에서 최신 버전만 제시하는 클라이언트는 생태계의 99%에서 실패합니다. 최신 버전을 제시하되, 돌아오는 응답을 받아들이고 옛 형식도 처리하세요.
서버를 만든다면
지금 버전을 올리는 것은 눈에 띄는 가장 저렴한 방법 중 하나입니다. 바로 하는 사람이 거의 없기 때문입니다. 다만 먼저 한 가지를 확인하세요. 프로토콜 버전 헤더는 핸드셰이크 이후의 요청에 붙이는 것이지 핸드셰이크 자체에 붙이는 것이 아닙니다. initialize 중에 보내면 클라이언트를 즉시 거부하는 서버가 있으며, 바로 그 이유로 도달 불가 상태인 서버들을 발견했습니다.
어떤 서버가 어떤 버전인지 보기