get_weekly_news
Retrieve weekly news summaries from GeekNews by specifying a weekly ID or fetching the most recent update, returning detailed information in a structured format.
Instructions
GeekNews에서 주간 뉴스를 가져오는 도구
Args:
weekly_id: 주간 뉴스 ID (빈 문자열인 경우 가장 최근 주간 뉴스를 가져옴)
Returns:
Dict[str, Any]: 주간 뉴스 정보
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| weekly_id | No |
Implementation Reference
- src/server.py:87-103 (registration)Registers the 'get_weekly_news' tool using the @self.mcp.tool() decorator inside the setup method.def _setup_get_weekly_news_tool(self) -> None: """ get_weekly_news 도구를 설정합니다. """ @self.mcp.tool() def get_weekly_news(weekly_id: str = "") -> Dict[str, Any]: """ GeekNews에서 주간 뉴스를 가져오는 도구 Args: weekly_id: 주간 뉴스 ID (빈 문자열인 경우 가장 최근 주간 뉴스를 가져옴) Returns: Dict[str, Any]: 주간 뉴스 정보 """ return self._get_weekly_news(weekly_id)
- src/server.py:105-137 (handler)Core handler logic for fetching weekly news: checks cache via cache_manager, refreshes via scheduler if needed, handles errors.def _get_weekly_news(self, weekly_id: str = "") -> Dict[str, Any]: """ GeekNews에서 주간 뉴스를 가져옵니다. Args: weekly_id: 주간 뉴스 ID (빈 문자열인 경우 가장 최근 주간 뉴스를 가져옴) Returns: Dict[str, Any]: 주간 뉴스 정보 """ cache_id = weekly_id if weekly_id else "latest" try: # 캐시에서 데이터 로드 시도 is_valid, cached_data = self.cache_manager.get_weekly_news_cache(cache_id) if is_valid and cached_data: logger.info(f"주간 뉴스 캐시 사용 (ID: {cache_id})") return cached_data # 캐시가 없거나 유효하지 않은 경우 데이터 갱신 logger.info(f"주간 뉴스 데이터 갱신 (ID: {cache_id})") return self.scheduler.refresh_weekly_news(weekly_id) except Exception as e: logger.error(f"주간 뉴스 가져오기 실패: {e}", exc_info=True) return { "title": "GeekNews Weekly", "number": 0, "id": weekly_id if weekly_id else "", "content": "주간 뉴스를 가져오는 중 오류가 발생했습니다.", "url": f"{self.client.base_url}/weekly" + (f"/{weekly_id}" if weekly_id else ""), "items": [] }
- src/cache.py:187-198 (helper)Cache manager helper to load weekly news cache data.def get_weekly_news_cache(self, weekly_id: str = "latest") -> Tuple[bool, Dict[str, Any]]: """ 주간 뉴스 캐시를 로드합니다. Args: weekly_id: 주간 뉴스 ID (빈 문자열인 경우 "latest" 사용) Returns: Tuple[bool, Dict[str, Any]]: (캐시 유효 여부, 주간 뉴스 정보) """ cache_key = f"weekly_{weekly_id if weekly_id else 'latest'}" return self.load_cache(cache_key)
- src/server.py:92-101 (schema)Type hints and docstring defining input (weekly_id: str = "") and output (Dict[str, Any]) schema for the tool.def get_weekly_news(weekly_id: str = "") -> Dict[str, Any]: """ GeekNews에서 주간 뉴스를 가져오는 도구 Args: weekly_id: 주간 뉴스 ID (빈 문자열인 경우 가장 최근 주간 뉴스를 가져옴) Returns: Dict[str, Any]: 주간 뉴스 정보 """