search_scopus
Search academic literature in the Scopus database to find relevant articles, papers, and citations using filters like author, year, journal, and subject area.
Instructions
Search the Scopus abstract and citation database (requires Elsevier API key)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string | |
| maxResults | No | Maximum number of results (max 25 per request) | |
| year | No | Year filter (e.g., "2023", "2020-2023") | |
| author | No | Author name filter | |
| journal | No | Journal name filter | |
| affiliation | No | Institution/affiliation filter | |
| subject | No | Subject area filter | |
| openAccess | No | Filter for open access articles only | |
| documentType | No | Document type: ar=article, cp=conference paper, re=review, bk=book, ch=chapter |
Implementation Reference
- src/mcp/handleToolCall.ts:382-406 (handler)Handler implementation for the 'search_scopus' tool. Parses arguments, checks for required Elsevier API key, performs search via the scopus searcher, and returns formatted JSON response with paper details.case 'search_scopus': { const { query, maxResults, year, author, journal, affiliation, subject, openAccess, documentType } = args; if (!process.env.ELSEVIER_API_KEY) { throw new Error('Elsevier API key not configured. Please set ELSEVIER_API_KEY environment variable.'); } const results = await searchers.scopus.search(query, { maxResults, year, author, journal, affiliation, subject, openAccess, documentType } as any); return jsonTextResponse( `Found ${results.length} Scopus papers.\n\n${JSON.stringify( results.map((paper: Paper) => PaperFactory.toDict(paper)), null, 2 )}` ); }
- src/mcp/schemas.ts:178-190 (schema)Zod schema definition for validating input arguments to the 'search_scopus' tool.export const SearchScopusSchema = z .object({ query: z.string().min(1), maxResults: z.number().int().min(1).max(25).optional().default(10), year: z.string().optional(), author: z.string().optional(), journal: z.string().optional(), affiliation: z.string().optional(), subject: z.string().optional(), openAccess: z.boolean().optional(), documentType: z.enum(['ar', 'cp', 're', 'bk', 'ch']).optional() }) .strip();
- src/mcp/tools.ts:433-463 (registration)MCP tool registration for 'search_scopus', including name, description, and input schema matching the Zod schema.{ name: 'search_scopus', description: 'Search the Scopus abstract and citation database (requires Elsevier API key)', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query string' }, maxResults: { type: 'number', minimum: 1, maximum: 25, description: 'Maximum number of results (max 25 per request)' }, year: { type: 'string', description: 'Year filter (e.g., "2023", "2020-2023")' }, author: { type: 'string', description: 'Author name filter' }, journal: { type: 'string', description: 'Journal name filter' }, affiliation: { type: 'string', description: 'Institution/affiliation filter' }, subject: { type: 'string', description: 'Subject area filter' }, openAccess: { type: 'boolean', description: 'Filter for open access articles only' }, documentType: { type: 'string', enum: ['ar', 'cp', 're', 'bk', 'ch'], description: 'Document type: ar=article, cp=conference paper, re=review, bk=book, ch=chapter' } }, required: ['query'] } },
- src/mcp/schemas.ts:266-267 (schema)Schema parsing logic for 'search_scopus' tool arguments within the parseToolArgs function.case 'search_scopus': return SearchScopusSchema.parse(args);