모델 컨텍스트 프로토콜(MCP) 파이썬 SDK 개요
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 소프트웨어 개발자, 시스템 설계자
- 중급~고급 수준의 개발자 (프로토콜 구현, 서버/트랜스포트 레이어 개발 필요)
핵심 요약
- 저수준 서버는
read_stream
과write_stream
을 통해 프로토콜 규격을 구현하고, 세션 관리를 담당 (예:server.run()
호출) - 고수준 서버(예:
FastMcp
)는 저수준 서버를 캡슐화하고, 도구 관리, 리소스 관리 등 고수준 기능 제공 - 트랜스포트 레이어는
read_stream
/write_stream
인터페이스를 통해 자체 구현 가능 (예:stdio
,SSE
,WebSocket
지원)
섹션별 세부 요약
1. 저수준 서버 구조
- 세션 생성:
server.run()
호출 시read_stream
과write_stream
을 통해 트랜스포트 레이어와 통신 - 메시지 처리:
- ClientRequest
/ClientNotification
/ClientResult
수신 시 RequestResponder
생성 후 message_stream
에 전달
- MCP core handler
를 통해 요청 처리 후 JSONRPCResponse
를 write_stream
으로 전송
- 트랜스포트 레이어 분리: 서버 세션과 트랜스포트 레이어는 두 스트림을 통해 느슨한 결합
2. 고수준 서버 기능
- 도구 관리:
CallToolRequest
/ListToolsRequest
처리를 위한 MCP core handler 구현 - 리소스 관리:
ListResourcesRequest
등 고수준 기능 제공 - 모듈화 설계: 저수준 서버와 분리된 로직 구현
3. 클라이언트 세션 동작
- 세션 초기화:
InitializeRequest
를 통해 프로토콜 버전, 기능, 클라이언트/서버 정보 교환 - 메시지 전송:
- ClientRequest
/ClientNotification
/ClientResult
전송
- ServerRequest
/ServerNotification
/ServerResult
수신
- 트랜스포트 레이어 연동:
- 모든 메시지 전송/수신은 트랜스포트 레이어 노출 인터페이스를 통해 처리
4. 트랜스포트 레이어 옵션
- 로컬 통신:
stdio
사용 권장 - 원격 통신:
SSE
사용 권장 - 커스텀 트랜스포트:
read_stream
/write_stream
인터페이스 제공 시 구현 가능 - SDK 지원:
WebSocket
포함
결론
- MCP SDK 아키텍처 이해는 서버/트랜스포트 레이어 개발에 필수적
- 트랜스포트 레이어 유연성을 위해
read_stream
/write_stream
인터페이스를 반드시 구현 - 고수준 서버(예:
FastMcp
)는 저수준 서버와 분리된 모듈 설계를 통해 확장성 강화