@cyanheads/pubmed-mcp-server 2.10.9 → 2.10.11
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 +13 -5
- package/dist/mcp-server/tools/definitions/_schemas.d.ts +16 -0
- package/dist/mcp-server/tools/definitions/_schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_schemas.js +20 -0
- package/dist/mcp-server/tools/definitions/_schemas.js.map +1 -1
- package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts +6 -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 +28 -3
- package/dist/mcp-server/tools/definitions/convert-ids.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts +27 -0
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js +166 -24
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts +18 -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 +307 -68
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts +12 -0
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.js +171 -27
- package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -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 +11 -13
- package/dist/mcp-server/tools/definitions/format-citations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js +42 -8
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts +6 -0
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js +14 -3
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts +10 -0
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.js +52 -5
- package/dist/mcp-server/tools/definitions/search-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts +6 -0
- package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/spell-check.tool.js +15 -3
- package/dist/mcp-server/tools/definitions/spell-check.tool.js.map +1 -1
- package/dist/services/error-contracts.d.ts +39 -2
- package/dist/services/error-contracts.d.ts.map +1 -1
- package/dist/services/error-contracts.js +43 -2
- package/dist/services/error-contracts.js.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.d.ts +0 -29
- package/dist/services/ncbi/formatting/citation-formatter.d.ts.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.js +381 -30
- package/dist/services/ncbi/formatting/citation-formatter.js.map +1 -1
- package/dist/services/ncbi/ncbi-service.d.ts +3 -2
- package/dist/services/ncbi/ncbi-service.d.ts.map +1 -1
- package/dist/services/ncbi/ncbi-service.js +22 -10
- package/dist/services/ncbi/ncbi-service.js.map +1 -1
- package/dist/services/ncbi/parsing/article-parser.d.ts +45 -2
- package/dist/services/ncbi/parsing/article-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/article-parser.js +208 -1
- package/dist/services/ncbi/parsing/article-parser.js.map +1 -1
- package/dist/services/ncbi/parsing/esummary-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/esummary-parser.js +32 -1
- package/dist/services/ncbi/parsing/esummary-parser.js.map +1 -1
- package/dist/services/ncbi/parsing/pmc-article-parser.d.ts +24 -4
- package/dist/services/ncbi/parsing/pmc-article-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/pmc-article-parser.js +505 -57
- package/dist/services/ncbi/parsing/pmc-article-parser.js.map +1 -1
- package/dist/services/ncbi/response-handler.d.ts.map +1 -1
- package/dist/services/ncbi/response-handler.js +42 -1
- package/dist/services/ncbi/response-handler.js.map +1 -1
- package/dist/services/ncbi/types.d.ts +215 -2
- package/dist/services/ncbi/types.d.ts.map +1 -1
- package/dist/services/openalex/api-client.d.ts +13 -4
- package/dist/services/openalex/api-client.d.ts.map +1 -1
- package/dist/services/openalex/api-client.js +19 -8
- package/dist/services/openalex/api-client.js.map +1 -1
- package/dist/services/openalex/openalex-service.d.ts +34 -17
- package/dist/services/openalex/openalex-service.d.ts.map +1 -1
- package/dist/services/openalex/openalex-service.js +119 -35
- package/dist/services/openalex/openalex-service.js.map +1 -1
- package/dist/services/openalex/types.d.ts +34 -1
- package/dist/services/openalex/types.d.ts.map +1 -1
- package/dist/services/openalex/types.js +20 -0
- package/dist/services/openalex/types.js.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -14,6 +14,7 @@ import { getNcbiService } from '../../../services/ncbi/ncbi-service.js';
|
|
|
14
14
|
import { extractBriefSummaries } from '../../../services/ncbi/parsing/esummary-parser.js';
|
|
15
15
|
import { ensureArray } from '../../../services/ncbi/parsing/xml-helpers.js';
|
|
16
16
|
import { getOpenAlexServiceOptional } from '../../../services/openalex/openalex-service.js';
|
|
17
|
+
import { OPENALEX_MAX_UPSTREAM_REQUESTS, } from '../../../services/openalex/types.js';
|
|
17
18
|
import { conceptMeta, EDAM_DATA_RETRIEVAL, SCHEMA_SCHOLARLY_ARTICLE } from './_concepts.js';
|
|
18
19
|
import { pmidStringSchema } from './_schemas.js';
|
|
19
20
|
import { escapeMarkdownInline } from './_text.js';
|
|
@@ -34,6 +35,11 @@ const PROVIDER_LABELS = {
|
|
|
34
35
|
const PROVIDER_DISABLED = 'provider_disabled';
|
|
35
36
|
/** A provider failure that carried no declared service-contract reason. */
|
|
36
37
|
const UNCLASSIFIED_ERROR = 'unclassified_error';
|
|
38
|
+
/** Declared retryability per reason the two coverage fallbacks can throw. */
|
|
39
|
+
const RETRYABLE_BY_REASON = new Map([...EUROPEPMC_SERVICE_ERRORS, ...OPENALEX_SERVICE_ERRORS].map((entry) => [
|
|
40
|
+
entry.reason,
|
|
41
|
+
entry.retryable,
|
|
42
|
+
]));
|
|
37
43
|
// ─── NCBI provider ────────────────────────────────────────────────────────────
|
|
38
44
|
async function ncbiProvider(pmid, relationship, signal) {
|
|
39
45
|
const ncbi = getNcbiService();
|
|
@@ -143,7 +149,59 @@ async function openAlexProvider(pmid, relationship, maxNeeded, signal) {
|
|
|
143
149
|
result = await oa.references(pmid, maxNeeded, signal);
|
|
144
150
|
break;
|
|
145
151
|
}
|
|
146
|
-
return {
|
|
152
|
+
return {
|
|
153
|
+
allPmids: result.pmids,
|
|
154
|
+
totalCount: result.totalCount,
|
|
155
|
+
source: 'openalex',
|
|
156
|
+
droppedNoPmid: result.droppedNoPmid,
|
|
157
|
+
reachCapped: result.reachCapped,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Record a coverage-fallback failure with its declared reason. A provider off by
|
|
162
|
+
* configuration never recovers on retry; an unclassified transport failure is
|
|
163
|
+
* treated as transient, matching how the fully-failed chain reports one.
|
|
164
|
+
*/
|
|
165
|
+
function coverageFailureFrom(provider, err) {
|
|
166
|
+
const { reason } = attemptFrom(provider, err);
|
|
167
|
+
const retryable = reason === PROVIDER_DISABLED ? false : (RETRYABLE_BY_REASON.get(reason) ?? true);
|
|
168
|
+
return { provider, reason, retryable };
|
|
169
|
+
}
|
|
170
|
+
/** "A", "A or B", "A, B, or C" — the providers a notice may claim answered. */
|
|
171
|
+
function joinWithOr(labels) {
|
|
172
|
+
if (labels.length <= 1)
|
|
173
|
+
return labels[0] ?? '';
|
|
174
|
+
if (labels.length === 2)
|
|
175
|
+
return `${labels[0]} or ${labels[1]}`;
|
|
176
|
+
return `${labels.slice(0, -1).join(', ')}, or ${labels[labels.length - 1]}`;
|
|
177
|
+
}
|
|
178
|
+
/** One provider outcome per entry: `Europe PMC (provider_disabled), OpenAlex (openalex_unreachable)`. */
|
|
179
|
+
function summarizeOutcomes(entries) {
|
|
180
|
+
return entries.map((e) => `${PROVIDER_LABELS[e.provider]} (${e.reason})`).join(', ');
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Trailing clause naming the providers configuration turned off, which no retry
|
|
184
|
+
* brings back. Empty when every entry is a transient failure.
|
|
185
|
+
*/
|
|
186
|
+
function disabledClause(entries) {
|
|
187
|
+
const disabled = entries
|
|
188
|
+
.filter((e) => e.reason === PROVIDER_DISABLED)
|
|
189
|
+
.map((e) => PROVIDER_LABELS[e.provider]);
|
|
190
|
+
if (disabled.length === 0)
|
|
191
|
+
return '';
|
|
192
|
+
return ` ${disabled.join(' and ')} ${disabled.length > 1 ? 'are' : 'is'} turned off by server configuration and will not recover on retry.`;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Disclosure for a `references` answer whose coverage check came back short.
|
|
196
|
+
* Names each provider that failed and its reason, separates a
|
|
197
|
+
* configuration-disabled provider from the transient failures worth retrying,
|
|
198
|
+
* and never describes a failed provider as having answered.
|
|
199
|
+
*/
|
|
200
|
+
function coverageIncompleteNotice(failures) {
|
|
201
|
+
const retryClause = failures.some((f) => f.retryable)
|
|
202
|
+
? ' Retry after a brief delay to complete the coverage check.'
|
|
203
|
+
: '';
|
|
204
|
+
return `Reference coverage could not be fully checked — ${summarizeOutcomes(failures)} did not answer.${retryClause}${disabledClause(failures)}`;
|
|
147
205
|
}
|
|
148
206
|
/** Compact, log-safe description of an unknown thrown value. */
|
|
149
207
|
function describeError(err) {
|
|
@@ -167,14 +225,7 @@ function attemptFrom(provider, err) {
|
|
|
167
225
|
* the transient failures worth retrying.
|
|
168
226
|
*/
|
|
169
227
|
function allProvidersFailedHint(attempts) {
|
|
170
|
-
|
|
171
|
-
const disabled = attempts
|
|
172
|
-
.filter((a) => a.reason === PROVIDER_DISABLED)
|
|
173
|
-
.map((a) => PROVIDER_LABELS[a.provider]);
|
|
174
|
-
const disabledClause = disabled.length
|
|
175
|
-
? ` ${disabled.join(' and ')} ${disabled.length > 1 ? 'are' : 'is'} turned off by server configuration and will not recover on retry.`
|
|
176
|
-
: '';
|
|
177
|
-
return `Providers attempted: ${summary}. Retry the transient failures after a brief delay.${disabledClause}`;
|
|
228
|
+
return `Providers attempted: ${summarizeOutcomes(attempts)}. Retry the transient failures after a brief delay.${disabledClause(attempts)}`;
|
|
178
229
|
}
|
|
179
230
|
// ─── Tool Definition ─────────────────────────────────────────────────────────
|
|
180
231
|
export const findRelatedTool = tool('pubmed_find_related', {
|
|
@@ -217,8 +268,30 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
217
268
|
.object({
|
|
218
269
|
pmid: z.string().describe('PubMed ID'),
|
|
219
270
|
title: z.string().optional().describe('Article title'),
|
|
220
|
-
authors: z
|
|
221
|
-
|
|
271
|
+
authors: z
|
|
272
|
+
.string()
|
|
273
|
+
.optional()
|
|
274
|
+
.describe("Author string — the first three of the record's own authors, then \"et al.\". On an NCBI Bookshelf chapter these are the chapter's authors; the book's editors are in `editors`."),
|
|
275
|
+
source: z
|
|
276
|
+
.string()
|
|
277
|
+
.optional()
|
|
278
|
+
.describe('Journal the article appeared in. Absent on an NCBI Bookshelf record, which has no journal — its venue is in `bookTitle` and `publisherName` instead, and `docType` says which kind of record it is.'),
|
|
279
|
+
bookTitle: z
|
|
280
|
+
.string()
|
|
281
|
+
.optional()
|
|
282
|
+
.describe('Title of the book an NCBI Bookshelf record belongs to. Present instead of `source` on a book record; absent on a journal article.'),
|
|
283
|
+
publisherName: z
|
|
284
|
+
.string()
|
|
285
|
+
.optional()
|
|
286
|
+
.describe('Publisher of the book an NCBI Bookshelf record belongs to. Present only on a book record; absent on a journal article.'),
|
|
287
|
+
docType: z
|
|
288
|
+
.string()
|
|
289
|
+
.optional()
|
|
290
|
+
.describe('What PubMed classifies this record as: "chapter" or "book" for an NCBI Bookshelf record, "citation" for an ordinary journal article. Absent when PubMed supplies none.'),
|
|
291
|
+
editors: z
|
|
292
|
+
.array(z.string().describe('One editor, "Surname Initials" as ESummary renders it'))
|
|
293
|
+
.optional()
|
|
294
|
+
.describe("Editors of the containing book, kept out of `authors` so they cannot displace the record's own authors. Absent on a journal article and on a book that credits no editors."),
|
|
222
295
|
pubDate: z.string().optional().describe('Publication date'),
|
|
223
296
|
})
|
|
224
297
|
.describe('Related article with enriched summary'))
|
|
@@ -230,18 +303,35 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
230
303
|
enrichment: {
|
|
231
304
|
totalCount: z
|
|
232
305
|
.number()
|
|
233
|
-
.describe('Total related articles found before windowing. A Europe PMC total may shrink to the PubMed-addressable count once a request window covers the whole upstream set, since rows without a PubMed PMID cannot be returned.'),
|
|
306
|
+
.describe('Total related articles found before windowing. A Europe PMC or OpenAlex total may shrink to the PubMed-addressable count once a request window covers the whole upstream set, since rows without a PubMed PMID cannot be returned.'),
|
|
234
307
|
source: z
|
|
235
308
|
.enum(['ncbi', 'europepmc', 'openalex'])
|
|
236
309
|
.describe('Provider that answered this request'),
|
|
237
310
|
notice: z
|
|
238
311
|
.string()
|
|
239
312
|
.optional()
|
|
240
|
-
.describe('Guidance when results are empty, a fallback provider answered, offset overshot, or
|
|
313
|
+
.describe('Guidance when results are empty, a fallback provider answered, offset overshot, a fallback provider could not be reached, or upstream rows were excluded for carrying no PubMed PMID. Absent on a clean NCBI result page.'),
|
|
314
|
+
coverageFailures: z
|
|
315
|
+
.array(z
|
|
316
|
+
.object({
|
|
317
|
+
provider: z
|
|
318
|
+
.enum(['europepmc', 'openalex'])
|
|
319
|
+
.describe('Reference-coverage provider that failed'),
|
|
320
|
+
reason: z
|
|
321
|
+
.string()
|
|
322
|
+
.describe('Declared failure reason, e.g. europepmc_unreachable or provider_disabled'),
|
|
323
|
+
retryable: z.boolean().describe('Whether a retry can reach this provider'),
|
|
324
|
+
})
|
|
325
|
+
.describe('One coverage provider that could not be checked'))
|
|
326
|
+
.optional()
|
|
327
|
+
.describe('Reference-coverage fallbacks that failed instead of answering, so the reference set is unverified rather than confirmed absent. Absent when every provider consulted answered.'),
|
|
241
328
|
},
|
|
242
329
|
enrichmentTrailer: {
|
|
243
330
|
totalCount: { label: 'Total Found' },
|
|
244
331
|
source: { label: 'Source' },
|
|
332
|
+
coverageFailures: {
|
|
333
|
+
render: (value = []) => `**Coverage not checked:** ${summarizeOutcomes(value)}`,
|
|
334
|
+
},
|
|
245
335
|
},
|
|
246
336
|
async handler(input, ctx) {
|
|
247
337
|
const ncbi = getNcbiService();
|
|
@@ -265,6 +355,10 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
265
355
|
// Records WHY a non-primary provider answered, so the provenance notice can
|
|
266
356
|
// distinguish an NCBI outage from references coverage for a non-PMC source.
|
|
267
357
|
let fallbackKind;
|
|
358
|
+
// Reference-coverage fallbacks that threw. NCBI answering successfully with
|
|
359
|
+
// an empty set is not the same fact as a provider never being reached, so a
|
|
360
|
+
// failure here is carried to the caller instead of logged and dropped.
|
|
361
|
+
const coverageFailures = [];
|
|
268
362
|
// 1. NCBI (primary)
|
|
269
363
|
try {
|
|
270
364
|
providerResult = await ncbiProvider(input.pmid, input.relationship, ctx.signal);
|
|
@@ -369,20 +463,34 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
369
463
|
// likely a transient NCBI issue, not a real "no references".
|
|
370
464
|
if (input.relationship === 'references' && sourceSummary?.title) {
|
|
371
465
|
let refFallback = null;
|
|
466
|
+
// Providers that actually answered — the only ones a "no references"
|
|
467
|
+
// notice may claim to have checked.
|
|
468
|
+
const coverageChecked = ['ncbi'];
|
|
372
469
|
const refAttempts = [
|
|
373
|
-
|
|
374
|
-
|
|
470
|
+
{
|
|
471
|
+
provider: 'europepmc',
|
|
472
|
+
run: () => epmcProvider(input.pmid, 'references', input.offset, input.maxResults, ctx.signal),
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
provider: 'openalex',
|
|
476
|
+
run: () => openAlexProvider(input.pmid, 'references', input.offset + input.maxResults, ctx.signal),
|
|
477
|
+
},
|
|
375
478
|
];
|
|
376
479
|
for (const attempt of refAttempts) {
|
|
377
480
|
try {
|
|
378
|
-
const result = await attempt();
|
|
481
|
+
const result = await attempt.run();
|
|
482
|
+
coverageChecked.push(attempt.provider);
|
|
379
483
|
if (result.allPmids.length > 0) {
|
|
380
484
|
refFallback = result;
|
|
381
485
|
break;
|
|
382
486
|
}
|
|
383
487
|
}
|
|
384
488
|
catch (err) {
|
|
385
|
-
ctx.log.warning('References fallback provider failed', {
|
|
489
|
+
ctx.log.warning('References fallback provider failed', {
|
|
490
|
+
provider: attempt.provider,
|
|
491
|
+
err: describeError(err),
|
|
492
|
+
});
|
|
493
|
+
coverageFailures.push(coverageFailureFrom(attempt.provider, err));
|
|
386
494
|
}
|
|
387
495
|
}
|
|
388
496
|
if (refFallback) {
|
|
@@ -392,10 +500,16 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
392
500
|
else {
|
|
393
501
|
ctx.enrich({ source: 'ncbi' });
|
|
394
502
|
ctx.enrich.total(0);
|
|
503
|
+
if (coverageFailures.length > 0)
|
|
504
|
+
ctx.enrich({ coverageFailures });
|
|
395
505
|
const sourcePmcId = sourceSummary.pmcId;
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
506
|
+
const checked = joinWithOr(coverageChecked.map((p) => PROVIDER_LABELS[p]));
|
|
507
|
+
const noReferences = sourcePmcId
|
|
508
|
+
? `No reference list found for PMID ${input.pmid} (PMCID ${sourcePmcId}) via ${checked}.`
|
|
509
|
+
: `No reference list available for PMID ${input.pmid} via ${checked}. Use pubmed_fetch_articles to inspect the article record, or try relationship: "similar" / "cited_by".`;
|
|
510
|
+
ctx.enrich.notice(coverageFailures.length > 0
|
|
511
|
+
? `${noReferences} ${coverageIncompleteNotice(coverageFailures)}`
|
|
512
|
+
: noReferences);
|
|
399
513
|
return {
|
|
400
514
|
sourcePmid: input.pmid,
|
|
401
515
|
relationship: input.relationship,
|
|
@@ -421,6 +535,10 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
421
535
|
const { allPmids, totalCount, source, droppedNoPmid = 0, reachCapped = false } = providerResult;
|
|
422
536
|
ctx.enrich({ source });
|
|
423
537
|
ctx.enrich.total(totalCount);
|
|
538
|
+
// A provider that failed before another one answered still shapes how far
|
|
539
|
+
// this reference set was actually checked.
|
|
540
|
+
if (coverageFailures.length > 0)
|
|
541
|
+
ctx.enrich({ coverageFailures });
|
|
424
542
|
// For NCBI the full neighbor set is in memory; for EPMC/OpenAlex the provider
|
|
425
543
|
// pre-fetched enough PMID-addressable rows to cover the window.
|
|
426
544
|
const window = allPmids.slice(input.offset, input.offset + input.maxResults);
|
|
@@ -443,15 +561,27 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
443
561
|
? `NCBI has no PMC-indexed reference list for PMID ${input.pmid} — references served by ${providerName} (${detail}).`
|
|
444
562
|
: `NCBI eLink unavailable — related articles served by ${providerName} (${detail}).`);
|
|
445
563
|
}
|
|
446
|
-
//
|
|
447
|
-
// PubMed PMID
|
|
564
|
+
// Both fallbacks count every upstream record, but only some rows carry a
|
|
565
|
+
// PubMed PMID — Europe PMC's non-MED sources, OpenAlex works with no PubMed
|
|
566
|
+
// record. Disclose the gap so an empty or short window reads as an
|
|
448
567
|
// excluded-rows effect rather than an exhausted result set.
|
|
449
568
|
if (droppedNoPmid > 0) {
|
|
450
|
-
|
|
569
|
+
const excluded = source === 'europepmc'
|
|
570
|
+
? 'non-MED sources such as preprints'
|
|
571
|
+
: 'works OpenAlex indexes with no PubMed record';
|
|
572
|
+
notices.push(`${PROVIDER_LABELS[source]} served ${allPmids.length + droppedNoPmid} upstream rows for this request, ${droppedNoPmid} with no PubMed PMID (${excluded}); those rows cannot be returned here.`);
|
|
451
573
|
}
|
|
452
|
-
// The
|
|
574
|
+
// The request cap bounds how far into a fallback's set one request can
|
|
575
|
+
// reach. It counts pages for Europe PMC and for OpenAlex's `cites:` filter,
|
|
576
|
+
// but OpenAlex serves `similar` and `references` from the source work's own
|
|
577
|
+
// ID list, which it resolves in batches — so the same cap names a different
|
|
578
|
+
// unit of work there.
|
|
453
579
|
if (reachCapped) {
|
|
454
|
-
|
|
580
|
+
const cap = source === 'europepmc' ? EPMC_MAX_PAGES : OPENALEX_MAX_UPSTREAM_REQUESTS;
|
|
581
|
+
const walk = source === 'europepmc' || input.relationship === 'cited_by'
|
|
582
|
+
? `paging stopped after ${cap} pages`
|
|
583
|
+
: `ID resolution stopped after ${cap} batches`;
|
|
584
|
+
notices.push(`${PROVIDER_LABELS[source]} ${walk} (${allPmids.length} PubMed-addressable rows) without reaching offset ${input.offset}; lower the offset.`);
|
|
455
585
|
}
|
|
456
586
|
if (window.length === 0) {
|
|
457
587
|
if (notices.length > 0)
|
|
@@ -468,7 +598,12 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
468
598
|
// (the article metadata fields are all optional) rather than failing the whole
|
|
469
599
|
// request, so the chain's resilience survives the enrichment step.
|
|
470
600
|
try {
|
|
471
|
-
|
|
601
|
+
// Version 2.0 is what carries a Bookshelf record's venue: the version 1
|
|
602
|
+
// DocSum format has no BookTitle, PublisherName or DocType element, and
|
|
603
|
+
// names editors without the AuthType that separates them from the
|
|
604
|
+
// record's own authors. On that older format a book row reports an empty
|
|
605
|
+
// Source and no book fields at all. (#114)
|
|
606
|
+
const summaryResult = await ncbi.eSummary({ db: 'pubmed', version: '2.0', retmode: 'xml', id: window.join(',') }, { signal: ctx.signal });
|
|
472
607
|
const briefSummaries = await extractBriefSummaries(summaryResult);
|
|
473
608
|
const summaryMap = new Map(briefSummaries.map((bs) => [bs.pmid, bs]));
|
|
474
609
|
const articles = window.map((pmid) => {
|
|
@@ -478,6 +613,10 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
478
613
|
title: details?.title,
|
|
479
614
|
authors: details?.authors,
|
|
480
615
|
source: details?.source,
|
|
616
|
+
bookTitle: details?.bookTitle,
|
|
617
|
+
publisherName: details?.publisherName,
|
|
618
|
+
docType: details?.docType,
|
|
619
|
+
editors: details?.editors,
|
|
481
620
|
pubDate: details?.pubDate,
|
|
482
621
|
};
|
|
483
622
|
});
|
|
@@ -522,7 +661,12 @@ export const findRelatedTool = tool('pubmed_find_related', {
|
|
|
522
661
|
lines.push(` ${escapeMarkdownInline(a.title)}`);
|
|
523
662
|
if (a.authors)
|
|
524
663
|
lines.push(` *${escapeMarkdownInline(a.authors)}*`);
|
|
525
|
-
|
|
664
|
+
if (a.editors?.length)
|
|
665
|
+
lines.push(` edited by ${escapeMarkdownInline(a.editors.join(', '))}`);
|
|
666
|
+
// A Bookshelf record has no journal: its book and publisher stand in
|
|
667
|
+
// for the source so the row still names a venue. (#114)
|
|
668
|
+
const book = [a.bookTitle, a.publisherName].filter(Boolean).join(' — ');
|
|
669
|
+
const meta = [a.source, book, a.docType, a.pubDate].filter(Boolean).join(', ');
|
|
526
670
|
if (meta)
|
|
527
671
|
lines.push(` ${meta}`);
|
|
528
672
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-related.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/find-related.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"find-related.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/find-related.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-citations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/format-citations.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"format-citations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/format-citations.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAwBjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2H9B,CAAC"}
|
|
@@ -7,8 +7,7 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
7
7
|
import { NCBI_SERVICE_ERRORS } from '../../../services/error-contracts.js';
|
|
8
8
|
import { formatCitations, } from '../../../services/ncbi/formatting/citation-formatter.js';
|
|
9
9
|
import { getNcbiService } from '../../../services/ncbi/ncbi-service.js';
|
|
10
|
-
import {
|
|
11
|
-
import { ensureArray } from '../../../services/ncbi/parsing/xml-helpers.js';
|
|
10
|
+
import { parseArticleSet } from '../../../services/ncbi/parsing/article-parser.js';
|
|
12
11
|
import { conceptMeta, EDAM_DATA_FORMATTING, SCHEMA_CREATIVE_WORK } from './_concepts.js';
|
|
13
12
|
import { pmidStringSchema } from './_schemas.js';
|
|
14
13
|
const CitationStyleEnum = z.enum(['apa', 'mla', 'bibtex', 'ris', 'vancouver']);
|
|
@@ -56,7 +55,7 @@ export const formatCitationsTool = tool('pubmed_format_citations', {
|
|
|
56
55
|
unavailablePmids: z
|
|
57
56
|
.array(z.string())
|
|
58
57
|
.optional()
|
|
59
|
-
.describe('
|
|
58
|
+
.describe('PMIDs PubMed returned no record for, so nothing could be cited for them. That is all this reports: PubMed omits a PMID it does not recognize silently, with no error and no reason, so the absence says nothing about whether the PMID exists. Use `pubmed_search_articles` to find PMIDs that do resolve.'),
|
|
60
59
|
}),
|
|
61
60
|
// Recovery guidance when nothing could be formatted — agent-facing context, surfaced
|
|
62
61
|
// via ctx.enrich.notice() to both structuredContent and content[]; absent on success.
|
|
@@ -73,19 +72,18 @@ export const formatCitationsTool = tool('pubmed_format_citations', {
|
|
|
73
72
|
formats,
|
|
74
73
|
});
|
|
75
74
|
const raw = await getNcbiService().eFetch({ db: 'pubmed', id: input.pmids.join(','), retmode: 'xml' }, { retmode: 'xml', usePost: input.pmids.length >= 25, signal: ctx.signal });
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
});
|
|
75
|
+
// Reads both members of the set. Taking `PubmedArticleSet.PubmedArticle`
|
|
76
|
+
// alone discards every NCBI Bookshelf record, leaving a chapter or book
|
|
77
|
+
// uncitable and its PMID reported unavailable. (#114)
|
|
78
|
+
const citations = parseArticleSet(raw?.PubmedArticleSet).map((parsed) => ({
|
|
79
|
+
pmid: parsed.pmid,
|
|
80
|
+
title: parsed.title,
|
|
81
|
+
citations: formatCitations(parsed, formats),
|
|
82
|
+
}));
|
|
85
83
|
const returnedPmids = new Set(citations.map((entry) => entry.pmid));
|
|
86
84
|
const unavailablePmids = input.pmids.filter((pmid) => !returnedPmids.has(pmid));
|
|
87
85
|
if (citations.length === 0) {
|
|
88
|
-
ctx.enrich.notice('No articles were returned
|
|
86
|
+
ctx.enrich.notice('No articles were returned: PubMed matched no record to any of the submitted PMIDs. It omits a PMID it does not recognize silently, without an error or a reason, so nothing more than that is known here. Try pubmed_search_articles to discover PMIDs that resolve, or pubmed_spell_check if these came from a noisy source.');
|
|
89
87
|
}
|
|
90
88
|
return {
|
|
91
89
|
citations,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-citations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/format-citations.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAEL,eAAe,GAChB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"format-citations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/format-citations.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup-citation.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/lookup-citation.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"lookup-citation.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/lookup-citation.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAiCjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmT7B,CAAC"}
|
|
@@ -14,6 +14,21 @@ import { conceptMeta, EDAM_DATA_RETRIEVAL, EDAM_PUBMED_ID, SCHEMA_SCHOLARLY_ARTI
|
|
|
14
14
|
function surname(name) {
|
|
15
15
|
return name.trim().split(/\s+/)[0]?.toLowerCase() ?? '';
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* ECitMatch reads each citation as six `|`-delimited fields, and the citations
|
|
19
|
+
* of one request are joined into a single payload with `\r`. Either character
|
|
20
|
+
* inside an interpolated field shifts that layout — NCBI mis-parses the line or
|
|
21
|
+
* splits one citation into two response rows, and the citation's real match is
|
|
22
|
+
* lost. Rejected at the schema so the constraint is advertised as a JSON-Schema
|
|
23
|
+
* `pattern` and a hazardous citation never reaches NCBI, rather than silently
|
|
24
|
+
* rewriting what the caller asked for. (#125)
|
|
25
|
+
*
|
|
26
|
+
* `key` is exempt: it is a label echoed onto the result and is never put on the
|
|
27
|
+
* wire (the service submits positional tokens instead), so it stays free-form.
|
|
28
|
+
*/
|
|
29
|
+
const BDATA_FIELD_RE = /^[^|\r\n]*$/;
|
|
30
|
+
const BDATA_FIELD_HINT = 'Cannot contain a pipe ("|") or a line break.';
|
|
31
|
+
const BDATA_FIELD_ERROR = `${BDATA_FIELD_HINT} Those characters shift ECitMatch's field layout — remove them or replace them with a space.`;
|
|
17
32
|
export const lookupCitationTool = tool('pubmed_lookup_citation', {
|
|
18
33
|
description: `Look up PubMed IDs from partial bibliographic citations. Useful when you have a reference (journal, year, volume, page, author) and need the PMID — deterministic citation matching, more reliable than free-text search for structured references. Each citation must include at least journal or year (ECitMatch primary-keys on journal+volume+page; author-only or volume-only inputs guarantee no match); more fields = better match accuracy.`,
|
|
19
34
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
@@ -26,19 +41,33 @@ export const lookupCitationTool = tool('pubmed_lookup_citation', {
|
|
|
26
41
|
.object({
|
|
27
42
|
journal: z
|
|
28
43
|
.string()
|
|
44
|
+
.regex(BDATA_FIELD_RE, BDATA_FIELD_ERROR)
|
|
45
|
+
.optional()
|
|
46
|
+
.describe(`Journal title or ISO abbreviation (e.g., "proc natl acad sci u s a"). ${BDATA_FIELD_HINT}`),
|
|
47
|
+
year: z
|
|
48
|
+
.string()
|
|
49
|
+
.regex(BDATA_FIELD_RE, BDATA_FIELD_ERROR)
|
|
50
|
+
.optional()
|
|
51
|
+
.describe(`Publication year (e.g., "1991"). ${BDATA_FIELD_HINT}`),
|
|
52
|
+
volume: z
|
|
53
|
+
.string()
|
|
54
|
+
.regex(BDATA_FIELD_RE, BDATA_FIELD_ERROR)
|
|
55
|
+
.optional()
|
|
56
|
+
.describe(`Volume number. ${BDATA_FIELD_HINT}`),
|
|
57
|
+
firstPage: z
|
|
58
|
+
.string()
|
|
59
|
+
.regex(BDATA_FIELD_RE, BDATA_FIELD_ERROR)
|
|
29
60
|
.optional()
|
|
30
|
-
.describe(
|
|
31
|
-
year: z.string().optional().describe('Publication year (e.g., "1991")'),
|
|
32
|
-
volume: z.string().optional().describe('Volume number'),
|
|
33
|
-
firstPage: z.string().optional().describe('First page number'),
|
|
61
|
+
.describe(`First page number. ${BDATA_FIELD_HINT}`),
|
|
34
62
|
authorName: z
|
|
35
63
|
.string()
|
|
64
|
+
.regex(BDATA_FIELD_RE, BDATA_FIELD_ERROR)
|
|
36
65
|
.optional()
|
|
37
|
-
.describe(
|
|
66
|
+
.describe(`Author name, typically "lastname initials" (e.g., "mann bj"). ${BDATA_FIELD_HINT}`),
|
|
38
67
|
key: z
|
|
39
68
|
.string()
|
|
40
69
|
.optional()
|
|
41
|
-
.describe('Arbitrary label to track this citation in results. Auto-assigned if omitted.'),
|
|
70
|
+
.describe('Arbitrary label to track this citation in results. Auto-assigned if omitted. Echoed back unchanged and never sent to NCBI, so any character is accepted here.'),
|
|
42
71
|
})
|
|
43
72
|
.describe('Citation to match against PubMed. Must include at least journal or year — ECitMatch primary-keys on journal+volume+page, so author-only or volume-only inputs guarantee no match.')
|
|
44
73
|
.refine((c) => !!(c.journal || c.year), {
|
|
@@ -197,8 +226,13 @@ export const lookupCitationTool = tool('pubmed_lookup_citation', {
|
|
|
197
226
|
if (result.totalWarnings > 0) {
|
|
198
227
|
lines.push(`**Warnings:** ${result.totalWarnings}`);
|
|
199
228
|
}
|
|
200
|
-
|
|
201
|
-
|
|
229
|
+
// The heading leads with the citation's 1-based submission index, which is
|
|
230
|
+
// unique across the batch. `key` is a caller-supplied label that may repeat,
|
|
231
|
+
// and text-only clients read this markdown instead of structuredContent — so
|
|
232
|
+
// without the index two results can render under identical headings with no
|
|
233
|
+
// way to tell which block answers which submitted citation. (#128)
|
|
234
|
+
for (const [i, r] of result.results.entries()) {
|
|
235
|
+
lines.push(`\n### ${i + 1} · ${r.key}`);
|
|
202
236
|
if (r.pmid)
|
|
203
237
|
lines.push(`**PMID:** ${r.pmid}`);
|
|
204
238
|
if (r.matchedFirstAuthor)
|