데브허브 | DEVHUB | Model Context Protocol - Explained! (with Python example)Model Context Protocol - Explained! (with Python example)
- 모델 컨텍스트 프로토콜 (MCP)은 LLM(대규모 언어 모델)에 추가 컨텍스트를 표준화된 방식으로 제공하여 질문과 쿼리에 더 정확하게 답변할 수 있도록 돕는 새로운 프로토콜입니다. 💡
- MCP는 LLM이 자체적으로 파일 시스템, 데이터베이스, 클라우드 스토리지, API 등 외부 데이터 소스에 접근할 수 없는 한계를 해결하여, 사용자 선호도와 같은 개인화된 정보를 제공할 수 있게 합니다. 🔗
- 주요 이점으로는 LLM 기반 에이전트 및 복잡한 워크플로우 구축 지원, 데이터 및 도구와의 통합 용이성, 사전 구축된 통합 목록 제공, LLM 공급자 간 전환 유연성, 그리고 데이터 보안 모범 사례 제공 등이 있습니다. 🛠️
- MCP는 클라이언트-서버 아키텍처를 따르며, 호스트 애플리케이션(예: Claude Desktop, Cursor IDE)이 MCP 클라이언트를 실행하고, 이 클라이언트가 MCP 서버와 통신합니다. 서버는 로컬 데이터 소스나 웹 API에서 데이터를 가져와 표준화된 방식으로 클라이언트에 제공합니다. 🖥️
- MCP 서버는 세 가지 핵심 구성 요소를 통해 기능을 노출합니다: 정적 데이터를 노출하는 '리소스'(GET 엔드포인트 유사), 실행 가능한 기능을 제공하는 '도구'(POST 엔드포인트 유사), 그리고 상호작용 패턴을 정의하는 '프롬프트'입니다. ⚙️
- GitHub, Blender, Redis, Perplexity Ask(AI 기반 웹 검색), GitLab, 파일 시스템, Puppeteer를 이용한 브라우저 자동화 등 다양한 도구 및 데이터 소스에 대한 MCP 서버가 존재하여 폭넓은 통합을 지원합니다. 🌍
- Python SDK를 활용하면
fast_mcp 객체를 사용하여 MCP 서버를 쉽게 생성하고, @mcp.tool 데코레이터를 통해 특정 기능을 수행하는 도구를 정의할 수 있습니다. 🐍
- 예시로, 사용자 이메일을 기반으로 PostgreSQL 데이터베이스에서 사용자의 상위 5개 책(평점 및 최신순)을 조회하여 LLM에 컨텍스트로 제공하는 도구를 구현하여, 개인화된 책 추천을 가능하게 합니다. 📖
- 서버와 클라이언트 간의 메시지 전송 및 수신 방식인 '트랜스포트'는
Standard IO (표준 입출력 스트림)와 Server Sent Events (HTTP POST 요청을 통한 스트리밍) 두 가지 주요 방식이 있습니다. 📡