@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.
64 lines (63 loc) • 2.68 kB
TypeScript
/**
* @fileoverview Logic for the searchPubMedArticles MCP tool.
* Handles constructing ESearch and ESummary queries, interacting with
* the NcbiService, and formatting the results.
* @module src/mcp-server/tools/searchPubMedArticles/logic
*/
import { z } from "zod";
import { ParsedBriefSummary } from "../../../types-global/pubmedXml.js";
import { RequestContext } from "../../../utils/index.js";
export declare const SearchPubMedArticlesInputSchema: z.ZodObject<{
queryTerm: z.ZodString;
maxResults: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
sortBy: z.ZodDefault<z.ZodOptional<z.ZodEnum<["relevance", "pub_date", "author", "journal_name"]>>>;
dateRange: z.ZodOptional<z.ZodObject<{
minDate: z.ZodOptional<z.ZodString>;
maxDate: z.ZodOptional<z.ZodString>;
dateType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["pdat", "mdat", "edat"]>>>;
}, "strip", z.ZodTypeAny, {
dateType: "pdat" | "mdat" | "edat";
minDate?: string | undefined;
maxDate?: string | undefined;
}, {
minDate?: string | undefined;
maxDate?: string | undefined;
dateType?: "pdat" | "mdat" | "edat" | undefined;
}>>;
filterByPublicationTypes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
fetchBriefSummaries: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, "strip", z.ZodTypeAny, {
queryTerm: string;
maxResults: number;
sortBy: "relevance" | "pub_date" | "author" | "journal_name";
fetchBriefSummaries: number;
dateRange?: {
dateType: "pdat" | "mdat" | "edat";
minDate?: string | undefined;
maxDate?: string | undefined;
} | undefined;
filterByPublicationTypes?: string[] | undefined;
}, {
queryTerm: string;
maxResults?: number | undefined;
sortBy?: "relevance" | "pub_date" | "author" | "journal_name" | undefined;
dateRange?: {
minDate?: string | undefined;
maxDate?: string | undefined;
dateType?: "pdat" | "mdat" | "edat" | undefined;
} | undefined;
filterByPublicationTypes?: string[] | undefined;
fetchBriefSummaries?: number | undefined;
}>;
export type SearchPubMedArticlesInput = z.infer<typeof SearchPubMedArticlesInputSchema>;
export type SearchPubMedArticlesOutput = {
searchParameters: SearchPubMedArticlesInput;
effectiveESearchTerm: string;
totalFound: number;
retrievedPmidCount: number;
pmids: string[];
briefSummaries: ParsedBriefSummary[];
eSearchUrl: string;
eSummaryUrl?: string;
};
export declare function searchPubMedArticlesLogic(input: SearchPubMedArticlesInput, parentRequestContext: RequestContext): Promise<SearchPubMedArticlesOutput>;