@cyanheads/pubmed-mcp-server 2.10.15 → 2.10.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +22 -13
- package/changelog/2.10.x/2.10.16.md +26 -0
- package/dist/mcp-server/tools/definitions/_schemas.d.ts +11 -1
- package/dist/mcp-server/tools/definitions/_schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_schemas.js +13 -1
- package/dist/mcp-server/tools/definitions/_schemas.js.map +1 -1
- package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts +3 -0
- package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/convert-ids.tool.js +41 -9
- package/dist/mcp-server/tools/definitions/convert-ids.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js +12 -4
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts +2 -0
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js +35 -12
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts +7 -3
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.js +38 -21
- package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.js +12 -4
- package/dist/mcp-server/tools/definitions/format-citations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts +11 -2
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js +62 -41
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts +3 -3
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js +3 -1
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts +5 -2
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js +19 -10
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts +9 -3
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.js +71 -11
- package/dist/mcp-server/tools/definitions/search-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts +5 -4
- package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/spell-check.tool.js +4 -3
- package/dist/mcp-server/tools/definitions/spell-check.tool.js.map +1 -1
- package/dist/services/error-contracts.d.ts +2 -2
- package/dist/services/error-contracts.d.ts.map +1 -1
- package/dist/services/error-contracts.js +2 -2
- package/dist/services/error-contracts.js.map +1 -1
- package/dist/services/europe-pmc/api-client.d.ts +14 -11
- package/dist/services/europe-pmc/api-client.d.ts.map +1 -1
- package/dist/services/europe-pmc/api-client.js +21 -18
- package/dist/services/europe-pmc/api-client.js.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.d.ts +2 -0
- package/dist/services/europe-pmc/europe-pmc-service.d.ts.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.js +6 -2
- package/dist/services/europe-pmc/europe-pmc-service.js.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
package/AGENTS.md
CHANGED
package/CLAUDE.md
CHANGED
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/pubmed-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/pubmed-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
13
13
|
|
|
14
14
|
</div>
|
|
15
15
|
|
|
@@ -44,9 +44,9 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
44
44
|
| `pubmed_fetch_fulltext` | Fetch full-text articles via a chain: NCBI PMC EFetch → Europe PMC `fullTextXML` → Unpaywall. Accepts PMIDs, PMCIDs, or DOIs. |
|
|
45
45
|
| `pubmed_format_citations` | Generate formatted citations in APA 7th, MLA 9th, BibTeX, RIS, or Vancouver (ICMJE/NLM) |
|
|
46
46
|
| `pubmed_find_related` | Find similar articles, citing articles, or references for a given PMID |
|
|
47
|
-
| `pubmed_spell_check` | Spell-check a
|
|
47
|
+
| `pubmed_spell_check` | Spell-check a PubMed query via NCBI ESpell — every misspelled token corrected in one call; the recovery step after a zero-hit or thin search |
|
|
48
48
|
| `pubmed_lookup_mesh` | Search MeSH by heading — tree numbers, scope notes, entry terms — for building controlled-vocabulary queries |
|
|
49
|
-
| `pubmed_lookup_citation` | Resolve partial bibliographic references to PubMed IDs via ECitMatch |
|
|
49
|
+
| `pubmed_lookup_citation` | Resolve partial bibliographic references — one citation or a batch of up to 25 — to PubMed IDs via ECitMatch |
|
|
50
50
|
| `pubmed_convert_ids` | Convert between DOI, PMID, and PMCID using the PMC ID Converter API |
|
|
51
51
|
|
|
52
52
|
### Resources
|
|
@@ -68,14 +68,17 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
68
68
|
- Full PubMed boolean and field-tag syntax, plus structured filters: author, journal, MeSH terms, language, species, publication type, has-abstract, free-full-text
|
|
69
69
|
- Date ranges by publication, modification, or Entrez date; sort by relevance, date, author, or journal; offset pagination
|
|
70
70
|
- Optional brief summaries for the top N results via ESummary
|
|
71
|
-
- NCBI Bookshelf hits carry `bookTitle`, `publisherName`, `docType`, and `editors` in place of the empty `source`
|
|
72
|
-
-
|
|
71
|
+
- NCBI Bookshelf hits carry `bookTitle`, `publisherName`, `docType`, and `editors` in place of the empty `source`; the rendered summary shows the doc type only for these, not for ordinary journal articles (`citation`)
|
|
72
|
+
- Reports `totalCount`, stated in the header beside the page (`Returned: 3 of 2924`); echoes the original query, the fully applied PubMed query, and normalized filter metadata
|
|
73
|
+
- A query with no search term — blank, markup only, a bare field tag like `[pdat]`, or empty `()` — is rejected as `blank_query` rather than sent upstream
|
|
74
|
+
- `limit` is accepted for `maxResults`
|
|
73
75
|
|
|
74
76
|
---
|
|
75
77
|
|
|
76
78
|
### `pubmed_fetch_articles` <sub>tool</sub>
|
|
77
79
|
|
|
78
|
-
- Up to 200 PMIDs per call (POST for batches of 100 or more)
|
|
80
|
+
- Up to 200 PMIDs per call (POST for batches of 100 or more); `ids` is accepted for `pmids`
|
|
81
|
+
- A zero-padded PMID (`00000001`) resolves as the PMID it spells; `unavailablePmids` lists misses as you sent them
|
|
79
82
|
- Title, abstract, authors with deduplicated affiliations, journal info, DOI, PubMed/PMC links; optional MeSH terms, grants, and publication types
|
|
80
83
|
- Tolerant of PubMed's inconsistent XML — structured abstracts, missing fields, varying date formats
|
|
81
84
|
- Bookshelf chapters and books are first-class: `recordType` (`journal-article` / `book-chapter` / `book`) plus a `book` object (title, publisher, editors, ISBNs, Bookshelf accession); `journalInfo` is absent on them
|
|
@@ -86,7 +89,7 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
86
89
|
|
|
87
90
|
### `pubmed_fetch_fulltext` <sub>tool</sub>
|
|
88
91
|
|
|
89
|
-
- Exactly one of `pmcids`, `pmids`, or `dois` (one id per element), up to 10 per request
|
|
92
|
+
- Exactly one of `pmcids`, `pmids`, or `dois` (one id per element), up to 10 per request; a zero-padded PMID resolves as the PMID it spells, and `unavailable[].id` keeps your spelling
|
|
90
93
|
- Three-tier chain: NCBI PMC EFetch → Europe PMC `fullTextXML` (`EUROPEPMC_ENABLED`, default on) → Unpaywall (needs `UNPAYWALL_EMAIL`); `viaSource` names which tier served each article
|
|
91
94
|
- Preprints, patents, and Agricola records have metadata via `pubmed_europepmc_search` but no full text through this chain — Europe PMC's `fullTextXML` is PMC-keyed
|
|
92
95
|
- `source: "pmc"` returns structured sections plus `tables[]` (cells, caption, label, footnotes) and `assets[]` (figures and supplementary material, with `[Figure: <label>]` markers left in the body); `source: "unpaywall"` returns a best-effort body with `contentFormat` (`html-markdown` / `pdf-text`)
|
|
@@ -98,8 +101,9 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
98
101
|
### `pubmed_europepmc_search` <sub>tool</sub>
|
|
99
102
|
|
|
100
103
|
- Reaches records PubMed can't: preprints (`PPR`), patents (`PAT`), Agricola (`AGR`), alongside `MED` and `PMC`; default `sources` is `["MED", "PMC", "PPR"]`
|
|
101
|
-
- Cursor pagination via `cursorMark` — `*` for the first page, then `nextCursorMark`
|
|
104
|
+
- Cursor pagination via `cursorMark` — `*` for the first page, then `nextCursorMark`; `pageSize` up to 100, with `max_results` and `limit` accepted for it
|
|
102
105
|
- Hits carry `source` plus `pmid` / `pmcId` / `doi` when known; `abstractSnippet` is capped at 400 characters, with `abstractTruncated` flagging the cut
|
|
106
|
+
- `totalCount` reports the full hit count, stated in the header beside the page; `searchUrl` opens the same source-filtered query on europepmc.org
|
|
103
107
|
- Not registered when `EUROPEPMC_ENABLED=false`
|
|
104
108
|
|
|
105
109
|
---
|
|
@@ -117,7 +121,7 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
117
121
|
- APA 7th, MLA 9th, BibTeX, RIS, Vancouver (ICMJE/NLM); several styles per article in one call, up to 50 articles
|
|
118
122
|
- Bookshelf chapters and books cite in each style's edited-book form; articles without a page range cite by electronic locator in each style's convention
|
|
119
123
|
- Hand-rolled formatters — zero dependencies, Workers-compatible
|
|
120
|
-
- Reports formatted counts and unavailable PMIDs
|
|
124
|
+
- Reports formatted counts and unavailable PMIDs; `ids` is accepted for `pmids`, and a zero-padded PMID resolves as the PMID it spells
|
|
121
125
|
|
|
122
126
|
---
|
|
123
127
|
|
|
@@ -125,12 +129,15 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
125
129
|
|
|
126
130
|
- `similar`, `cited_by`, or `references` for a PMID, in NCBI relevance order, enriched with title, authors, date, and source (or Bookshelf book title and publisher)
|
|
127
131
|
- Falls back to Europe PMC, then OpenAlex, when NCBI can't answer; the response names the provider. Fails with a typed `all_providers_failed` error rather than an empty result
|
|
132
|
+
- `maxResults` up to 50 (`limit` also accepted) with offset pagination; `totalCount` reports the full match count, stated in the header beside the page
|
|
133
|
+
- A zero-padded source PMID resolves as the PMID it spells and is never listed among its own related articles
|
|
128
134
|
|
|
129
135
|
---
|
|
130
136
|
|
|
131
137
|
### `pubmed_spell_check` <sub>tool</sub>
|
|
132
138
|
|
|
133
|
-
- Runs a query through NCBI ESpell and returns `original`, `corrected`, and `hasSuggestion`
|
|
139
|
+
- Runs a PubMed query through NCBI ESpell and returns `original`, `corrected`, and `hasSuggestion`; every misspelled token is corrected in one call (`alzhiemer diseese treatmnt outcomse` → `alzheimer disease treatment outcomes`)
|
|
140
|
+
- Reach for it after a zero-hit or thin `pubmed_search_articles` result, or when a drug, gene, disease, or author name may be misspelled, then re-run the search with `corrected`
|
|
134
141
|
- A blank or whitespace-only query is rejected rather than sent upstream
|
|
135
142
|
|
|
136
143
|
---
|
|
@@ -139,13 +146,14 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
139
146
|
|
|
140
147
|
- Looks up MeSH descriptors by name or free-text term, pinning the exact-heading match to the top of the first page
|
|
141
148
|
- Records carry `meshId` (DescriptorUI), `entrezUid`, and, with `includeDetails` (default on), tree numbers, scope notes, and entry terms
|
|
142
|
-
- `maxResults` up to 50 with offset pagination via `nextOffset`; `totalCount` reports the upstream match count
|
|
149
|
+
- `maxResults` up to 50 (`limit` also accepted) with offset pagination via `nextOffset`; `totalCount` reports the upstream match count
|
|
143
150
|
|
|
144
151
|
---
|
|
145
152
|
|
|
146
153
|
### `pubmed_lookup_citation` <sub>tool</sub>
|
|
147
154
|
|
|
148
|
-
- Match on journal, year, volume, first page, and/or author —
|
|
155
|
+
- Match on journal, year, volume, first page, and/or author — journal or year required, more fields for better precision
|
|
156
|
+
- `citations` takes an array of up to 25 or a single citation object; `citation` is accepted for it
|
|
149
157
|
- Pipes and line breaks are rejected at the schema (ECitMatch's wire format is pipe-delimited); the free-form `key` label is exempt
|
|
150
158
|
- Explicit `matched`, `not_found`, and `ambiguous` statuses with recovery detail
|
|
151
159
|
|
|
@@ -155,7 +163,8 @@ The biomedical literature via NCBI's E-utilities, PubMed Central, and Europe PMC
|
|
|
155
163
|
|
|
156
164
|
- Up to 50 DOIs, PMIDs, or PMCIDs per call, all one type; only PMC-indexed articles resolve
|
|
157
165
|
- One id per element — a packed `"23193287,37952131"` is rejected rather than expanded
|
|
158
|
-
-
|
|
166
|
+
- One success/error row per submitted element, in order, with `requestedId` exactly as sent — repeats, a bare-digit PMCID, and a DOI's casing included; a partial batch never fails as a whole
|
|
167
|
+
- A zero-padded PMID resolves as the PMID it spells
|
|
159
168
|
|
|
160
169
|
---
|
|
161
170
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Normalizes a zero-padded PMID to the PMID it spells across every ID-diffing tool, and adds snake_case/synonym parameter aliases (ids, limit, max_results, citation) across the tool surface."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 2.10.16 — 2026-09-22
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`inputAliases` accept snake_case and near-synonym parameter names**, rewritten to the canonical key before the schema parses and never advertised in `tools/list`: `ids` for `pmids` (`pubmed_fetch_articles`, `pubmed_format_citations`), `limit` for `maxResults`/`pageSize` (`pubmed_search_articles`, `pubmed_find_related`, `pubmed_lookup_mesh`, `pubmed_europepmc_search`), `max_results` for `pageSize` (`pubmed_europepmc_search`), and `citation` for `citations` (`pubmed_lookup_citation`). [#156](https://github.com/cyanheads/pubmed-mcp-server/issues/156)
|
|
12
|
+
|
|
13
|
+
## Changed
|
|
14
|
+
|
|
15
|
+
- **`pubmed_search_articles`, `pubmed_find_related`, and `pubmed_europepmc_search` state `totalCount` in the header** (`Returned: 3 of 2924`) instead of the enrichment trailer. It moves from `enrichment` into each tool's `output`, so `structuredContent.totalCount` keeps its value and type. [#147](https://github.com/cyanheads/pubmed-mcp-server/issues/147)
|
|
16
|
+
- **`docType` is rendered only when it marks something other than an ordinary journal article (`citation`)** in `pubmed_search_articles` and `pubmed_find_related` summaries. [#146](https://github.com/cyanheads/pubmed-mcp-server/issues/146)
|
|
17
|
+
- **`pubmed_lookup_citation`'s `citations` accepts a single citation object or an array of up to 25**, with a named error for a value that fits neither shape. [#156](https://github.com/cyanheads/pubmed-mcp-server/issues/156)
|
|
18
|
+
- **`pubmed_europepmc_search`'s query description documents that identifier tokens may be quoted inside its source-filter wrapper**, and that a PubMed-indexed article resolves under `SRC:MED`, not `SRC:PMC`. [#149](https://github.com/cyanheads/pubmed-mcp-server/issues/149)
|
|
19
|
+
- **`pubmed_spell_check`'s description names PubMed and ESpell and states its role as the recovery step after a zero-hit or thin search**, with a worked correction example. [#151](https://github.com/cyanheads/pubmed-mcp-server/issues/151)
|
|
20
|
+
|
|
21
|
+
## Fixed
|
|
22
|
+
|
|
23
|
+
- **A zero-padded PMID (`00000001`) is no longer both returned and reported unavailable in the same response.** NCBI reads it as the PMID it spells; `pubmed_fetch_articles`, `pubmed_fetch_fulltext`, `pubmed_format_citations`, `pubmed_find_related`, and `pubmed_convert_ids` now send and compare the canonical form while reporting the caller's own spelling. [#161](https://github.com/cyanheads/pubmed-mcp-server/issues/161)
|
|
24
|
+
- **`pubmed_convert_ids` gives every submitted element its own record, in submission order, under `requestedId` exactly as sent** — a repeated ID, including one DOI in two casings, gets a record per element instead of one shared record; a bare-digit PMCID is reported as sent rather than as `PMC<digits>`; and an element the converter returns nothing for gets an error row instead of disappearing. [#165](https://github.com/cyanheads/pubmed-mcp-server/issues/165)
|
|
25
|
+
- **`pubmed_search_articles`'s blank-query guard now catches a bare field tag (`[pdat]`) or empty parentheses**, which previously passed the check: `[pdat]` reached NCBI as a zero-hit search pointing at `pubmed_spell_check`, and `()` drew NCBI's blank-term error, misread as a retryable outage. Only brackets holding a PubMed field tag are stripped for the check, so `[18F]` and `benzo[a]pyrene` are still searched as text. [#145](https://github.com/cyanheads/pubmed-mcp-server/issues/145)
|
|
26
|
+
- **`pubmed_europepmc_search`'s `searchUrl` now carries the same source filter the search actually ran**, instead of opening an unfiltered query with a different hit count. The reported `query` falls back to that same source-filtered query when Europe PMC echoes none. [#150](https://github.com/cyanheads/pubmed-mcp-server/issues/150)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Shared Zod schemas reused across tool definitions
|
|
2
|
+
* @fileoverview Shared Zod schemas reused across tool definitions, plus the
|
|
3
|
+
* normalizer for the PMID form {@link pmidStringSchema} accepts.
|
|
3
4
|
* @module src/mcp-server/tools/definitions/_schemas
|
|
4
5
|
*/
|
|
5
6
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -11,6 +12,15 @@ import { z } from '@cyanheads/mcp-ts-core';
|
|
|
11
12
|
* stray prefixes like "PMID:").
|
|
12
13
|
*/
|
|
13
14
|
export declare const pmidStringSchema: z.ZodString;
|
|
15
|
+
/**
|
|
16
|
+
* Canonical form of a PMID {@link pmidStringSchema} accepted: leading zeros
|
|
17
|
+
* stripped, `0` kept for an all-zero input. NCBI reads `00000001` as PMID 1 and
|
|
18
|
+
* answers with `<PMID>1</PMID>`, so a handler sends this form upstream and
|
|
19
|
+
* compares upstream PMIDs against it — the schema itself stays as advertised,
|
|
20
|
+
* since tool schemas carry no transforms. `0` is still no UID, so an all-zero
|
|
21
|
+
* list keeps NCBI's empty-list answer. (#161)
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizePmid(pmid: string): string;
|
|
14
24
|
/**
|
|
15
25
|
* Zod string schema for a single PMC ID. Digits, with the "PMC" prefix optional
|
|
16
26
|
* and case-insensitive — both forms are accepted upstream.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_schemas.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"_schemas.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,aAK1B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,aAK3B,CAAC;AAEJ;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,aAKzB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Shared Zod schemas reused across tool definitions
|
|
2
|
+
* @fileoverview Shared Zod schemas reused across tool definitions, plus the
|
|
3
|
+
* normalizer for the PMID form {@link pmidStringSchema} accepts.
|
|
3
4
|
* @module src/mcp-server/tools/definitions/_schemas
|
|
4
5
|
*/
|
|
5
6
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -13,6 +14,17 @@ import { z } from '@cyanheads/mcp-ts-core';
|
|
|
13
14
|
export const pmidStringSchema = z
|
|
14
15
|
.string()
|
|
15
16
|
.regex(/^\d+$/, 'PMID must be a numeric identifier (e.g. "13054692"). Remove any whitespace, commas, or non-digit characters — provide each PMID separately.');
|
|
17
|
+
/**
|
|
18
|
+
* Canonical form of a PMID {@link pmidStringSchema} accepted: leading zeros
|
|
19
|
+
* stripped, `0` kept for an all-zero input. NCBI reads `00000001` as PMID 1 and
|
|
20
|
+
* answers with `<PMID>1</PMID>`, so a handler sends this form upstream and
|
|
21
|
+
* compares upstream PMIDs against it — the schema itself stays as advertised,
|
|
22
|
+
* since tool schemas carry no transforms. `0` is still no UID, so an all-zero
|
|
23
|
+
* list keeps NCBI's empty-list answer. (#161)
|
|
24
|
+
*/
|
|
25
|
+
export function normalizePmid(pmid) {
|
|
26
|
+
return pmid.replace(/^0+(?=\d)/, '');
|
|
27
|
+
}
|
|
16
28
|
/**
|
|
17
29
|
* Zod string schema for a single PMC ID. Digits, with the "PMC" prefix optional
|
|
18
30
|
* and case-insensitive — both forms are accepted upstream.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_schemas.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"_schemas.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,EAAE;KACR,KAAK,CACJ,OAAO,EACP,6IAA6I,CAC9I,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,KAAK,CACJ,gBAAgB,EAChB,2JAA2J,CAC5J,CAAC;AAEJ;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,KAAK,CACJ,wBAAwB,EACxB,0IAA0I,CAC3I,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Article ID conversion tool. Converts between DOI, PMID, and PMCID
|
|
3
3
|
* using the NCBI PMC ID Converter API for deterministic, batch-friendly resolution.
|
|
4
|
+
* Every submitted element gets its own record, in submission order, with the
|
|
5
|
+
* caller's own spelling as `requestedId`; a zero-padded PMID is converted as the
|
|
6
|
+
* PMID it spells.
|
|
4
7
|
* @module src/mcp-server/tools/definitions/convert-ids.tool
|
|
5
8
|
*/
|
|
6
9
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-ids.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/convert-ids.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"convert-ids.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/convert-ids.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAsDjD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwIzB,CAAC"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Article ID conversion tool. Converts between DOI, PMID, and PMCID
|
|
3
3
|
* using the NCBI PMC ID Converter API for deterministic, batch-friendly resolution.
|
|
4
|
+
* Every submitted element gets its own record, in submission order, with the
|
|
5
|
+
* caller's own spelling as `requestedId`; a zero-padded PMID is converted as the
|
|
6
|
+
* PMID it spells.
|
|
4
7
|
* @module src/mcp-server/tools/definitions/convert-ids.tool
|
|
5
8
|
*/
|
|
6
9
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
7
10
|
import { NCBI_ID_INPUT_ERRORS, NCBI_SERVICE_ERRORS } from '../../../services/error-contracts.js';
|
|
8
11
|
import { getNcbiService } from '../../../services/ncbi/ncbi-service.js';
|
|
9
12
|
import { conceptMeta, EDAM_ACCESSION, EDAM_ID_MAPPING } from './_concepts.js';
|
|
10
|
-
import { doiStringSchema, pmcidStringSchema, pmidStringSchema } from './_schemas.js';
|
|
13
|
+
import { doiStringSchema, normalizePmid, pmcidStringSchema, pmidStringSchema } from './_schemas.js';
|
|
11
14
|
/**
|
|
12
15
|
* NCBI's PMC ID Converter returns this exact wording for any non-PMC ID — even
|
|
13
16
|
* articles that exist in PubMed and have a recoverable DOI. Rewrite to point
|
|
@@ -31,6 +34,24 @@ const ID_ELEMENT_SCHEMAS = {
|
|
|
31
34
|
};
|
|
32
35
|
/** Cap the offending value echoed back so an oversized element can't bloat the error. */
|
|
33
36
|
const MAX_ECHOED_ID_LENGTH = 120;
|
|
37
|
+
/** A submitted element the converter's answer carries no record for. */
|
|
38
|
+
const NO_RECORD_ERRMSG = 'The PMC ID Converter returned no record for this ID. Article may still exist in PubMed — try pubmed_search_articles.';
|
|
39
|
+
/**
|
|
40
|
+
* The form the PMC ID Converter echoes an identifier in, so each element can be
|
|
41
|
+
* matched to its answer: a PMID's canonical digits, a PMCID PMC-prefixed and
|
|
42
|
+
* upper-cased, a DOI lower-cased — DOIs are case-insensitive, and the converter
|
|
43
|
+
* echoes one casing for DOIs that differ only in case.
|
|
44
|
+
*/
|
|
45
|
+
function matchKey(id, idType) {
|
|
46
|
+
switch (idType) {
|
|
47
|
+
case 'pmid':
|
|
48
|
+
return normalizePmid(id);
|
|
49
|
+
case 'pmcid':
|
|
50
|
+
return (/^\d+$/.test(id) ? `PMC${id}` : id).toUpperCase();
|
|
51
|
+
case 'doi':
|
|
52
|
+
return id.toLowerCase();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
34
55
|
export const convertIdsTool = tool('pubmed_convert_ids', {
|
|
35
56
|
description: `Convert between article identifiers (DOI, PMID, PMCID). Accepts up to 50 IDs of a single type per request. Only resolves articles indexed in PubMed Central — for articles not in PMC, use pubmed_search_articles instead.`,
|
|
36
57
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
@@ -84,29 +105,40 @@ export const convertIdsTool = tool('pubmed_convert_ids', {
|
|
|
84
105
|
const shown = id.length > MAX_ECHOED_ID_LENGTH ? `${id.slice(0, MAX_ECHOED_ID_LENGTH)}…` : id;
|
|
85
106
|
throw ctx.fail('malformed_id', `Invalid ${input.idType} element "${shown}". ${parsed.error.issues[0]?.message}`, { ...ctx.recoveryFor('malformed_id') });
|
|
86
107
|
}
|
|
87
|
-
|
|
108
|
+
// The converter parses `0023193287` as PMID 23193287 yet answers "not found
|
|
109
|
+
// in PMC" for it, so a PMID is sent in its canonical form. (#161)
|
|
110
|
+
const ids = input.idType === 'pmid' ? [...new Set(input.ids.map(normalizePmid))] : input.ids;
|
|
111
|
+
const raw = await getNcbiService().idConvert(ids, input.idType, { signal: ctx.signal });
|
|
88
112
|
// NCBI returns pmid as a number in JSON — coerce all ID fields to strings
|
|
89
|
-
const
|
|
90
|
-
|
|
113
|
+
const conversions = new Map();
|
|
114
|
+
for (const r of raw) {
|
|
115
|
+
const requested = String(r['requested-id']);
|
|
91
116
|
let errmsg;
|
|
92
117
|
if (r.errmsg !== undefined) {
|
|
93
118
|
const original = String(r.errmsg);
|
|
94
119
|
if (PMC_NOT_FOUND_RE.test(original)) {
|
|
95
|
-
ctx.log.debug('Rewriting PMC-not-found errmsg', { requestedId, original });
|
|
120
|
+
ctx.log.debug('Rewriting PMC-not-found errmsg', { requestedId: requested, original });
|
|
96
121
|
errmsg = PMC_NOT_FOUND_REWRITE;
|
|
97
122
|
}
|
|
98
123
|
else {
|
|
99
124
|
errmsg = original;
|
|
100
125
|
}
|
|
101
126
|
}
|
|
102
|
-
|
|
103
|
-
requestedId,
|
|
127
|
+
conversions.set(matchKey(requested, input.idType), {
|
|
104
128
|
...(r.pmid !== undefined && { pmid: String(r.pmid) }),
|
|
105
129
|
...(r.pmcid !== undefined && { pmcid: String(r.pmcid) }),
|
|
106
130
|
...(r.doi !== undefined && { doi: String(r.doi) }),
|
|
107
131
|
...(errmsg !== undefined && { errmsg }),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// The converter answers a repeated identifier once and echoes the form it
|
|
135
|
+
// was sent in — PMC-prefixed, upper-cased, or with another element's DOI
|
|
136
|
+
// casing — so each element is matched to its answer by that key and
|
|
137
|
+
// reported under its own spelling. (#165)
|
|
138
|
+
const records = input.ids.map((requestedId) => ({
|
|
139
|
+
requestedId,
|
|
140
|
+
...(conversions.get(matchKey(requestedId, input.idType)) ?? { errmsg: NO_RECORD_ERRMSG }),
|
|
141
|
+
}));
|
|
110
142
|
const totalConverted = records.filter((r) => !r.errmsg).length;
|
|
111
143
|
ctx.log.info('pubmed_convert_ids completed', {
|
|
112
144
|
totalConverted,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-ids.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/convert-ids.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"convert-ids.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/convert-ids.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview PubMed fetch tool. Fetches full article metadata by PubMed IDs,
|
|
3
|
-
* including abstracts, authors, journal info, and MeSH terms.
|
|
3
|
+
* including abstracts, authors, journal info, and MeSH terms. A zero-padded
|
|
4
|
+
* PMID is fetched and matched as the PMID it spells; `ids` is accepted as an
|
|
5
|
+
* alias for `pmids`.
|
|
4
6
|
* @module src/mcp-server/tools/definitions/fetch-articles.tool
|
|
5
7
|
*/
|
|
6
8
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-articles.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/fetch-articles.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fetch-articles.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/fetch-articles.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAwRjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAWhB,yBAAyB;;mBAE3B,sEAAsE;uBAE1E,qFAAqF;;;;EA0R3F,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview PubMed fetch tool. Fetches full article metadata by PubMed IDs,
|
|
3
|
-
* including abstracts, authors, journal info, and MeSH terms.
|
|
3
|
+
* including abstracts, authors, journal info, and MeSH terms. A zero-padded
|
|
4
|
+
* PMID is fetched and matched as the PMID it spells; `ids` is accepted as an
|
|
5
|
+
* alias for `pmids`.
|
|
4
6
|
* @module src/mcp-server/tools/definitions/fetch-articles.tool
|
|
5
7
|
*/
|
|
6
8
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
@@ -10,7 +12,7 @@ import { getNcbiService } from '../../../services/ncbi/ncbi-service.js';
|
|
|
10
12
|
import { parseArticleSet } from '../../../services/ncbi/parsing/article-parser.js';
|
|
11
13
|
import { fitWholeItems } from './_budget.js';
|
|
12
14
|
import { conceptMeta, EDAM_DATA_RETRIEVAL, EDAM_PUBMED_ID, SCHEMA_SCHOLARLY_ARTICLE, } from './_concepts.js';
|
|
13
|
-
import { pmidStringSchema } from './_schemas.js';
|
|
15
|
+
import { normalizePmid, pmidStringSchema } from './_schemas.js';
|
|
14
16
|
import { escapeMarkdownInline } from './_text.js';
|
|
15
17
|
const AuthorSchema = z
|
|
16
18
|
.object({
|
|
@@ -225,6 +227,8 @@ export const fetchArticlesTool = tool('pubmed_fetch_articles', {
|
|
|
225
227
|
recovery: 'Retry once; if it persists, NCBI returned malformed data — try fewer PMIDs at once.',
|
|
226
228
|
},
|
|
227
229
|
],
|
|
230
|
+
// Never advertised; rewritten to the canonical key before the schema parses. (#156)
|
|
231
|
+
inputAliases: { ids: 'pmids' },
|
|
228
232
|
input: z.object({
|
|
229
233
|
pmids: z.array(pmidStringSchema).min(1).max(200).describe('PubMed IDs to fetch'),
|
|
230
234
|
includeMesh: z.boolean().default(true).describe('Include MeSH terms'),
|
|
@@ -263,7 +267,11 @@ export const fetchArticlesTool = tool('pubmed_fetch_articles', {
|
|
|
263
267
|
},
|
|
264
268
|
async handler(input, ctx) {
|
|
265
269
|
ctx.log.info('Executing pubmed_fetch', { pmidCount: input.pmids.length });
|
|
266
|
-
|
|
270
|
+
// NCBI reads `00000001` as PMID 1 and answers with `<PMID>1</PMID>`, so the
|
|
271
|
+
// request and the unavailability diff below both use the canonical form;
|
|
272
|
+
// `unavailablePmids` still reports the caller's own spelling. (#161)
|
|
273
|
+
const requested = [...new Set(input.pmids.map(normalizePmid))];
|
|
274
|
+
const xmlData = await getNcbiService().eFetch({ db: 'pubmed', id: requested.join(','), retmode: 'xml' }, { retmode: 'xml', usePost: requested.length >= 100, signal: ctx.signal });
|
|
267
275
|
if (!xmlData || !('PubmedArticleSet' in xmlData)) {
|
|
268
276
|
throw ctx.fail('invalid_efetch_response', 'Invalid EFetch response from NCBI: missing PubmedArticleSet', { requestedPmids: input.pmids.length, ...ctx.recoveryFor('invalid_efetch_response') });
|
|
269
277
|
}
|
|
@@ -281,7 +289,7 @@ export const fetchArticlesTool = tool('pubmed_fetch_articles', {
|
|
|
281
289
|
}),
|
|
282
290
|
}));
|
|
283
291
|
const returnedPmids = new Set(articles.map((a) => a.pmid).filter(Boolean));
|
|
284
|
-
const unavailable = input.pmids.filter((id) => !returnedPmids.has(id));
|
|
292
|
+
const unavailable = input.pmids.filter((id) => !returnedPmids.has(normalizePmid(id)));
|
|
285
293
|
// Whole-response budget: fill with complete records in response order and
|
|
286
294
|
// hand the remainder back as PMIDs the caller can re-submit. Without
|
|
287
295
|
// `maxResponseCharacters` nothing is measured and the response is exactly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-articles.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/fetch-articles.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch-articles.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/fetch-articles.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* - `pmcids` — fetch directly by PMC ID. Articles not in PMC fall through to
|
|
7
7
|
* EPMC by PMC ID, then to Unpaywall when the DOI is available.
|
|
8
8
|
* - `pmids` — resolve PMID → PMCID via PMC ID Converter, then run the chain.
|
|
9
|
+
* A zero-padded PMID runs as the PMID it spells; `unavailable[]` and
|
|
10
|
+
* `deferred.ids` report it as the caller wrote it.
|
|
9
11
|
* - `dois` — resolve DOI → PMCID via the PMC ID Converter (mirroring `pmids`),
|
|
10
12
|
* then run the chain. DOIs with no PMC counterpart fall through to EPMC
|
|
11
13
|
* search-by-DOI → fullTextXML, then Unpaywall (EPMC-only OA, preprints).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-fulltext.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/fetch-fulltext.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fetch-fulltext.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/fetch-fulltext.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAu0C/D;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,MAAM,CAiCT;AAID,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAm4B5B,CAAC"}
|