search_springer
Search academic papers from Springer Nature database using queries, filters, and open access options to find relevant research publications.
Instructions
Search academic papers from Springer Nature database. Uses Metadata API by default (all content) or OpenAccess API when openAccess=true (full text available). Same API key works for both.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string | |
| maxResults | No | Maximum number of results to return | |
| year | No | Year filter (e.g., "2023", "2020-2023") | |
| author | No | Author name filter | |
| journal | No | Journal name filter | |
| subject | No | Subject area filter | |
| openAccess | No | Search only open access content | |
| type | No | Publication type filter |
Implementation Reference
- src/mcp/handleToolCall.ts:347-370 (handler)Handler logic for the search_springer MCP tool: destructures arguments, checks for SPRINGER_API_KEY, invokes the springer platform searcher, and formats the JSON response with paper details.case 'search_springer': { const { query, maxResults, year, author, journal, subject, openAccess, type } = args; if (!process.env.SPRINGER_API_KEY) { throw new Error('Springer API key not configured. Please set SPRINGER_API_KEY environment variable.'); } const results = await searchers.springer.search(query, { maxResults, year, author, journal, subject, openAccess, type } as any); return jsonTextResponse( `Found ${results.length} Springer papers.\n\n${JSON.stringify( results.map((paper: Paper) => PaperFactory.toDict(paper)), null, 2 )}` ); }
- src/mcp/schemas.ts:159-170 (schema)Zod schema definition for input validation of search_springer tool arguments.export const SearchSpringerSchema = z .object({ query: z.string().min(1), maxResults: z.number().int().min(1).max(100).optional().default(10), year: z.string().optional(), author: z.string().optional(), journal: z.string().optional(), subject: z.string().optional(), openAccess: z.boolean().optional(), type: z.enum(['Journal', 'Book', 'Chapter']).optional() }) .strip();
- src/mcp/tools.ts:390-420 (registration)MCP tool registration entry for search_springer in the TOOLS array, defining name, description, and input schema for the Model Context Protocol.{ name: 'search_springer', description: 'Search academic papers from Springer Nature database. Uses Metadata API by default (all content) or OpenAccess API when openAccess=true (full text available). Same API key works for both.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query string' }, maxResults: { type: 'number', minimum: 1, maximum: 100, description: 'Maximum number of results to return' }, 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' }, subject: { type: 'string', description: 'Subject area filter' }, openAccess: { type: 'boolean', description: 'Search only open access content' }, type: { type: 'string', enum: ['Journal', 'Book', 'Chapter'], description: 'Publication type filter' } }, required: ['query'] } },