@cyanheads/pubmed-mcp-server 2.10.17 → 2.10.18
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 +2 -2
- package/CLAUDE.md +2 -2
- package/README.md +2 -2
- package/changelog/2.10.x/2.10.17.md +1 -1
- package/changelog/2.10.x/2.10.18.md +14 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +7 -3
- package/dist/config/server-config.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.js +22 -7
- package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.d.ts +18 -12
- package/dist/services/europe-pmc/europe-pmc-service.d.ts.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.js +82 -67
- package/dist/services/europe-pmc/europe-pmc-service.js.map +1 -1
- package/dist/services/europe-pmc/request-queue.d.ts +11 -27
- package/dist/services/europe-pmc/request-queue.d.ts.map +1 -1
- package/dist/services/europe-pmc/request-queue.js +17 -104
- package/dist/services/europe-pmc/request-queue.js.map +1 -1
- package/dist/services/openalex/openalex-service.d.ts +11 -1
- package/dist/services/openalex/openalex-service.d.ts.map +1 -1
- package/dist/services/openalex/openalex-service.js +19 -10
- package/dist/services/openalex/openalex-service.js.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** @cyanheads/pubmed-mcp-server
|
|
4
|
-
**Version:** 2.10.
|
|
4
|
+
**Version:** 2.10.18
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.6`
|
|
6
6
|
**Engines:** Bun ≥1.4.0, Node ≥24.0.0
|
|
7
7
|
|
|
@@ -115,7 +115,7 @@ const ServerConfigSchema = z.object({
|
|
|
115
115
|
apiKey: z.string().optional().describe('NCBI API key'),
|
|
116
116
|
toolIdentifier: z.string().default('pubmed-mcp-server').describe('NCBI tool identifier'),
|
|
117
117
|
adminEmail: z.email().optional().describe('Admin contact email'),
|
|
118
|
-
requestDelayMs: z.coerce.number().min(50).max(5000).default(
|
|
118
|
+
requestDelayMs: z.coerce.number().min(50).max(5000).default(400).describe('Request delay in ms'),
|
|
119
119
|
maxRetries: z.coerce.number().min(0).max(10).default(6).describe('Max retry attempts'),
|
|
120
120
|
timeoutMs: z.coerce.number().min(1000).max(120000).default(30000).describe('Request timeout in ms'),
|
|
121
121
|
});
|
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** @cyanheads/pubmed-mcp-server
|
|
4
|
-
**Version:** 2.10.
|
|
4
|
+
**Version:** 2.10.18
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.6`
|
|
6
6
|
**Engines:** Bun ≥1.4.0, Node ≥24.0.0
|
|
7
7
|
|
|
@@ -115,7 +115,7 @@ const ServerConfigSchema = z.object({
|
|
|
115
115
|
apiKey: z.string().optional().describe('NCBI API key'),
|
|
116
116
|
toolIdentifier: z.string().default('pubmed-mcp-server').describe('NCBI tool identifier'),
|
|
117
117
|
adminEmail: z.email().optional().describe('Admin contact email'),
|
|
118
|
-
requestDelayMs: z.coerce.number().min(50).max(5000).default(
|
|
118
|
+
requestDelayMs: z.coerce.number().min(50).max(5000).default(400).describe('Request delay in ms'),
|
|
119
119
|
maxRetries: z.coerce.number().min(0).max(10).default(6).describe('Max retry attempts'),
|
|
120
120
|
timeoutMs: z.coerce.number().min(1000).max(120000).default(30000).describe('Request timeout in ms'),
|
|
121
121
|
});
|
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
|
|
|
@@ -323,7 +323,7 @@ Key environment variables:
|
|
|
323
323
|
| `STORAGE_PROVIDER_TYPE` | Storage backend: `in-memory`, `filesystem`, `supabase`, `cloudflare-kv/r2/d1` | `in-memory` |
|
|
324
324
|
| `NCBI_API_KEY` | NCBI API key for higher rate limits (10 req/s vs 3 req/s) | none |
|
|
325
325
|
| `NCBI_ADMIN_EMAIL` | Contact email sent with NCBI requests (recommended by NCBI) | none |
|
|
326
|
-
| `NCBI_REQUEST_DELAY_MS` | Minimum gap between NCBI request starts in ms |
|
|
326
|
+
| `NCBI_REQUEST_DELAY_MS` | Minimum gap between NCBI request starts in ms | 400 (100 with key) |
|
|
327
327
|
| `NCBI_MAX_CONCURRENT` | Max concurrent in-flight NCBI requests | `8` |
|
|
328
328
|
| `NCBI_MAX_RETRIES` | Retry attempts for failed NCBI requests | 6 |
|
|
329
329
|
| `NCBI_TIMEOUT_MS` | Per-request HTTP timeout in ms | `30000` |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Moves Europe PMC's request queue onto the framework pacer with retries outside it, so a backoff no longer holds a concurrency slot and an upstream Retry-After is honored; also widens the unkeyed NCBI request delay to 400ms and limits openalex_unreachable to exhausted ServiceUnavailable errors."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 2.10.18 — 2026-09-22
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
|
|
11
|
+
- **Europe PMC's request queue moves onto the framework pacer, with retries outside it.** A backoff no longer holds one of the four concurrency slots, and every attempt waits out the start gap from the last request any caller started. An upstream `Retry-After` now sets the retry wait; one over the 30 s backoff cap fails without another attempt, `retryAfter` included. [#163](https://github.com/cyanheads/pubmed-mcp-server/issues/163)
|
|
12
|
+
- **The unkeyed `NCBI_REQUEST_DELAY_MS` default rises from 334ms to 400ms.** 334ms sat exactly at NCBI's 3 req/s ceiling, so small bursts drew 429s that closed the request queue's cooldown gate. The keyed 100ms default and an explicit override still apply. [#162](https://github.com/cyanheads/pubmed-mcp-server/issues/162)
|
|
13
|
+
- **OpenAlex stamps `openalex_unreachable` only on an exhausted `ServiceUnavailable`.** An exhausted `Timeout` or `RateLimited` keeps its own code with no reason, and every exhausted error keeps its upstream `retryAfter`. [#160](https://github.com/cyanheads/pubmed-mcp-server/issues/160)
|
|
14
|
+
- **`pubmed_find_related` names a provider failure that carries no reason by its code** — `rate_limited` or `timed_out`, not `unclassified_error` — in the coverage summary and the all-providers-failed `data.attempted`. The coverage summary takes such a failure's retryability from its own `retryable` flag. [#160](https://github.com/cyanheads/pubmed-mcp-server/issues/160)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBA8DtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBA8DtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAmC9C"}
|
|
@@ -10,7 +10,7 @@ const ServerConfigSchema = z.object({
|
|
|
10
10
|
apiKey: z.string().optional().describe('NCBI API key'),
|
|
11
11
|
toolIdentifier: z.string().default('pubmed-mcp-server').describe('NCBI tool identifier'),
|
|
12
12
|
adminEmail: z.email().optional().describe('Admin contact email'),
|
|
13
|
-
requestDelayMs: z.coerce.number().min(50).max(5000).default(
|
|
13
|
+
requestDelayMs: z.coerce.number().min(50).max(5000).default(400).describe('Request delay in ms'),
|
|
14
14
|
maxConcurrent: z.coerce
|
|
15
15
|
.number()
|
|
16
16
|
.min(1)
|
|
@@ -89,9 +89,13 @@ export function getServerConfig() {
|
|
|
89
89
|
});
|
|
90
90
|
/**
|
|
91
91
|
* An API key raises NCBI's rate ceiling from ~3 req/s to ~10 req/s. If the
|
|
92
|
-
* operator hasn't explicitly overridden the delay, tighten from the
|
|
93
|
-
*
|
|
92
|
+
* operator hasn't explicitly overridden the delay, tighten from the 400ms
|
|
93
|
+
* keyless default to 100ms when a key is present. A set-but-blank delay counts
|
|
94
94
|
* as not overridden, matching how `parseEnvConfig` reads it.
|
|
95
|
+
*
|
|
96
|
+
* The keyless default sits above the 334ms that 3 req/s works out to, leaving
|
|
97
|
+
* margin for arrival jitter: spaced at exactly the ceiling, a small burst of
|
|
98
|
+
* concurrent calls draws 429s.
|
|
95
99
|
*/
|
|
96
100
|
_config =
|
|
97
101
|
parsed.apiKey && !process.env.NCBI_REQUEST_DELAY_MS?.trim()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-related.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/find-related.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAsB,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"find-related.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/find-related.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAsB,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AA2V/F,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAad,sBAAsB;;mBAExB,+EAA+E;uBAEnF,qMAAqM;;;;;;;;;;;;;;;;;EA2gB3M,CAAC"}
|
|
@@ -37,8 +37,17 @@ const PROVIDER_LABELS = {
|
|
|
37
37
|
};
|
|
38
38
|
/** A provider the server never reached because configuration turned it off. */
|
|
39
39
|
const PROVIDER_DISABLED = 'provider_disabled';
|
|
40
|
-
/** A provider failure that carried no declared
|
|
40
|
+
/** A provider failure that carried no declared reason and whose code names none below. */
|
|
41
41
|
const UNCLASSIFIED_ERROR = 'unclassified_error';
|
|
42
|
+
/**
|
|
43
|
+
* Label for a provider failure that carries no declared reason, named by its code.
|
|
44
|
+
* Each service declares its `*_unreachable` reason for `ServiceUnavailable` only, so
|
|
45
|
+
* an exhausted rate limit or timeout reaches the chain with its code and no reason.
|
|
46
|
+
*/
|
|
47
|
+
const REASON_BY_CODE = new Map([
|
|
48
|
+
[JsonRpcErrorCode.RateLimited, 'rate_limited'],
|
|
49
|
+
[JsonRpcErrorCode.Timeout, 'timed_out'],
|
|
50
|
+
]);
|
|
42
51
|
/** Declared retryability per reason the two coverage fallbacks can throw. */
|
|
43
52
|
const RETRYABLE_BY_REASON = new Map([...EUROPEPMC_SERVICE_ERRORS, ...OPENALEX_SERVICE_ERRORS].map((entry) => [
|
|
44
53
|
entry.reason,
|
|
@@ -163,12 +172,15 @@ async function openAlexProvider(pmid, relationship, maxNeeded, signal) {
|
|
|
163
172
|
}
|
|
164
173
|
/**
|
|
165
174
|
* Record a coverage-fallback failure with its declared reason. A provider off by
|
|
166
|
-
* configuration never recovers on retry;
|
|
167
|
-
* treated as transient, matching how the fully-failed chain reports one
|
|
175
|
+
* configuration never recovers on retry; a failure with no declared reason is
|
|
176
|
+
* treated as transient, matching how the fully-failed chain reports one, unless
|
|
177
|
+
* the error itself says a retry cannot succeed (`data.retryable: false`).
|
|
168
178
|
*/
|
|
169
179
|
function coverageFailureFrom(provider, err) {
|
|
170
180
|
const { reason } = attemptFrom(provider, err);
|
|
171
|
-
|
|
181
|
+
if (reason === PROVIDER_DISABLED)
|
|
182
|
+
return { provider, reason, retryable: false };
|
|
183
|
+
const retryable = RETRYABLE_BY_REASON.get(reason) ?? !(err instanceof McpError && err.data?.retryable === false);
|
|
172
184
|
return { provider, reason, retryable };
|
|
173
185
|
}
|
|
174
186
|
/** "A", "A or B", "A, B, or C" — the providers a notice may claim answered. */
|
|
@@ -213,12 +225,15 @@ function describeError(err) {
|
|
|
213
225
|
}
|
|
214
226
|
/**
|
|
215
227
|
* Record a provider failure with the declared service-contract reason it
|
|
216
|
-
* carries,
|
|
217
|
-
* of collapsing the chain into one
|
|
228
|
+
* carries — or, without one, a label for its code — so the aggregate error names
|
|
229
|
+
* each origin's own failure mode instead of collapsing the chain into one
|
|
230
|
+
* opaque message.
|
|
218
231
|
*/
|
|
219
232
|
function attemptFrom(provider, err) {
|
|
220
233
|
const reason = err instanceof McpError
|
|
221
|
-
? (err.data?.reason ??
|
|
234
|
+
? (err.data?.reason ??
|
|
235
|
+
REASON_BY_CODE.get(err.code) ??
|
|
236
|
+
UNCLASSIFIED_ERROR)
|
|
222
237
|
: UNCLASSIFIED_ERROR;
|
|
223
238
|
return { provider, reason, message: describeError(err) };
|
|
224
239
|
}
|
|
@@ -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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"}
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* from the same `ORDERED_XML_PARSER_OPTIONS` NCBI's ordered parser uses, so
|
|
8
8
|
* `parsePmcArticle` consumes the result without modification.
|
|
9
9
|
*
|
|
10
|
+
* Every call runs as a retry loop around the shared request queue: each attempt
|
|
11
|
+
* re-enters the queue and waits out its start gap, and a backoff sleep holds no
|
|
12
|
+
* concurrency slot, so callers backing off never stall the calls behind them.
|
|
13
|
+
*
|
|
10
14
|
* A search's retry boundary covers fetch and response classification, so
|
|
11
15
|
* Europe PMC's intermittent empty `{ version }` envelope is retried like an
|
|
12
16
|
* HTTP outage; only a sort or cursor that explains it is reported as bad input.
|
|
@@ -19,9 +23,9 @@
|
|
|
19
23
|
*
|
|
20
24
|
* @module src/services/europe-pmc/europe-pmc-service
|
|
21
25
|
*/
|
|
26
|
+
import { type Pacer } from '@cyanheads/mcp-ts-core/utils';
|
|
22
27
|
import type { JatsNode } from '../ncbi/parsing/pmc-xml-helpers.js';
|
|
23
28
|
import { EuropePmcApiClient } from './api-client.js';
|
|
24
|
-
import { EuropePmcRequestQueue } from './request-queue.js';
|
|
25
29
|
import type { EuropePmcFullTextResult, EuropePmcRecordRef, EuropePmcRelatedResult, EuropePmcSearchHit, EuropePmcSearchParams, EuropePmcSearchResult, EuropePmcSource } from './types.js';
|
|
26
30
|
/**
|
|
27
31
|
* Facade over the Europe PMC REST API:
|
|
@@ -31,14 +35,15 @@ import type { EuropePmcFullTextResult, EuropePmcRecordRef, EuropePmcRelatedResul
|
|
|
31
35
|
* - `citations()` / `references()` — EPMC's link graph for a PubMed article.
|
|
32
36
|
*
|
|
33
37
|
* All honor `ctx.signal` for cancellation and retry transient failures with
|
|
34
|
-
* capped exponential backoff plus jitter
|
|
38
|
+
* capped exponential backoff plus jitter, each attempt paced through the shared
|
|
39
|
+
* request queue.
|
|
35
40
|
*/
|
|
36
41
|
export declare class EuropePmcService {
|
|
37
42
|
private readonly client;
|
|
38
43
|
private readonly queue;
|
|
39
44
|
private readonly maxRetries;
|
|
40
45
|
private readonly orderedXmlParser;
|
|
41
|
-
constructor(client: EuropePmcApiClient, queue:
|
|
46
|
+
constructor(client: EuropePmcApiClient, queue: Pacer, maxRetries: number);
|
|
42
47
|
/**
|
|
43
48
|
* Search Europe PMC. Cursor-based pagination — pass `cursorMark: '*'` (or
|
|
44
49
|
* omit) for the first page; pass the returned `nextCursorMark` for the next.
|
|
@@ -117,16 +122,17 @@ export declare class EuropePmcService {
|
|
|
117
122
|
*/
|
|
118
123
|
parseFullTextXml(xml: string): JatsNode | undefined;
|
|
119
124
|
/**
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
* the
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
125
|
+
* Runs one Europe PMC call: a retry loop around the shared request queue, so
|
|
126
|
+
* every attempt re-queues and is re-paced, and a backoff sleep holds no queue
|
|
127
|
+
* slot. No service-level deadline — Europe PMC requests are cheap individually
|
|
128
|
+
* and the caller's signal (typically `ctx.signal`) bounds the total chain; that
|
|
129
|
+
* signal reaches the queue wait and the backoff sleep. `execute` receives the
|
|
130
|
+
* one-based attempt number.
|
|
131
|
+
*
|
|
132
|
+
* A caller abort rethrows the caller's own reason; an exhausted failure is
|
|
133
|
+
* reshaped by {@link toServiceError}, after the loop.
|
|
128
134
|
*/
|
|
129
|
-
private
|
|
135
|
+
private runPaced;
|
|
130
136
|
}
|
|
131
137
|
/**
|
|
132
138
|
* Initialize the Europe PMC service when enabled. Safe to call regardless of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"europe-pmc-service.d.ts","sourceRoot":"","sources":["../../../src/services/europe-pmc/europe-pmc-service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"europe-pmc-service.d.ts","sourceRoot":"","sources":["../../../src/services/europe-pmc/europe-pmc-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,OAAO,EAGL,KAAK,KAAK,EAGX,MAAM,8BAA8B,CAAC;AAOtC,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,4CAA4C,CAAC;AAEzF,OAAO,EAAoB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EACV,uBAAuB,EAEvB,kBAAkB,EAElB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EAErB,qBAAqB,EACrB,eAAe,EAChB,MAAM,YAAY,CAAC;AA2FpB;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IAE7C,YACmB,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,EAQpC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAIpE;IAED;;;;OAIG;YACW,UAAU;IAwHxB;;;;;;;;;;OAUG;IACG,YAAY,CAChB,IAAI,EAAE,SAAS,kBAAkB,EAAE,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAQ/B;IAED;;;;;;;OAOG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,uBAAuB,CAAC,CASlC;IAED;;;;;;;;;;OAUG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAQjC;IAED;;;;;;;;;;OAUG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,sBAAsB,CAAC,CAQjC;IAED;;;;;OAKG;YACW,iBAAiB;IAkE/B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CA8BlD;IAED;;;;;;;;;;OAUG;YACW,QAAQ;CA0CvB;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAyB3C;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,SAAS,CAElE"}
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* from the same `ORDERED_XML_PARSER_OPTIONS` NCBI's ordered parser uses, so
|
|
8
8
|
* `parsePmcArticle` consumes the result without modification.
|
|
9
9
|
*
|
|
10
|
+
* Every call runs as a retry loop around the shared request queue: each attempt
|
|
11
|
+
* re-enters the queue and waits out its start gap, and a backoff sleep holds no
|
|
12
|
+
* concurrency slot, so callers backing off never stall the calls behind them.
|
|
13
|
+
*
|
|
10
14
|
* A search's retry boundary covers fetch and response classification, so
|
|
11
15
|
* Europe PMC's intermittent empty `{ version }` envelope is retried like an
|
|
12
16
|
* HTTP outage; only a sort or cursor that explains it is reported as bad input.
|
|
@@ -19,8 +23,8 @@
|
|
|
19
23
|
*
|
|
20
24
|
* @module src/services/europe-pmc/europe-pmc-service
|
|
21
25
|
*/
|
|
22
|
-
import {
|
|
23
|
-
import { defaultIsTransient, logger, requestContextService } from '@cyanheads/mcp-ts-core/utils';
|
|
26
|
+
import { JsonRpcErrorCode, McpError, serializationError, serviceUnavailable, validationError, } from '@cyanheads/mcp-ts-core/errors';
|
|
27
|
+
import { defaultIsTransient, logger, requestContextService, withRetry, } from '@cyanheads/mcp-ts-core/utils';
|
|
24
28
|
// biome-ignore lint/suspicious/noDeprecatedImports: staying on in-tree XMLValidator — see ncbi/response-handler.ts
|
|
25
29
|
import { XMLParser, XMLValidator } from 'fast-xml-parser';
|
|
26
30
|
import { getServerConfig } from '../../config/server-config.js';
|
|
@@ -28,24 +32,38 @@ import { recoveryFor } from '../error-contracts.js';
|
|
|
28
32
|
import { ORDERED_XML_PARSER_OPTIONS } from '../ncbi/parsing/ordered-xml-parser-options.js';
|
|
29
33
|
import { ensureArray } from '../ncbi/parsing/xml-helpers.js';
|
|
30
34
|
import { buildSearchQuery, EuropePmcApiClient } from './api-client.js';
|
|
31
|
-
import {
|
|
35
|
+
import { createEuropePmcRequestQueue } from './request-queue.js';
|
|
36
|
+
/** Ceiling on one backoff sleep, so a high retry count cannot grow it without bound. */
|
|
32
37
|
const MAX_BACKOFF_MS = 30_000;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Retry gate: the framework's transient set, narrowed to `McpError`s. The client
|
|
40
|
+
* classifies every upstream failure, so a plain `Error` reaching the loop is a defect
|
|
41
|
+
* or a response that cannot parse — retrying it only repeats it.
|
|
42
|
+
*/
|
|
43
|
+
const isTransient = (error) => error instanceof McpError && defaultIsTransient(error);
|
|
44
|
+
/**
|
|
45
|
+
* Reshapes an error whose retries ran out: the last attempt's code and message with
|
|
46
|
+
* the attempt count appended, `label`, `attempts`, and the upstream `retryAfter`, so a
|
|
47
|
+
* 429 still tells the caller how long to wait. Only a `ServiceUnavailable` gains
|
|
48
|
+
* `europepmc_unreachable` and its hint; a `Timeout` or `RateLimited` keeps its code
|
|
49
|
+
* with no reason, as the NCBI service reports them. Anything never retried — a
|
|
50
|
+
* non-transient failure, or a `Retry-After` longer than the backoff cap — passes
|
|
51
|
+
* through unchanged.
|
|
52
|
+
*/
|
|
53
|
+
function toServiceError(error, label) {
|
|
54
|
+
if (!(error instanceof McpError) || typeof error.data?.retryAttempts !== 'number')
|
|
55
|
+
return error;
|
|
56
|
+
const last = error.cause instanceof McpError ? error.cause : error;
|
|
57
|
+
const attempts = error.data.retryAttempts;
|
|
58
|
+
return new McpError(error.code, `${last.message} (failed after ${attempts} attempts)`, {
|
|
59
|
+
...(error.code === JsonRpcErrorCode.ServiceUnavailable && {
|
|
60
|
+
reason: 'europepmc_unreachable',
|
|
61
|
+
...recoveryFor('europepmc_unreachable'),
|
|
62
|
+
}),
|
|
63
|
+
label,
|
|
64
|
+
attempts,
|
|
65
|
+
...(last.data?.retryAfter !== undefined && { retryAfter: last.data.retryAfter }),
|
|
66
|
+
}, { cause: last });
|
|
49
67
|
}
|
|
50
68
|
/**
|
|
51
69
|
* Europe PMC lookup clause for one record addressed by `source` + EPMC id.
|
|
@@ -99,7 +117,8 @@ function sortExplainsEnvelope(sort) {
|
|
|
99
117
|
* - `citations()` / `references()` — EPMC's link graph for a PubMed article.
|
|
100
118
|
*
|
|
101
119
|
* All honor `ctx.signal` for cancellation and retry transient failures with
|
|
102
|
-
* capped exponential backoff plus jitter
|
|
120
|
+
* capped exponential backoff plus jitter, each attempt paced through the shared
|
|
121
|
+
* request queue.
|
|
103
122
|
*/
|
|
104
123
|
export class EuropePmcService {
|
|
105
124
|
client;
|
|
@@ -126,7 +145,7 @@ export class EuropePmcService {
|
|
|
126
145
|
* rather than surfacing after the loop has already returned. (#159)
|
|
127
146
|
*/
|
|
128
147
|
search(params) {
|
|
129
|
-
return this.
|
|
148
|
+
return this.runPaced('search', params.signal, (attempt) => this.searchOnce(params, attempt === this.maxRetries + 1));
|
|
130
149
|
}
|
|
131
150
|
/**
|
|
132
151
|
* One search attempt: fetch, parse, and classify the body. `isLastAttempt`
|
|
@@ -256,7 +275,7 @@ export class EuropePmcService {
|
|
|
256
275
|
* publishes no fullTextXML (404 or empty body).
|
|
257
276
|
*/
|
|
258
277
|
async fullTextXml(epmcId, source, signal) {
|
|
259
|
-
const outcome = await this.
|
|
278
|
+
const outcome = await this.runPaced(`fullTextXml(${epmcId})`, signal, () => this.client.fullTextXml(epmcId, signal));
|
|
260
279
|
if (outcome.kind === 'not-available') {
|
|
261
280
|
return { kind: 'not-available', reason: outcome.reason };
|
|
262
281
|
}
|
|
@@ -297,7 +316,7 @@ export class EuropePmcService {
|
|
|
297
316
|
* upstream row count and the PubMed-addressable set they actually get back.
|
|
298
317
|
*/
|
|
299
318
|
async fetchRelatedLinks(fetch, kind, pmid, extractRecords, signal) {
|
|
300
|
-
const text = await this.
|
|
319
|
+
const text = await this.runPaced(`${kind}(${pmid})`, signal, fetch);
|
|
301
320
|
let parsed;
|
|
302
321
|
try {
|
|
303
322
|
parsed = JSON.parse(text);
|
|
@@ -385,53 +404,49 @@ export class EuropePmcService {
|
|
|
385
404
|
return nodes.find((n) => 'article' in n);
|
|
386
405
|
}
|
|
387
406
|
/**
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
* the
|
|
392
|
-
*
|
|
393
|
-
*
|
|
394
|
-
*
|
|
395
|
-
*
|
|
407
|
+
* Runs one Europe PMC call: a retry loop around the shared request queue, so
|
|
408
|
+
* every attempt re-queues and is re-paced, and a backoff sleep holds no queue
|
|
409
|
+
* slot. No service-level deadline — Europe PMC requests are cheap individually
|
|
410
|
+
* and the caller's signal (typically `ctx.signal`) bounds the total chain; that
|
|
411
|
+
* signal reaches the queue wait and the backoff sleep. `execute` receives the
|
|
412
|
+
* one-based attempt number.
|
|
413
|
+
*
|
|
414
|
+
* A caller abort rethrows the caller's own reason; an exhausted failure is
|
|
415
|
+
* reshaped by {@link toServiceError}, after the loop.
|
|
396
416
|
*/
|
|
397
|
-
async
|
|
398
|
-
|
|
417
|
+
async runPaced(label, signal, execute) {
|
|
418
|
+
let attempt = 0;
|
|
419
|
+
try {
|
|
420
|
+
return await withRetry(({ signal: attemptSignal }) => {
|
|
421
|
+
const current = ++attempt;
|
|
422
|
+
return this.queue
|
|
423
|
+
.run(() => execute(current), { signal: attemptSignal })
|
|
424
|
+
.catch((error) => {
|
|
425
|
+
if (current <= this.maxRetries && isTransient(error)) {
|
|
426
|
+
logger.warning(`Europe PMC ${label} failed on attempt ${current} of ${this.maxRetries + 1}.`, requestContextService.createRequestContext({
|
|
427
|
+
operation: 'EuropePmcRetry',
|
|
428
|
+
additionalContext: {
|
|
429
|
+
label,
|
|
430
|
+
attempt: current,
|
|
431
|
+
error: error instanceof Error ? error.message : String(error),
|
|
432
|
+
},
|
|
433
|
+
}));
|
|
434
|
+
}
|
|
435
|
+
throw error;
|
|
436
|
+
});
|
|
437
|
+
}, {
|
|
438
|
+
maxRetries: this.maxRetries,
|
|
439
|
+
maxDelayMs: MAX_BACKOFF_MS,
|
|
440
|
+
isTransient,
|
|
441
|
+
operation: `Europe PMC ${label}`,
|
|
442
|
+
...(signal && { signal }),
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
catch (error) {
|
|
399
446
|
if (signal?.aborted)
|
|
400
447
|
throw signal.reason;
|
|
401
|
-
|
|
402
|
-
return await execute(attempt);
|
|
403
|
-
}
|
|
404
|
-
catch (error) {
|
|
405
|
-
if (signal?.aborted)
|
|
406
|
-
throw signal.reason;
|
|
407
|
-
if (!(error instanceof McpError))
|
|
408
|
-
throw error;
|
|
409
|
-
if (!defaultIsTransient(error))
|
|
410
|
-
throw error;
|
|
411
|
-
if (attempt < this.maxRetries) {
|
|
412
|
-
const baseDelay = Math.min(1000 * 2 ** attempt, MAX_BACKOFF_MS);
|
|
413
|
-
const jitter = baseDelay * (0.75 + 0.5 * Math.random());
|
|
414
|
-
const retryDelay = Math.round(jitter);
|
|
415
|
-
logger.warning(`Europe PMC ${label} failed. Retrying (${attempt + 1}/${this.maxRetries}) in ${retryDelay}ms.`, requestContextService.createRequestContext({
|
|
416
|
-
operation: 'EuropePmcRetry',
|
|
417
|
-
additionalContext: { label, attempt: attempt + 1, retryDelay },
|
|
418
|
-
}));
|
|
419
|
-
await abortableSleep(retryDelay, signal);
|
|
420
|
-
continue;
|
|
421
|
-
}
|
|
422
|
-
const attempts = this.maxRetries + 1;
|
|
423
|
-
throw new McpError(error.code, `${error.message} (failed after ${attempts} attempts)`, {
|
|
424
|
-
...(error.code === JsonRpcErrorCode.ServiceUnavailable && {
|
|
425
|
-
reason: 'europepmc_unreachable',
|
|
426
|
-
...recoveryFor('europepmc_unreachable'),
|
|
427
|
-
}),
|
|
428
|
-
label,
|
|
429
|
-
attempts,
|
|
430
|
-
...(error.data?.retryAfter !== undefined && { retryAfter: error.data.retryAfter }),
|
|
431
|
-
}, { cause: error });
|
|
432
|
-
}
|
|
448
|
+
throw toServiceError(error, label);
|
|
433
449
|
}
|
|
434
|
-
throw internalError('Europe PMC request failed after all retries.', { label });
|
|
435
450
|
}
|
|
436
451
|
}
|
|
437
452
|
// ─── Init / Accessor ────────────────────────────────────────────────────────
|
|
@@ -451,7 +466,7 @@ export function initEuropePmcService() {
|
|
|
451
466
|
timeoutMs: config.europepmcTimeoutMs,
|
|
452
467
|
...(config.europepmcEmail && { email: config.europepmcEmail }),
|
|
453
468
|
});
|
|
454
|
-
const queue =
|
|
469
|
+
const queue = createEuropePmcRequestQueue(config.europepmcRequestDelayMs);
|
|
455
470
|
_service = new EuropePmcService(client, queue, config.europepmcMaxRetries);
|
|
456
471
|
logger.info('Europe PMC service initialized.', requestContextService.createRequestContext({
|
|
457
472
|
operation: 'EuropePmcInit',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"europe-pmc-service.js","sourceRoot":"","sources":["../../../src/services/europe-pmc/europe-pmc-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"europe-pmc-service.js","sourceRoot":"","sources":["../../../src/services/europe-pmc/europe-pmc-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
3
|
-
* concurrent in-flight requests and
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* @fileoverview Request queue for Europe PMC calls, built on the framework pacer.
|
|
3
|
+
* Caps concurrent in-flight requests and spaces request starts to stay polite with
|
|
4
|
+
* EBI's infrastructure, and releases a waiting caller the moment its signal aborts.
|
|
5
|
+
* Each retry attempt re-enters the queue, so a backoff sleep holds no slot and every
|
|
6
|
+
* attempt waits out the start gap. Independent rate domain from NCBI's queue —
|
|
7
|
+
* Europe PMC runs on a different host with its own limits.
|
|
7
8
|
* @module src/services/europe-pmc/request-queue
|
|
8
9
|
*/
|
|
10
|
+
import { type Pacer } from '@cyanheads/mcp-ts-core/utils';
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* dispatch times. Defaults to 200ms to be polite with EBI.
|
|
14
|
-
* - **Concurrency** (`maxConcurrent`): maximum simultaneous in-flight
|
|
15
|
-
* requests. Decouples concurrency from rate so slow upstream responses
|
|
16
|
-
* don't block new dispatches.
|
|
17
|
-
*
|
|
18
|
-
* Enqueue accepts an optional `AbortSignal` so callers can bound their total
|
|
19
|
-
* time inside the scheduler — when the signal fires, a still-waiting task
|
|
20
|
-
* rejects immediately instead of sitting behind a saturated worker.
|
|
12
|
+
* Creates the pacer every Europe PMC call runs through. No queue-depth cap and no
|
|
13
|
+
* wait budget: a caller waits for its turn rather than being shed, so the pacer never
|
|
14
|
+
* rejects on its own — only the caller's signal ends a wait early.
|
|
21
15
|
*/
|
|
22
|
-
export declare
|
|
23
|
-
private readonly waiters;
|
|
24
|
-
private readonly minStartGapMs;
|
|
25
|
-
private readonly maxConcurrent;
|
|
26
|
-
private inFlight;
|
|
27
|
-
private lastStartTime;
|
|
28
|
-
private nextDispatchTimer;
|
|
29
|
-
constructor(minStartGapMs: number, maxConcurrent?: number);
|
|
30
|
-
enqueue<T>(task: () => Promise<T>, label: string, signal?: AbortSignal): Promise<T>;
|
|
31
|
-
private tryDispatch;
|
|
32
|
-
}
|
|
16
|
+
export declare function createEuropePmcRequestQueue(minStartGapMs: number): Pacer;
|
|
33
17
|
//# sourceMappingURL=request-queue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-queue.d.ts","sourceRoot":"","sources":["../../../src/services/europe-pmc/request-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"request-queue.d.ts","sourceRoot":"","sources":["../../../src/services/europe-pmc/request-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAQvE;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,CAExE"}
|
|
@@ -1,111 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
3
|
-
* concurrent in-flight requests and
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* @fileoverview Request queue for Europe PMC calls, built on the framework pacer.
|
|
3
|
+
* Caps concurrent in-flight requests and spaces request starts to stay polite with
|
|
4
|
+
* EBI's infrastructure, and releases a waiting caller the moment its signal aborts.
|
|
5
|
+
* Each retry attempt re-enters the queue, so a backoff sleep holds no slot and every
|
|
6
|
+
* attempt waits out the start gap. Independent rate domain from NCBI's queue —
|
|
7
|
+
* Europe PMC runs on a different host with its own limits.
|
|
7
8
|
* @module src/services/europe-pmc/request-queue
|
|
8
9
|
*/
|
|
9
|
-
import {
|
|
10
|
-
const DEFAULT_MAX_CONCURRENT = 4;
|
|
10
|
+
import { createPacer } from '@cyanheads/mcp-ts-core/utils';
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* - **Throughput** (`minStartGapMs`): minimum delay between two consecutive
|
|
15
|
-
* dispatch times. Defaults to 200ms to be polite with EBI.
|
|
16
|
-
* - **Concurrency** (`maxConcurrent`): maximum simultaneous in-flight
|
|
17
|
-
* requests. Decouples concurrency from rate so slow upstream responses
|
|
18
|
-
* don't block new dispatches.
|
|
19
|
-
*
|
|
20
|
-
* Enqueue accepts an optional `AbortSignal` so callers can bound their total
|
|
21
|
-
* time inside the scheduler — when the signal fires, a still-waiting task
|
|
22
|
-
* rejects immediately instead of sitting behind a saturated worker.
|
|
12
|
+
* Europe PMC requests in flight at once. `pubmed_fetch_fulltext` fans its Europe PMC
|
|
13
|
+
* tier out over every candidate in parallel and relies on this cap to bound it.
|
|
23
14
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this.minStartGapMs = minStartGapMs;
|
|
33
|
-
this.maxConcurrent = maxConcurrent;
|
|
34
|
-
}
|
|
35
|
-
enqueue(task, label, signal) {
|
|
36
|
-
return new Promise((resolve, reject) => {
|
|
37
|
-
if (signal?.aborted) {
|
|
38
|
-
reject(signal.reason);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const waiter = {
|
|
42
|
-
resolve,
|
|
43
|
-
reject,
|
|
44
|
-
task,
|
|
45
|
-
label,
|
|
46
|
-
...(signal && { signal }),
|
|
47
|
-
};
|
|
48
|
-
if (signal) {
|
|
49
|
-
const onAbort = () => {
|
|
50
|
-
const idx = this.waiters.indexOf(waiter);
|
|
51
|
-
if (idx === -1)
|
|
52
|
-
return;
|
|
53
|
-
this.waiters.splice(idx, 1);
|
|
54
|
-
reject(signal.reason);
|
|
55
|
-
};
|
|
56
|
-
waiter.onAbort = onAbort;
|
|
57
|
-
signal.addEventListener('abort', onAbort, { once: true });
|
|
58
|
-
}
|
|
59
|
-
this.waiters.push(waiter);
|
|
60
|
-
this.tryDispatch();
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
tryDispatch() {
|
|
64
|
-
if (this.nextDispatchTimer !== undefined)
|
|
65
|
-
return;
|
|
66
|
-
while (this.inFlight < this.maxConcurrent && this.waiters.length > 0) {
|
|
67
|
-
const now = Date.now();
|
|
68
|
-
const gap = this.minStartGapMs - (now - this.lastStartTime);
|
|
69
|
-
if (gap > 0) {
|
|
70
|
-
this.nextDispatchTimer = setTimeout(() => {
|
|
71
|
-
this.nextDispatchTimer = undefined;
|
|
72
|
-
this.tryDispatch();
|
|
73
|
-
}, gap);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const waiter = this.waiters.shift();
|
|
77
|
-
if (!waiter)
|
|
78
|
-
return;
|
|
79
|
-
if (waiter.signal && waiter.onAbort) {
|
|
80
|
-
waiter.signal.removeEventListener('abort', waiter.onAbort);
|
|
81
|
-
}
|
|
82
|
-
this.lastStartTime = Date.now();
|
|
83
|
-
this.inFlight += 1;
|
|
84
|
-
logger.debug(`Executing Europe PMC request via queue: ${waiter.label}`, requestContextService.createRequestContext({
|
|
85
|
-
operation: 'EuropePmcQueueDispatch',
|
|
86
|
-
additionalContext: {
|
|
87
|
-
label: waiter.label,
|
|
88
|
-
inFlight: this.inFlight,
|
|
89
|
-
queueDepth: this.waiters.length,
|
|
90
|
-
},
|
|
91
|
-
}));
|
|
92
|
-
Promise.resolve()
|
|
93
|
-
.then(() => waiter.task())
|
|
94
|
-
.then(waiter.resolve, (err) => {
|
|
95
|
-
logger.error('Error processing Europe PMC request from queue.', requestContextService.createRequestContext({
|
|
96
|
-
operation: 'EuropePmcQueueProcess',
|
|
97
|
-
additionalContext: {
|
|
98
|
-
label: waiter.label,
|
|
99
|
-
errorMessage: err instanceof Error ? err.message : String(err),
|
|
100
|
-
},
|
|
101
|
-
}));
|
|
102
|
-
waiter.reject(err);
|
|
103
|
-
})
|
|
104
|
-
.finally(() => {
|
|
105
|
-
this.inFlight -= 1;
|
|
106
|
-
this.tryDispatch();
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
15
|
+
const MAX_CONCURRENT = 4;
|
|
16
|
+
/**
|
|
17
|
+
* Creates the pacer every Europe PMC call runs through. No queue-depth cap and no
|
|
18
|
+
* wait budget: a caller waits for its turn rather than being shed, so the pacer never
|
|
19
|
+
* rejects on its own — only the caller's signal ends a wait early.
|
|
20
|
+
*/
|
|
21
|
+
export function createEuropePmcRequestQueue(minStartGapMs) {
|
|
22
|
+
return createPacer({ name: 'europepmc', minStartGapMs, maxConcurrent: MAX_CONCURRENT });
|
|
110
23
|
}
|
|
111
24
|
//# sourceMappingURL=request-queue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-queue.js","sourceRoot":"","sources":["../../../src/services/europe-pmc/request-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"request-queue.js","sourceRoot":"","sources":["../../../src/services/europe-pmc/request-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAc,MAAM,8BAA8B,CAAC;AAEvE;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,aAAqB;IAC/D,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
* never minted — and counted, so callers can disclose the shortfall instead of
|
|
13
13
|
* serving an unexplained empty window.
|
|
14
14
|
*
|
|
15
|
+
* Transient failures retry with capped exponential backoff. Once retries run
|
|
16
|
+
* out, only a `ServiceUnavailable` is reported as `openalex_unreachable`; a
|
|
17
|
+
* `Timeout` or `RateLimited` keeps its own code and any upstream `retryAfter`.
|
|
18
|
+
*
|
|
15
19
|
* Uses the NCBI_ADMIN_EMAIL config (adminEmail) as the OpenAlex polite-pool
|
|
16
20
|
* `mailto=` parameter when set; omits it when unset.
|
|
17
21
|
*
|
|
@@ -64,7 +68,13 @@ export declare class OpenAlexService {
|
|
|
64
68
|
* the walk never reached is flagged rather than served as a silent empty.
|
|
65
69
|
*/
|
|
66
70
|
private finish;
|
|
67
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Retry wrapper for transient errors. On exhaustion the last error keeps its
|
|
73
|
+
* code and an upstream `retryAfter`, so a 429 still tells the caller how long to
|
|
74
|
+
* wait. Only a `ServiceUnavailable` gains `openalex_unreachable` and its hint — the
|
|
75
|
+
* one code that reason is declared for; a `Timeout` or `RateLimited` keeps its
|
|
76
|
+
* code with no reason, as the NCBI and Europe PMC services report them.
|
|
77
|
+
*/
|
|
68
78
|
private withRetry;
|
|
69
79
|
}
|
|
70
80
|
/** Initialize the OpenAlex service. Call from `setup()` in createApp. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openalex-service.d.ts","sourceRoot":"","sources":["../../../src/services/openalex/openalex-service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openalex-service.d.ts","sourceRoot":"","sources":["../../../src/services/openalex/openalex-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAIL,KAAK,qBAAqB,EAE3B,MAAM,YAAY,CAAC;AA4EpB,gFAAgF;AAChF,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAF7B,YACmB,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,MAAM,EACjC;IAEJ;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAW3F;IAED;;;;;;;;OAQG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4B3F;IAED;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAW9F;IAED,8EAA8E;IAC9E,OAAO,CAAC,SAAS;IAQjB;;;;;;;;;OASG;YACW,iBAAiB;IAiC/B;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAcd;;;;;;OAMG;YACW,SAAS;CAkDxB;AAMD,yEAAyE;AACzE,wBAAgB,mBAAmB,IAAI,IAAI,CAmB1C;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,eAAe,CAIpD;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,IAAI,eAAe,GAAG,SAAS,CAExE"}
|
|
@@ -12,12 +12,16 @@
|
|
|
12
12
|
* never minted — and counted, so callers can disclose the shortfall instead of
|
|
13
13
|
* serving an unexplained empty window.
|
|
14
14
|
*
|
|
15
|
+
* Transient failures retry with capped exponential backoff. Once retries run
|
|
16
|
+
* out, only a `ServiceUnavailable` is reported as `openalex_unreachable`; a
|
|
17
|
+
* `Timeout` or `RateLimited` keeps its own code and any upstream `retryAfter`.
|
|
18
|
+
*
|
|
15
19
|
* Uses the NCBI_ADMIN_EMAIL config (adminEmail) as the OpenAlex polite-pool
|
|
16
20
|
* `mailto=` parameter when set; omits it when unset.
|
|
17
21
|
*
|
|
18
22
|
* @module src/services/openalex/openalex-service
|
|
19
23
|
*/
|
|
20
|
-
import { internalError, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
24
|
+
import { internalError, JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
21
25
|
import { defaultIsTransient, logger, requestContextService } from '@cyanheads/mcp-ts-core/utils';
|
|
22
26
|
import { getServerConfig } from '../../config/server-config.js';
|
|
23
27
|
import { recoveryFor } from '../error-contracts.js';
|
|
@@ -198,7 +202,13 @@ export class OpenAlexService {
|
|
|
198
202
|
reachCapped: !exhausted && collector.pmids.length < n,
|
|
199
203
|
};
|
|
200
204
|
}
|
|
201
|
-
/**
|
|
205
|
+
/**
|
|
206
|
+
* Retry wrapper for transient errors. On exhaustion the last error keeps its
|
|
207
|
+
* code and an upstream `retryAfter`, so a 429 still tells the caller how long to
|
|
208
|
+
* wait. Only a `ServiceUnavailable` gains `openalex_unreachable` and its hint — the
|
|
209
|
+
* one code that reason is declared for; a `Timeout` or `RateLimited` keeps its
|
|
210
|
+
* code with no reason, as the NCBI and Europe PMC services report them.
|
|
211
|
+
*/
|
|
202
212
|
async withRetry(execute, label, signal) {
|
|
203
213
|
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
204
214
|
if (signal?.aborted)
|
|
@@ -225,19 +235,18 @@ export class OpenAlexService {
|
|
|
225
235
|
continue;
|
|
226
236
|
}
|
|
227
237
|
const attempts = this.maxRetries + 1;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
238
|
+
throw new McpError(error.code, `${error.message} (failed after ${attempts} attempts)`, {
|
|
239
|
+
...(error.code === JsonRpcErrorCode.ServiceUnavailable && {
|
|
240
|
+
reason: 'openalex_unreachable',
|
|
241
|
+
...recoveryFor('openalex_unreachable'),
|
|
242
|
+
}),
|
|
231
243
|
label,
|
|
232
244
|
attempts,
|
|
233
|
-
...
|
|
245
|
+
...(error.data?.retryAfter !== undefined && { retryAfter: error.data.retryAfter }),
|
|
234
246
|
}, { cause: error });
|
|
235
247
|
}
|
|
236
248
|
}
|
|
237
|
-
throw internalError('OpenAlex request failed after all retries.', {
|
|
238
|
-
reason: 'openalex_unreachable',
|
|
239
|
-
...recoveryFor('openalex_unreachable'),
|
|
240
|
-
});
|
|
249
|
+
throw internalError('OpenAlex request failed after all retries.', { label });
|
|
241
250
|
}
|
|
242
251
|
}
|
|
243
252
|
// ─── Init / Accessor ────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openalex-service.js","sourceRoot":"","sources":["../../../src/services/openalex/openalex-service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openalex-service.js","sourceRoot":"","sources":["../../../src/services/openalex/openalex-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,GAG/B,MAAM,YAAY,CAAC;AAEpB,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,mEAAmE;AACnE,SAAS,QAAQ,CAAC,EAAU;IAC1B,OAAO,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,cAAc,CAAC,EAAU,EAAE,MAAoB;IACtD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAkB;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,gFAAgF;IAChF,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,aAAa;IAKY,WAAW;IAJ/B,KAAK,GAAa,EAAE,CAAC;IAC9B,aAAa,GAAG,CAAC,CAAC;IACD,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,YAA6B,WAAmB;2BAAnB,WAAW;IAAW,CAAC;IAEpD;;;OAGG;IACH,GAAG,CAAC,IAA8B;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC7D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,OAAO,eAAe;IAEP,MAAM;IACN,UAAU;IAF7B,YACmB,MAAyB,EACzB,UAAkB;sBADlB,MAAM;0BACN,UAAU;IAC1B,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,CAAS,EAAE,MAAoB;QACzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,WAAW,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,iBAAiB,CAC3B,IAAI,EACJ,IAAI,CAAC,aAAa,IAAI,EAAE,EACxB,CAAC,EACD,uBAAuB,IAAI,GAAG,EAC9B,MAAM,CACP,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,CAAS,EAAE,MAAoB;QACzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,WAAW,EAAE,CAAC;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KACE,IAAI,IAAI,GAAG,CAAC,EACZ,IAAI,IAAI,8BAA8B,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EACpE,IAAI,EAAE,EACN,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAChD,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,EAC5D,cAAc,IAAI,CAAC,EAAE,UAAU,IAAI,GAAG,EACtC,MAAM,CACP,CAAC;YACF,aAAa,GAAG,UAAU,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;gBAC3D,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,CAAS,EAAE,MAAoB;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,WAAW,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,iBAAiB,CAC3B,IAAI,EACJ,IAAI,CAAC,gBAAgB,IAAI,EAAE,EAC3B,CAAC,EACD,0BAA0B,IAAI,GAAG,EACjC,MAAM,CACP,CAAC;IACJ,CAAC;IAED,8EAA8E;IACtE,SAAS,CAAC,IAAY,EAAE,MAAoB;QAClD,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAC7C,iBAAiB,IAAI,GAAG,EACxB,MAAM,CACP,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,iBAAiB,CAC7B,IAAY,EACZ,KAAe,EACf,CAAS,EACT,KAAa,EACb,MAAoB;QAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,WAAW,EAAE,CAAC;QAE7C,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,8BAA8B;YACtC,QAAQ,GAAG,KAAK,CAAC,MAAM;YACvB,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAC1B,KAAK,EAAE,EACP,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,0BAA0B,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CACnC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,EAClD,KAAK,EACL,MAAM,CACP,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,EAAE,IAAI,GAAG;gBAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5D,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACK,MAAM,CACZ,SAAwB,EACxB,SAAkB,EAClB,aAAqB,EACrB,CAAS;QAET,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;YAC9D,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,WAAW,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;SACtD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,SAAS,CACrB,OAAyB,EACzB,KAAa,EACb,MAAoB;QAEpB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,MAAM,CAAC,MAAM,CAAC;YAEzC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,MAAM,EAAE,OAAO;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC;gBACzC,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAE5C,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,EAAE,cAAc,CAAC,CAAC;oBAChE,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM,CAAC,OAAO,CACZ,YAAY,KAAK,sBAAsB,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,QAAQ,UAAU,KAAK,EAC5F,qBAAqB,CAAC,oBAAoB,CAAC;wBACzC,SAAS,EAAE,eAAe;wBAC1B,iBAAiB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,UAAU,EAAE;qBAC/D,CAAC,CACH,CAAC;oBACF,MAAM,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBACzC,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACrC,MAAM,IAAI,QAAQ,CAChB,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,OAAO,kBAAkB,QAAQ,YAAY,EACtD;oBACE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,kBAAkB,IAAI;wBACxD,MAAM,EAAE,sBAAsB;wBAC9B,GAAG,WAAW,CAAC,sBAAsB,CAAC;qBACvC,CAAC;oBACF,KAAK;oBACL,QAAQ;oBACR,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;iBACnF,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;CACF;AAED,+EAA+E;AAE/E,IAAI,QAAqC,CAAC;AAE1C,yEAAyE;AACzE,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC,kBAAkB,EAAE,+CAA+C;QACrF,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;KACvD,CAAC,CAAC;IACH,2DAA2D;IAC3D,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,CACT,+BAA+B,EAC/B,qBAAqB,CAAC,oBAAoB,CAAC;QACzC,SAAS,EAAE,cAAc;QACzB,iBAAiB,EAAE;YACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,mBAAmB;YACtC,SAAS,EAAE,MAAM,CAAC,kBAAkB;SACrC;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,0BAA0B;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
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.18",
|
|
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",
|
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.18",
|
|
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.18",
|
|
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.18",
|
|
70
70
|
"packageArguments": [
|
|
71
71
|
{
|
|
72
72
|
"type": "positional",
|