@cyanheads/pubmed-mcp-server
Version:
A Model Context Protocol (MCP) server enabling AI agents to intelligently search, retrieve, and analyze biomedical literature from PubMed via NCBI E-utilities. Built on the mcp-ts-template for robust, production-ready performance.
37 lines (36 loc) • 1.42 kB
TypeScript
/**
* @fileoverview Manages a queue for NCBI E-utility requests to ensure compliance with rate limits.
* @module src/services/NCBI/ncbiRequestQueueManager
*/
import { RequestContext } from "../../utils/index.js";
import { NcbiRequestParams } from "./ncbiConstants.js";
/**
* Interface for a queued NCBI request.
*/
export interface QueuedRequest {
resolve: (value: any) => void;
reject: (reason?: any) => void;
task: () => Promise<any>;
context: RequestContext;
endpoint: string;
params: NcbiRequestParams;
}
export declare class NcbiRequestQueueManager {
private requestQueue;
private isProcessingQueue;
private lastRequestTime;
constructor();
/**
* Processes the request queue, ensuring delays between requests to respect NCBI rate limits.
*/
private processQueue;
/**
* Enqueues a task (an NCBI API call) to be processed.
* @param task A function that returns a Promise resolving to the API call result.
* @param context The request context for logging and correlation.
* @param endpoint The NCBI endpoint being called (e.g., "esearch", "efetch").
* @param params The parameters for the NCBI request.
* @returns A Promise that resolves or rejects with the result of the task.
*/
enqueueRequest<T>(task: () => Promise<T>, context: RequestContext, endpoint: string, params: NcbiRequestParams): Promise<T>;
}