search_by_journal
Search PubMed articles from a specific journal by name, date range, and result limit to find relevant research publications.
Instructions
Search articles from a specific journal
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| journal_name | Yes | Journal name or abbreviation | |
| max_results | No | Maximum number of results | |
| date_from | No | Start date (YYYY/MM/DD) | |
| date_to | No | End date (YYYY/MM/DD) |
Implementation Reference
- src/tool_handler.py:380-422 (handler)The main handler function that executes the search_by_journal tool logic. It extracts parameters, calls the PubMed client to search by journal, formats the results using _format_article_summary, and returns an MCPResponse.async def _handle_search_by_journal(self, arguments: Dict[str, Any]) -> MCPResponse: """Handle journal-based search.""" try: journal_name = arguments.get("journal_name", "") if not journal_name: return MCPResponse( content=[{"type": "text", "text": "Journal name is required"}], is_error=True ) max_results = arguments.get("max_results", 20) date_from = arguments.get("date_from") date_to = arguments.get("date_to") search_result = await self.pubmed_client.search_articles( query=f'"{journal_name}"[Journal]', max_results=max_results, date_from=date_from, date_to=date_to, cache=self.cache, ) content = [] content.append( { "type": "text", "text": f"**Recent Articles from {journal_name}**\n\n" f"Total Results: {search_result.total_results:,}\n" f"Showing: {search_result.returned_results}\n", } ) for i, article_data in enumerate(search_result.articles, 1): article_text = self._format_article_summary(article_data, i) content.append({"type": "text", "text": article_text}) return MCPResponse(content=content) except Exception as e: logger.error(f"Error in search_by_journal: {e}") return MCPResponse( content=[{"type": "text", "text": f"Error: {str(e)}"}], is_error=True )
- src/tools.py:205-224 (schema)The JSON schema definition for the search_by_journal tool, including input parameters and validation rules.{ "name": "search_by_journal", "description": "Search articles from a specific journal", "inputSchema": { "type": "object", "properties": { "journal_name": {"type": "string", "description": "Journal name or abbreviation"}, "max_results": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20, "description": "Maximum number of results", }, "date_from": {"type": "string", "description": "Start date (YYYY/MM/DD)"}, "date_to": {"type": "string", "description": "End date (YYYY/MM/DD)"}, }, "required": ["journal_name"], }, },
- src/tool_handler.py:65-78 (registration)The handler_map dictionary that registers the _handle_search_by_journal function for the 'search_by_journal' tool name in the handle_tool_call method.handler_map = { "search_pubmed": self._handle_search_pubmed, "get_article_details": self._handle_get_article_details, "search_by_author": self._handle_search_by_author, "find_related_articles": self._handle_find_related_articles, "export_citations": self._handle_export_citations, "search_mesh_terms": self._handle_search_mesh_terms, "search_by_journal": self._handle_search_by_journal, "get_trending_topics": self._handle_get_trending_topics, "analyze_research_trends": self._handle_analyze_research_trends, "compare_articles": self._handle_compare_articles, "get_journal_metrics": self._handle_get_journal_metrics, "advanced_search": self._handle_advanced_search, }