@cyanheads/pubmed-mcp-server
Version:
Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms via MCP. STDIO or Streamable HTTP.
108 lines • 5.36 kB
TypeScript
/**
* @fileoverview PubMed fetch tool. Fetches full article metadata by PubMed IDs,
* including abstracts, authors, journal info, and MeSH terms.
* @module src/mcp-server/tools/definitions/fetch-articles.tool
*/
import { z } from '@cyanheads/mcp-ts-core';
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
export declare const fetchArticlesTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
pmids: z.ZodArray<z.ZodString>;
includeMesh: z.ZodDefault<z.ZodBoolean>;
includeGrants: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>, z.ZodObject<{
articles: z.ZodArray<z.ZodObject<{
pmid: z.ZodOptional<z.ZodString>;
title: z.ZodOptional<z.ZodString>;
abstractText: z.ZodOptional<z.ZodString>;
affiliations: z.ZodOptional<z.ZodArray<z.ZodString>>;
authors: z.ZodOptional<z.ZodArray<z.ZodObject<{
lastName: z.ZodOptional<z.ZodString>;
firstName: z.ZodOptional<z.ZodString>;
initials: z.ZodOptional<z.ZodString>;
collectiveName: z.ZodOptional<z.ZodString>;
affiliationIndices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
orcid: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>>;
journalInfo: z.ZodOptional<z.ZodObject<{
title: z.ZodOptional<z.ZodString>;
isoAbbreviation: z.ZodOptional<z.ZodString>;
issn: z.ZodOptional<z.ZodString>;
eIssn: z.ZodOptional<z.ZodString>;
volume: z.ZodOptional<z.ZodString>;
issue: z.ZodOptional<z.ZodString>;
pages: z.ZodOptional<z.ZodString>;
publicationDate: z.ZodOptional<z.ZodObject<{
year: z.ZodOptional<z.ZodString>;
month: z.ZodOptional<z.ZodString>;
day: z.ZodOptional<z.ZodString>;
medlineDate: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>;
}, z.core.$strip>>;
doi: z.ZodOptional<z.ZodString>;
pmcId: z.ZodOptional<z.ZodString>;
pubmedUrl: z.ZodOptional<z.ZodString>;
pmcUrl: z.ZodOptional<z.ZodString>;
publicationTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
meshTerms: z.ZodOptional<z.ZodArray<z.ZodObject<{
descriptorName: z.ZodOptional<z.ZodString>;
descriptorUi: z.ZodOptional<z.ZodString>;
isMajorTopic: z.ZodBoolean;
qualifiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
qualifierName: z.ZodString;
qualifierUi: z.ZodOptional<z.ZodString>;
isMajorTopic: z.ZodBoolean;
}, z.core.$strip>>>;
}, z.core.$strip>>>;
grantList: z.ZodOptional<z.ZodArray<z.ZodObject<{
grantId: z.ZodOptional<z.ZodString>;
acronym: z.ZodOptional<z.ZodString>;
agency: z.ZodOptional<z.ZodString>;
country: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>>;
articleDates: z.ZodOptional<z.ZodArray<z.ZodObject<{
dateType: z.ZodOptional<z.ZodString>;
year: z.ZodOptional<z.ZodString>;
month: z.ZodOptional<z.ZodString>;
day: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>>;
}, z.core.$strip>>;
totalReturned: z.ZodNumber;
unavailablePmids: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>, readonly [{
readonly reason: "queue_full";
readonly code: JsonRpcErrorCode.RateLimited;
readonly when: "Local NCBI request queue is at capacity.";
readonly recovery: "Retry after 1-2 seconds; the request queue hit the NCBI rate limit.";
readonly retryable: true;
}, {
readonly reason: "ncbi_unreachable";
readonly code: JsonRpcErrorCode.ServiceUnavailable;
readonly when: "NCBI E-utilities is unreachable after all retry attempts.";
readonly recovery: "Retry after a brief delay; NCBI was unreachable across all retry attempts.";
readonly retryable: true;
}, {
readonly reason: "ncbi_deadline_exceeded";
readonly code: JsonRpcErrorCode.Timeout;
readonly when: "Total request deadline expired before NCBI returned a response.";
readonly recovery: "Reduce batch size or retry; NCBI may be under temporary load.";
readonly retryable: true;
}, {
readonly reason: "ncbi_invalid_response";
readonly code: JsonRpcErrorCode.SerializationError;
readonly when: "NCBI returned a body that could not be parsed (invalid XML/JSON).";
readonly recovery: "Retry the request; NCBI returned a malformed response that could not be parsed.";
readonly retryable: true;
}, {
readonly reason: "ncbi_resource_not_found";
readonly code: JsonRpcErrorCode.NotFound;
readonly when: "NCBI returned a structured \"not found\" error for the requested ID(s).";
readonly recovery: "Verify the ID exists in PubMed; the resource was not found in NCBI and retrying will not help.";
readonly retryable: false;
}, {
readonly reason: "invalid_efetch_response";
readonly code: JsonRpcErrorCode.SerializationError;
readonly when: "NCBI EFetch returned a payload missing the PubmedArticleSet wrapper.";
readonly recovery: "Retry once; if it persists, NCBI returned malformed data — try fewer PMIDs at once.";
}]>;
//# sourceMappingURL=fetch-articles.tool.d.ts.map