get_events_by_category
Retrieve calendar events filtered by specific categories like STUDY, WORK, REST, or ACTIVITY to organize and view related schedules efficiently.
Instructions
카테고리별로 이벤트를 조회합니다.
Args:
category: 카테고리 (STUDY, WORK, REST, ACTIVITY)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes |
Implementation Reference
- src/main.py:223-248 (handler)The primary MCP tool handler for get_events_by_category. Decorated with @mcp.tool() for automatic registration. Fetches all events, filters by category, and maps to response models.@mcp.tool() def get_events_by_category(category: str) -> List[CalendarEventResponse]: """ 카테고리별로 이벤트를 조회합니다. Args: category: 카테고리 (STUDY, WORK, REST, ACTIVITY) """ try: if category not in [cat.value for cat in EventCategory]: raise InvalidEventData("category", category) result = calendar_service.fetch_events(DEFAULT_USER_ID) if result.success and result.data: filtered_events = [ event for event in result.data if event.category == category ] return [calendar_service.to_response(event) for event in filtered_events] return [] except CalendarException: raise except Exception as e: raise Exception(f"카테고리별 이벤트 조회 중 오류가 발생했습니다: {str(e)}")
- src/models/__init__.py:79-96 (schema)Pydantic model defining the output schema for individual events returned by the tool (List[CalendarEventResponse]).class CalendarEventResponse(BaseModel): """캘린더 이벤트 응답""" id: int title: str description: Optional[str] = None location: Optional[str] = None start_time: datetime duration: int category: EventCategory stamina_cost: int status: EventStatus stamina_after_completion: Optional[int] = None created_at: datetime @field_serializer('start_time', 'created_at') def serialize_datetime(self, value: datetime) -> str: return value.isoformat() class ApiResponse(BaseModel):
- src/models/__init__.py:10-15 (schema)Enum defining valid category values used for input validation in the tool handler.class EventCategory(str, Enum): """이벤트 카테고리""" STUDY = "STUDY" # 학습 WORK = "WORK" # 업무 REST = "REST" # 휴식 ACTIVITY = "ACTIVITY" # 활동
- src/main.py:279-280 (registration)MCP server startup which registers and runs all @mcp.tool() decorated functions.if __name__ == "__main__": mcp.run()