list_papers
Retrieve available research papers from arXiv to access scientific literature for academic exploration and analysis.
Instructions
List all existing papers available as resources
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- Main handler function for the 'list_papers' tool. It lists locally stored papers, fetches metadata from arXiv API, and returns a JSON-formatted list with titles, summaries, authors, links, and PDF URLs.async def handle_list_papers( arguments: Optional[Dict[str, Any]] = None, ) -> List[types.TextContent]: """Handle requests to list all stored papers.""" try: papers = list_papers() client = arxiv.Client() results = client.results(arxiv.Search(id_list=papers)) response_data = { "total_papers": len(papers), "papers": [ { "title": result.title, "summary": result.summary, "authors": [author.name for author in result.authors], "links": [link.href for link in result.links], "pdf_url": result.pdf_url, } for result in results ], } return [ types.TextContent(type="text", text=json.dumps(response_data, indent=2)) ] except Exception as e: return [types.TextContent(type="text", text=f"Error: {str(e)}")]
- Schema definition for the 'list_papers' tool, specifying name, description, and an empty input schema (no parameters required).list_tool = types.Tool( name="list_papers", description="List all existing papers available as resources", inputSchema={ "type": "object", "properties": {}, "required": [], }, )
- src/arxiv_mcp_server/server.py:41-45 (registration)Registration of the 'list_papers' tool (as 'list_tool') in the server's list_tools method, making it discoverable via MCP protocol.@server.list_tools() async def list_tools() -> List[types.Tool]: """List available arXiv research tools.""" return [search_tool, download_tool, list_tool, read_tool]
- src/arxiv_mcp_server/server.py:56-57 (registration)Dispatch/registration logic in the call_tool handler that routes 'list_papers' calls to the specific handle_list_papers function.elif name == "list_papers": return await handle_list_papers(arguments)
- Helper function that scans the storage directory for downloaded paper Markdown files and returns their IDs (filenames without extension).def list_papers() -> list[str]: """List all stored paper IDs.""" return [p.stem for p in Path(settings.STORAGE_PATH).glob("*.md")]