UNPKG

@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.

93 lines 3.94 kB
/** * @fileoverview Europe PMC search tool. Surfaces records PubMed-only search * can't reach: preprints (source `PPR`), Agricola (`AGR`), patents (`PAT`), * and EPMC-only OA articles. Uses EPMC's cursor-based pagination * (`cursorMark`) unlike `pubmed_search_articles`'s offset-based paging, * because EPMC's search API doesn't support offset. * * Only registered when `EUROPEPMC_ENABLED=true` (the default). The handler * fails fast with a configuration error if the service is unset, since the * tool wouldn't be registered in that case. * * @module src/mcp-server/tools/definitions/pubmed-europepmc-search.tool */ import { z } from '@cyanheads/mcp-ts-core'; import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors'; export declare const pubmedEuropepmcSearchTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{ query: z.ZodString; pageSize: z.ZodDefault<z.ZodNumber>; cursorMark: z.ZodDefault<z.ZodString>; sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{ MED: "MED"; PMC: "PMC"; PPR: "PPR"; PAT: "PAT"; AGR: "AGR"; }>>>; resultType: z.ZodDefault<z.ZodEnum<{ core: "core"; lite: "lite"; }>>; sort: z.ZodOptional<z.ZodString>; }, z.core.$strip>, z.ZodObject<{ query: z.ZodString; hits: z.ZodArray<z.ZodObject<{ source: z.ZodEnum<{ MED: "MED"; PMC: "PMC"; PPR: "PPR"; PAT: "PAT"; AGR: "AGR"; }>; epmcId: z.ZodString; title: z.ZodOptional<z.ZodString>; authors: z.ZodOptional<z.ZodString>; journal: z.ZodOptional<z.ZodString>; pubYear: z.ZodOptional<z.ZodString>; firstPublicationDate: z.ZodOptional<z.ZodString>; pmid: z.ZodOptional<z.ZodString>; pmcId: z.ZodOptional<z.ZodString>; doi: z.ZodOptional<z.ZodString>; isOpenAccess: z.ZodOptional<z.ZodBoolean>; hasFullTextXml: z.ZodOptional<z.ZodBoolean>; abstractSnippet: z.ZodOptional<z.ZodString>; citedByCount: z.ZodOptional<z.ZodNumber>; epmcUrl: z.ZodString; }, z.core.$strip>>; hitCount: z.ZodNumber; cursorMark: z.ZodString; nextCursorMark: z.ZodOptional<z.ZodString>; appliedSources: z.ZodArray<z.ZodEnum<{ MED: "MED"; PMC: "PMC"; PPR: "PPR"; PAT: "PAT"; AGR: "AGR"; }>>; searchUrl: z.ZodString; notice: z.ZodOptional<z.ZodString>; }, z.core.$strip>, readonly [{ readonly reason: "europepmc_unreachable"; readonly code: JsonRpcErrorCode.ServiceUnavailable; readonly when: "Europe PMC was unreachable after all retry attempts."; readonly recovery: "Retry after a brief delay; Europe PMC was unreachable. NCBI PMC and Unpaywall remain available."; readonly retryable: true; }, { readonly reason: "europepmc_invalid_response"; readonly code: JsonRpcErrorCode.SerializationError; readonly when: "Europe PMC returned a body that could not be parsed (invalid JSON or XML)."; readonly recovery: "Retry the request; Europe PMC returned a malformed response that could not be parsed."; readonly retryable: true; }, { readonly reason: "europepmc_invalid_input"; readonly code: JsonRpcErrorCode.ValidationError; readonly when: "Europe PMC rejected the request input (empty query, unknown sort field, malformed parameter)."; readonly recovery: "Adjust the input — usually the query or sort field — before retrying; the same input will be rejected again."; readonly retryable: false; }, { readonly reason: "europepmc_disabled"; readonly code: JsonRpcErrorCode.ConfigurationError; readonly when: "Europe PMC service is disabled via EUROPEPMC_ENABLED=false."; readonly recovery: "Set EUROPEPMC_ENABLED=true (the default) and restart the server to use this tool."; }]>; //# sourceMappingURL=pubmed-europepmc-search.tool.d.ts.map