데브허브 | DEVHUB | Add Progress Bars and Logging Notifications to Your MCP Server (FastMCP + Cursor Walkthrough)Add Progress Bars and Logging Notifications to Your MCP Server (FastMCP + Cursor Walkthrough)
- MCP 서버에 진행률 추적 및 로깅 기능을 추가하여 사용자에게 장기 실행 작업에 대한 피드백을 제공하고 경험을 향상시킬 수 있습니다. 📈
- 이 기능들은 Model Context Protocol (MCP) 사양에 정의되어 있으며, 서버와 클라이언트 간에 JSON RPC 메시지를 통해 통신합니다. 📜
- 진행률 추적은
notification/progress 메서드를 사용하여 현재 진행 상황(예: 1/10)과 총 단계를 클라이언트에 전달합니다. ⏳
- 로깅은
notification/message 메서드를 통해 디버그, 정보, 경고, 오류 등 다양한 수준의 메시지를 클라이언트에 전송합니다. 💬
- MCP 클라이언트는 서버에 로깅 수준을 설정하는 메시지를 보내어 표시할 로그의 상세도를 제어할 수 있습니다. ⚙️
- FastMCP는
ctx 객체의 report_progress 및 log 메서드를 통해 이러한 진행률 및 로깅 기능을 쉽게 구현할 수 있도록 지원합니다. 🚀
- Cursor 클라이언트는 현재 진행률 추적은 지원하지만, MCP 로깅 알림은 지원하지 않습니다. ❌
- MCP Inspector는 진행률과 로깅 알림을 모두 완벽하게 시연하며, 서버와 클라이언트 간의 실제 JSON RPC 메시지 교환을 보여줍니다. 🔍
- 오류 로깅 시
extra 필드를 사용하여 추가적인 구조화된 데이터를 포함할 수 있어 디버깅에 유용합니다. 🛠️
- MCP 로깅은 클라이언트-서버 통신을 위한 것이며, 서버 내부에서만 사용되는 표준 Python 로깅과는 구별됩니다. ↔️
- FastMCP는 서버 내부 로깅을 위한 자체 유틸리티(
fastmcp.utilities.logging.get_logger)를 제공하여 내부 로그 관리를 돕습니다. 🐍