search_arxiv
Search academic papers from arXiv preprint server using queries, filters by category, author, year, and sorts results by relevance or date.
Instructions
Search academic papers specifically from arXiv preprint server
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string | |
| maxResults | No | Maximum number of results to return | |
| category | No | arXiv category filter (e.g., cs.AI, physics.gen-ph) | |
| author | No | Author name filter | |
| year | No | Year filter (e.g., "2023", "2020-2023") | |
| sortBy | No | Sort results by field | |
| sortOrder | No | Sort order: ascending or descending |
Implementation Reference
- src/mcp/handleToolCall.ts:84-102 (handler)Handler logic for the 'search_arxiv' tool: destructures args, invokes arXiv searcher, formats and returns search results as JSON text response.case 'search_arxiv': { const { query, maxResults, category, author, year, sortBy, sortOrder } = args; const results = await searchers.arxiv.search(query, { maxResults, category, author, year, sortBy, sortOrder }); return jsonTextResponse( `Found ${results.length} arXiv papers.\n\n${JSON.stringify( results.map((paper: Paper) => PaperFactory.toDict(paper)), null, 2 )}` ); }
- src/mcp/schemas.ts:43-53 (schema)Zod input schema (SearchArxivSchema) for validating 'search_arxiv' tool arguments.export const SearchArxivSchema = z .object({ query: z.string().min(1), maxResults: z.number().int().min(1).max(50).optional().default(10), category: z.string().optional(), author: z.string().optional(), year: z.string().optional(), sortBy: SortBySchema.optional(), sortOrder: SortOrderSchema.optional() }) .strip();
- src/mcp/tools.ts:72-99 (registration)Tool registration in TOOLS array, including name, description, and input schema for MCP.name: 'search_arxiv', description: 'Search academic papers specifically from arXiv preprint server', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query string' }, maxResults: { type: 'number', minimum: 1, maximum: 50, description: 'Maximum number of results to return' }, category: { type: 'string', description: 'arXiv category filter (e.g., cs.AI, physics.gen-ph)' }, author: { type: 'string', description: 'Author name filter' }, year: { type: 'string', description: 'Year filter (e.g., "2023", "2020-2023")' }, sortBy: { type: 'string', enum: ['relevance', 'date', 'citations'], description: 'Sort results by field' }, sortOrder: { type: 'string', enum: ['asc', 'desc'], description: 'Sort order: ascending or descending' } }, required: ['query'] }
- src/mcp/schemas.ts:234-235 (schema)Schema parsing logic in parseToolArgs function for 'search_arxiv' tool.case 'search_arxiv': return SearchArxivSchema.parse(args);