@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
TypeScript
/**
* @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