@cyanheads/pubmed-mcp-server 2.10.14 → 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 +4 -4
- package/CLAUDE.md +4 -4
- package/README.md +24 -15
- package/changelog/2.10.x/2.10.14.md +1 -0
- package/changelog/2.10.x/2.10.15.md +28 -0
- 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 +10 -2
- 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 +10 -3
- 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 +16 -5
- 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 -63
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.js +42 -25
- package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts +10 -3
- 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 +18 -4
- 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 +10 -5
- 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-fetch.tool.d.ts +6 -3
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts +11 -5
- 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 +20 -11
- 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 +16 -5
- 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 +12 -6
- 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 +32 -15
- package/dist/services/error-contracts.d.ts.map +1 -1
- package/dist/services/error-contracts.js +32 -15
- package/dist/services/error-contracts.js.map +1 -1
- package/dist/services/europe-pmc/api-client.d.ts +24 -9
- package/dist/services/europe-pmc/api-client.d.ts.map +1 -1
- package/dist/services/europe-pmc/api-client.js +47 -18
- package/dist/services/europe-pmc/api-client.js.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.d.ts +22 -1
- package/dist/services/europe-pmc/europe-pmc-service.d.ts.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.js +102 -43
- package/dist/services/europe-pmc/europe-pmc-service.js.map +1 -1
- package/dist/services/ncbi/ncbi-service.d.ts +18 -24
- package/dist/services/ncbi/ncbi-service.d.ts.map +1 -1
- package/dist/services/ncbi/ncbi-service.js +111 -120
- package/dist/services/ncbi/ncbi-service.js.map +1 -1
- package/dist/services/ncbi/request-queue.d.ts +22 -30
- package/dist/services/ncbi/request-queue.d.ts.map +1 -1
- package/dist/services/ncbi/request-queue.js +29 -128
- package/dist/services/ncbi/request-queue.js.map +1 -1
- package/dist/services/ncbi/response-handler.d.ts +14 -1
- package/dist/services/ncbi/response-handler.d.ts.map +1 -1
- package/dist/services/ncbi/response-handler.js +65 -9
- package/dist/services/ncbi/response-handler.js.map +1 -1
- package/package.json +6 -6
- package/server.json +3 -3
|
@@ -1,135 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* @fileoverview Request queue for NCBI E-utility calls, built on the framework pacer.
|
|
3
|
+
* Spaces request starts to NCBI's per-second ceiling, caps concurrent in-flight
|
|
4
|
+
* requests and queue depth, releases a waiting caller the moment its signal aborts,
|
|
5
|
+
* and closes one shared cooldown gate for every queued caller when NCBI answers 429.
|
|
6
|
+
* Each retry attempt re-enters the queue, so a throttled upstream paces the whole
|
|
7
|
+
* server rather than each caller retrying into it on its own backoff.
|
|
6
8
|
* @module src/services/ncbi/request-queue
|
|
7
9
|
*/
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const DEFAULT_MAX_CONCURRENT = 8;
|
|
12
|
-
const DEFAULT_MAX_QUEUE_SIZE = 100;
|
|
10
|
+
import { createPacer } from '@cyanheads/mcp-ts-core/utils';
|
|
11
|
+
/** Waiting callers past which a new arrival is shed at once. */
|
|
12
|
+
const DEFAULT_MAX_QUEUE_DEPTH = 100;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* an API key, ≈10/s with one).
|
|
19
|
-
* - **Concurrency** (`maxConcurrent`): maximum number of requests in flight
|
|
20
|
-
* simultaneously. Decouples concurrency from rate, so slow upstream
|
|
21
|
-
* responses don't block new dispatches.
|
|
22
|
-
*
|
|
23
|
-
* Enqueue accepts an optional `AbortSignal` so callers can bound their total
|
|
24
|
-
* time inside the scheduler — when the signal fires, a still-waiting task
|
|
25
|
-
* rejects immediately instead of sitting behind a saturated worker for
|
|
26
|
-
* minutes.
|
|
14
|
+
* Gate closed on an NCBI 429: one second — the width of NCBI's rate window — doubled
|
|
15
|
+
* per consecutive 429 and reset by the first success. An honored `Retry-After` is capped
|
|
16
|
+
* by the same ceiling, a quarter of the default total deadline, so a caller queued
|
|
17
|
+
* behind the longest gate still has budget left for its request.
|
|
27
18
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
reason: 'queue_full',
|
|
45
|
-
endpoint,
|
|
46
|
-
queueSize: this.waiters.length,
|
|
47
|
-
...recoveryFor('queue_full'),
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
return new Promise((resolve, reject) => {
|
|
51
|
-
if (signal?.aborted) {
|
|
52
|
-
reject(signal.reason);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const waiter = {
|
|
56
|
-
resolve,
|
|
57
|
-
reject,
|
|
58
|
-
task,
|
|
59
|
-
endpoint,
|
|
60
|
-
params,
|
|
61
|
-
...(signal && { signal }),
|
|
62
|
-
};
|
|
63
|
-
if (signal) {
|
|
64
|
-
const onAbort = () => {
|
|
65
|
-
const idx = this.waiters.indexOf(waiter);
|
|
66
|
-
if (idx === -1)
|
|
67
|
-
return; // already dispatched — the task forwards its own signal
|
|
68
|
-
this.waiters.splice(idx, 1);
|
|
69
|
-
reject(signal.reason);
|
|
70
|
-
};
|
|
71
|
-
waiter.onAbort = onAbort;
|
|
72
|
-
signal.addEventListener('abort', onAbort, { once: true });
|
|
73
|
-
}
|
|
74
|
-
this.waiters.push(waiter);
|
|
75
|
-
this.tryDispatch();
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
tryDispatch() {
|
|
79
|
-
if (this.nextDispatchTimer !== undefined)
|
|
80
|
-
return;
|
|
81
|
-
while (this.inFlight < this.maxConcurrent && this.waiters.length > 0) {
|
|
82
|
-
const now = Date.now();
|
|
83
|
-
const gap = this.minStartGapMs - (now - this.lastStartTime);
|
|
84
|
-
if (gap > 0) {
|
|
85
|
-
logger.debug(`Delaying next NCBI dispatch by ${gap}ms to respect rate limit.`, requestContextService.createRequestContext({
|
|
86
|
-
operation: 'NcbiQueueWait',
|
|
87
|
-
additionalContext: { delayMs: gap },
|
|
88
|
-
}));
|
|
89
|
-
this.nextDispatchTimer = setTimeout(() => {
|
|
90
|
-
this.nextDispatchTimer = undefined;
|
|
91
|
-
this.tryDispatch();
|
|
92
|
-
}, gap);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const waiter = this.waiters.shift();
|
|
96
|
-
if (!waiter)
|
|
97
|
-
return;
|
|
98
|
-
// Detach the cancel listener now that we're about to start; the task is
|
|
99
|
-
// responsible for forwarding its own signal to downstream I/O.
|
|
100
|
-
if (waiter.signal && waiter.onAbort) {
|
|
101
|
-
waiter.signal.removeEventListener('abort', waiter.onAbort);
|
|
102
|
-
}
|
|
103
|
-
this.lastStartTime = Date.now();
|
|
104
|
-
this.inFlight += 1;
|
|
105
|
-
logger.info(`Executing NCBI request via queue: ${waiter.endpoint}`, requestContextService.createRequestContext({
|
|
106
|
-
operation: 'NcbiQueueDispatch',
|
|
107
|
-
additionalContext: {
|
|
108
|
-
endpoint: waiter.endpoint,
|
|
109
|
-
inFlight: this.inFlight,
|
|
110
|
-
queueDepth: this.waiters.length,
|
|
111
|
-
},
|
|
112
|
-
}));
|
|
113
|
-
// `Promise.resolve().then(() => task())` converts any sync throw from
|
|
114
|
-
// `task()` into a rejected promise so the finally() bookkeeping always
|
|
115
|
-
// runs.
|
|
116
|
-
Promise.resolve()
|
|
117
|
-
.then(() => waiter.task())
|
|
118
|
-
.then(waiter.resolve, (err) => {
|
|
119
|
-
logger.error('Error processing NCBI request from queue.', requestContextService.createRequestContext({
|
|
120
|
-
operation: 'NcbiQueueProcess',
|
|
121
|
-
additionalContext: {
|
|
122
|
-
endpoint: waiter.endpoint,
|
|
123
|
-
errorMessage: err instanceof Error ? err.message : String(err),
|
|
124
|
-
},
|
|
125
|
-
}));
|
|
126
|
-
waiter.reject(err);
|
|
127
|
-
})
|
|
128
|
-
.finally(() => {
|
|
129
|
-
this.inFlight -= 1;
|
|
130
|
-
this.tryDispatch();
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
19
|
+
const RATE_LIMIT_COOLDOWN = { baseMs: 1_000, maxMs: 15_000 };
|
|
20
|
+
/**
|
|
21
|
+
* Creates the pacer every NCBI E-utility call runs through. A caller passes its
|
|
22
|
+
* remaining deadline as `maxWaitMs`: a call whose projected wait already exceeds it
|
|
23
|
+
* — behind a deep queue or a closed cooldown gate — is shed at enqueue with a
|
|
24
|
+
* `pacer_shed` rejection carrying `retryAfter`, rather than waiting out a deadline
|
|
25
|
+
* it cannot meet.
|
|
26
|
+
*/
|
|
27
|
+
export function createNcbiRequestQueue({ maxConcurrent, maxQueueDepth = DEFAULT_MAX_QUEUE_DEPTH, minStartGapMs, }) {
|
|
28
|
+
return createPacer({
|
|
29
|
+
name: 'ncbi',
|
|
30
|
+
minStartGapMs,
|
|
31
|
+
maxConcurrent,
|
|
32
|
+
maxQueueDepth,
|
|
33
|
+
cooldown: RATE_LIMIT_COOLDOWN,
|
|
34
|
+
});
|
|
134
35
|
}
|
|
135
36
|
//# sourceMappingURL=request-queue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-queue.js","sourceRoot":"","sources":["../../../src/services/ncbi/request-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"request-queue.js","sourceRoot":"","sources":["../../../src/services/ncbi/request-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAc,MAAM,8BAA8B,CAAC;AAEvE,gEAAgE;AAChE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAY7D;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,aAAa,EACb,aAAa,GAAG,uBAAuB,EACvC,aAAa,GACW;IACxB,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,MAAM;QACZ,aAAa;QACb,aAAa;QACb,aAAa;QACb,QAAQ,EAAE,mBAAmB;KAC9B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -2,16 +2,29 @@
|
|
|
2
2
|
* @fileoverview Handles parsing of NCBI E-utility responses and NCBI-specific error extraction.
|
|
3
3
|
* Creates an NCBI-specific XMLParser instance with `isArray` callback support for handling
|
|
4
4
|
* NCBI's inconsistent XML structures where single-element lists are collapsed to scalars.
|
|
5
|
+
* Also reads the `<ERROR>` envelope of a failed eutils response: a backend failure is
|
|
6
|
+
* reclassified as transient, and EFetch's all-invalid-ID rejection becomes the empty set
|
|
7
|
+
* NCBI returns for an unknown ID.
|
|
5
8
|
* @module src/services/ncbi/response-handler
|
|
6
9
|
*/
|
|
7
10
|
import type { NcbiRequestOptions } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* The response NCBI would have sent had it answered an all-invalid EFetch ID list the
|
|
13
|
+
* way it answers an unknown well-formed one. EFetch rejects a list in which no ID is a
|
|
14
|
+
* real UID (`id=00000000`) with an HTTP 400 `ID list is empty!` envelope, but answers an
|
|
15
|
+
* unassigned UID (`id=99999999`) with HTTP 200 and an empty set, so the same question —
|
|
16
|
+
* "which of these exist?" — would otherwise split into an error and an answer depending
|
|
17
|
+
* on the ID's spelling. Returns the empty-set document to parse in place of the error,
|
|
18
|
+
* or `undefined` when the error is anything else. (#155)
|
|
19
|
+
*/
|
|
20
|
+
export declare function emptyEFetchResultFor(error: unknown, endpoint: string, db: unknown): string | undefined;
|
|
8
21
|
/**
|
|
9
22
|
* Reclassifies an HTTP error from a eutils request whose captured body is an NCBI
|
|
10
23
|
* `<ERROR>` envelope reporting a backend failure. The status-derived code reads such a
|
|
11
24
|
* response as caller error (400 → InvalidParams), which the retry gate never retries.
|
|
12
25
|
* Any other error — including a genuine invalid-parameter 400 — is returned unchanged.
|
|
13
26
|
* Matches the body text rather than parsing it, since the framework captures only a
|
|
14
|
-
* bounded prefix. (#153)
|
|
27
|
+
* bounded prefix. (#153, #155)
|
|
15
28
|
*/
|
|
16
29
|
export declare function reclassifyNcbiHttpError(error: unknown, endpoint: string): unknown;
|
|
17
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2BH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4IrD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,OAAO,GACV,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAoBjF;AAsJD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD;AAeD;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAElD,cAkBC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IA2BtB,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAoBrE;IAED,sBAAsB,CAAC,CAAC,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,CAsOH;CACF"}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* @fileoverview Handles parsing of NCBI E-utility responses and NCBI-specific error extraction.
|
|
3
3
|
* Creates an NCBI-specific XMLParser instance with `isArray` callback support for handling
|
|
4
4
|
* NCBI's inconsistent XML structures where single-element lists are collapsed to scalars.
|
|
5
|
+
* Also reads the `<ERROR>` envelope of a failed eutils response: a backend failure is
|
|
6
|
+
* reclassified as transient, and EFetch's all-invalid-ID rejection becomes the empty set
|
|
7
|
+
* NCBI returns for an unknown ID.
|
|
5
8
|
* @module src/services/ncbi/response-handler
|
|
6
9
|
*/
|
|
7
10
|
import { McpError, notFound, serializationError, serviceUnavailable, } from '@cyanheads/mcp-ts-core/errors';
|
|
@@ -107,29 +110,82 @@ const ERROR_PATHS = [
|
|
|
107
110
|
* NCBI `<ERROR>` messages describing a backend failure rather than the request.
|
|
108
111
|
* EFetch sends the viewer-timeout envelope under HTTP 200 and HTTP 400 alike, so
|
|
109
112
|
* the status cannot tell it from a malformed request; the message can. (#153)
|
|
113
|
+
*
|
|
114
|
+
* `proxy_stream()` is the EFetch front end's own backend-proxy method: it prefixes
|
|
115
|
+
* every failure relayed from the service behind it (a 502 page, "Failed to connect
|
|
116
|
+
* to PubOne service"), so a client-side 400 cannot carry it. (#155)
|
|
117
|
+
*/
|
|
118
|
+
const NCBI_TRANSIENT_ERROR_PATTERNS = [
|
|
119
|
+
/External viewer error/i,
|
|
120
|
+
/Status:\s*Timeout/i,
|
|
121
|
+
/proxy_stream\(\)/,
|
|
122
|
+
];
|
|
123
|
+
/**
|
|
124
|
+
* Captures the text of each uppercase `<ERROR>` element in a raw response body. The
|
|
125
|
+
* framework keeps only the first 500 bytes of an error body, so an envelope relaying a
|
|
126
|
+
* backend page is cut before its `</ERROR>`: an unterminated element runs to the end of
|
|
127
|
+
* the capture. Content may hold markup, raw or entity-escaped.
|
|
128
|
+
*/
|
|
129
|
+
const ERROR_TEXT_REGEX = /<ERROR(?:\s[^>]*)?>([\s\S]*?)(?:<\/ERROR>|$)/g;
|
|
130
|
+
/** NCBI's whole-list rejection when not one supplied ID is a real UID. (#155) */
|
|
131
|
+
const EMPTY_ID_LIST_PATTERN = /^ID list is empty\b/i;
|
|
132
|
+
/**
|
|
133
|
+
* What EFetch answers, HTTP 200, when every requested ID is well-formed but unknown —
|
|
134
|
+
* an empty set in the database's own wrapper. Keyed by `db`; a database missing here
|
|
135
|
+
* keeps the rejection as an error.
|
|
136
|
+
*/
|
|
137
|
+
const EMPTY_EFETCH_RESULTS = {
|
|
138
|
+
pubmed: '<?xml version="1.0" ?>\n<!DOCTYPE PubmedArticleSet PUBLIC "-//NLM//DTD PubMedArticle, 1st January 2025//EN" "https://dtd.nlm.nih.gov/ncbi/pubmed/out/pubmed_250101.dtd">\n<PubmedArticleSet></PubmedArticleSet>\n',
|
|
139
|
+
pmc: '<?xml version="1.0" ?>\n<!DOCTYPE pmc-articleset PUBLIC "-//NLM//DTD ARTICLE SET 2.0//EN" "https://dtd.nlm.nih.gov/ncbi/pmc/articleset/nlm-articleset-2.0.dtd">\n<pmc-articleset></pmc-articleset>\n',
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* The `<ERROR>` messages in the captured body of a non-2xx eutils response, as plain
|
|
143
|
+
* text: entities decoded, markup dropped (including a tag the capture cut in half),
|
|
144
|
+
* whitespace collapsed. `undefined` when the error carries no captured body.
|
|
145
|
+
*/
|
|
146
|
+
function ncbiErrorTexts(error) {
|
|
147
|
+
if (!(error instanceof McpError) || typeof error.data?.body !== 'string')
|
|
148
|
+
return;
|
|
149
|
+
return [...error.data.body.matchAll(ERROR_TEXT_REGEX)].map((match) => decodeHtmlEntities(match[1] ?? '')
|
|
150
|
+
.replace(/<\/?[a-z!][^>]*(?:>|$)/gi, ' ')
|
|
151
|
+
.replace(/\s+/g, ' ')
|
|
152
|
+
.trim());
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The response NCBI would have sent had it answered an all-invalid EFetch ID list the
|
|
156
|
+
* way it answers an unknown well-formed one. EFetch rejects a list in which no ID is a
|
|
157
|
+
* real UID (`id=00000000`) with an HTTP 400 `ID list is empty!` envelope, but answers an
|
|
158
|
+
* unassigned UID (`id=99999999`) with HTTP 200 and an empty set, so the same question —
|
|
159
|
+
* "which of these exist?" — would otherwise split into an error and an answer depending
|
|
160
|
+
* on the ID's spelling. Returns the empty-set document to parse in place of the error,
|
|
161
|
+
* or `undefined` when the error is anything else. (#155)
|
|
110
162
|
*/
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
163
|
+
export function emptyEFetchResultFor(error, endpoint, db) {
|
|
164
|
+
if (endpoint !== 'efetch' || typeof db !== 'string')
|
|
165
|
+
return;
|
|
166
|
+
const empty = EMPTY_EFETCH_RESULTS[db];
|
|
167
|
+
if (empty === undefined)
|
|
168
|
+
return;
|
|
169
|
+
return ncbiErrorTexts(error)?.some((msg) => EMPTY_ID_LIST_PATTERN.test(msg)) ? empty : undefined;
|
|
170
|
+
}
|
|
114
171
|
/**
|
|
115
172
|
* Reclassifies an HTTP error from a eutils request whose captured body is an NCBI
|
|
116
173
|
* `<ERROR>` envelope reporting a backend failure. The status-derived code reads such a
|
|
117
174
|
* response as caller error (400 → InvalidParams), which the retry gate never retries.
|
|
118
175
|
* Any other error — including a genuine invalid-parameter 400 — is returned unchanged.
|
|
119
176
|
* Matches the body text rather than parsing it, since the framework captures only a
|
|
120
|
-
* bounded prefix. (#153)
|
|
177
|
+
* bounded prefix. (#153, #155)
|
|
121
178
|
*/
|
|
122
179
|
export function reclassifyNcbiHttpError(error, endpoint) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (!ncbiErrors.some((msg) => NCBI_TRANSIENT_ERROR_PATTERNS.some((p) => p.test(msg)))) {
|
|
180
|
+
const ncbiErrors = ncbiErrorTexts(error);
|
|
181
|
+
if (!(error instanceof McpError) ||
|
|
182
|
+
!ncbiErrors?.some((msg) => NCBI_TRANSIENT_ERROR_PATTERNS.some((p) => p.test(msg)))) {
|
|
127
183
|
return error;
|
|
128
184
|
}
|
|
129
185
|
return serviceUnavailable(`NCBI API Error: ${ncbiErrors.join('; ')}`, {
|
|
130
186
|
reason: 'ncbi_unreachable',
|
|
131
187
|
endpoint,
|
|
132
|
-
status: error.data
|
|
188
|
+
status: error.data?.status,
|
|
133
189
|
ncbiErrors,
|
|
134
190
|
...recoveryFor('ncbi_unreachable'),
|
|
135
191
|
}, { cause: error });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/pubmed-mcp-server",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.16",
|
|
4
4
|
"mcpName": "io.github.cyanheads/pubmed-mcp-server",
|
|
5
5
|
"description": "Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
"access": "public"
|
|
93
93
|
},
|
|
94
94
|
"dependencies": {
|
|
95
|
-
"@cyanheads/mcp-ts-core": "^0.13.
|
|
96
|
-
"defuddle": "^0.19.
|
|
95
|
+
"@cyanheads/mcp-ts-core": "^0.13.6",
|
|
96
|
+
"defuddle": "^0.19.4",
|
|
97
97
|
"fast-xml-parser": "^5.11.1",
|
|
98
98
|
"linkedom": "^0.18.13",
|
|
99
99
|
"pino-pretty": "^13.1.3",
|
|
@@ -102,13 +102,13 @@
|
|
|
102
102
|
"zod": "^4.6.5"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@biomejs/biome": "^2.5.
|
|
105
|
+
"@biomejs/biome": "^2.5.14",
|
|
106
106
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
107
|
-
"@types/node": "^26.
|
|
107
|
+
"@types/node": "^26.6.2",
|
|
108
108
|
"@types/sanitize-html": "^2.16.1",
|
|
109
109
|
"@vitest/coverage-istanbul": "^5.0.1",
|
|
110
110
|
"depcheck": "^1.4.7",
|
|
111
|
-
"fast-check": "^4.10.
|
|
111
|
+
"fast-check": "^4.10.2",
|
|
112
112
|
"ignore": "^7.0.9",
|
|
113
113
|
"tsc-alias": "^1.9.5",
|
|
114
114
|
"typescript": "^7.0.2",
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/pubmed-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "2.10.
|
|
9
|
+
"version": "2.10.16",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/pubmed-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "2.10.
|
|
22
|
+
"version": "2.10.16",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
67
67
|
"identifier": "@cyanheads/pubmed-mcp-server",
|
|
68
68
|
"runtimeHint": "bun",
|
|
69
|
-
"version": "2.10.
|
|
69
|
+
"version": "2.10.16",
|
|
70
70
|
"packageArguments": [
|
|
71
71
|
{
|
|
72
72
|
"type": "positional",
|