@futurelab-studio/latest-science-mcp
Version:
MCP Server for Scientific Paper Harvesting from arXiv and OpenAlex
41 lines • 1.6 kB
JavaScript
import { z } from 'zod';
import { OpenAlexDriver } from '../drivers/openalex-driver.js';
import { logInfo, logError } from '../core/logger.js';
import { DEFAULT_PAPER_COUNT, MAX_PAPER_COUNT } from '../config/constants.js';
// Zod schema for input validation
export const fetchTopCitedSchema = z.object({
concept: z.string().min(1),
since: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, 'Date must be in YYYY-MM-DD format'),
count: z.number().min(1).max(MAX_PAPER_COUNT).default(DEFAULT_PAPER_COUNT)
});
/**
* MCP tool: fetch_top_cited
* Fetches the top cited papers from OpenAlex for a given concept since a specific date
* Note: This tool is OpenAlex-specific as arXiv doesn't provide citation data
*/
export async function fetchTopCited(input, rateLimiter) {
try {
logInfo('fetch_top_cited tool called', {
concept: input.concept,
since: input.since,
count: input.count
});
const driver = new OpenAlexDriver(rateLimiter);
const papers = await driver.fetchTopCited(input.concept, input.since, input.count);
logInfo('fetch_top_cited completed successfully', {
concept: input.concept,
since: input.since,
papersReturned: papers.length
});
return { content: papers };
}
catch (error) {
logError('fetch_top_cited tool failed', {
error: error instanceof Error ? error.message : error,
concept: input.concept,
since: input.since
});
throw error;
}
}
//# sourceMappingURL=fetch-top-cited.js.map