@djmima/pubmed-mcp 1.0.2 → 1.1.0
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/CHANGELOG.md +22 -1
- package/README.md +10 -10
- package/dist/auth.d.ts +5 -7
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +21 -15
- package/dist/auth.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +3 -5
- package/dist/cli/commands.js.map +1 -1
- package/dist/http.d.ts +20 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +86 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +21 -46
- package/dist/index.js.map +1 -1
- package/dist/pubmed/client.d.ts.map +1 -1
- package/dist/pubmed/client.js +49 -15
- package/dist/pubmed/client.js.map +1 -1
- package/dist/pubmed/types.d.ts +2 -1
- package/dist/pubmed/types.d.ts.map +1 -1
- package/dist/pubmed/types.js +2 -1
- package/dist/pubmed/types.js.map +1 -1
- package/dist/tools/convertArticleIds.d.ts.map +1 -1
- package/dist/tools/convertArticleIds.js +2 -1
- package/dist/tools/convertArticleIds.js.map +1 -1
- package/dist/tools/findRelatedArticles.d.ts +5 -0
- package/dist/tools/findRelatedArticles.d.ts.map +1 -1
- package/dist/tools/findRelatedArticles.js +10 -2
- package/dist/tools/findRelatedArticles.js.map +1 -1
- package/dist/tools/getArticleMetadata.d.ts.map +1 -1
- package/dist/tools/getArticleMetadata.js +2 -1
- package/dist/tools/getArticleMetadata.js.map +1 -1
- package/dist/tools/getCopyrightStatus.d.ts.map +1 -1
- package/dist/tools/getCopyrightStatus.js +2 -1
- package/dist/tools/getCopyrightStatus.js.map +1 -1
- package/dist/tools/getFullTextArticle.d.ts.map +1 -1
- package/dist/tools/getFullTextArticle.js +2 -1
- package/dist/tools/getFullTextArticle.js.map +1 -1
- package/dist/utils/ids.d.ts +17 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +21 -0
- package/dist/utils/ids.js.map +1 -0
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,26 @@
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [1.1.0] - 2026-11-04
|
|
9
|
+
|
|
10
|
+
### 変更
|
|
11
|
+
|
|
12
|
+
- **HTTP モードで `ALLOWED_SUBJECTS` を必須にしました。** 未設定または空のときは起動時に終了します。これまでは空のとき、認可サーバー(WorkOS AuthKit)で有効なトークンを取得できるユーザー全員が `/mcp` を使えました。
|
|
13
|
+
- HTTP モードで、`/mcp` への GET と DELETE に 405 を返すようにしました。ステートレスなサーバーには GET で開く SSE ストリームに送るものがなく、開いたままのストリームがサーバーインスタンスと Cloud Run のリクエストを占有していました。
|
|
14
|
+
|
|
15
|
+
### セキュリティ
|
|
16
|
+
|
|
17
|
+
- MCP サーバーが `.env` を起動時のカレントディレクトリから読み込んでいたのをやめ、パッケージ自身のルート(ソースからビルドした場合はリポジトリ直下)からだけ読み込むようにしました(CLI はもともとこの動作です)。MCP クライアントは開いているプロジェクトのディレクトリでサーバーを起動するため、そのプロジェクトの `.env` に `PORT` があると HTTP モードで起動し、`HTTPS_PROXY` と `NODE_TLS_REJECT_UNAUTHORIZED=0` があると NCBI への通信(API キーを含む)を第三者のプロキシが読み書きできました。
|
|
18
|
+
- ID を受け取るツール(`get_article_metadata`、`find_related_articles`、`get_copyright_status`、`get_full_text_article`、`convert_article_ids`)で、1 つの値に 1 つの ID だけを受け付けるようにしました。NCBI はカンマを ID の区切りとして扱うため、`"1,2,3"` のような値で 1 回あたりの上限を超える件数を取得できました。上限のなかった `find_related_articles` の `pmids` も 200 件までにしました。
|
|
19
|
+
- `lookup_article_by_citation` で、引用の各項目に含まれる `|` と改行を空白に置き換えるようにしました。どちらも ECitMatch の区切り文字なので、項目がずれたり別の引用として送られたりして、結果が別の引用に対応づけられるおそれがありました。
|
|
20
|
+
- NCBI へのリクエストに 60 秒のタイムアウトを設けました。応答のない接続で、ツールの呼び出し(HTTP モードではクライアントのリクエスト)が止まったままになることがなくなります。
|
|
21
|
+
- NCBI へのリクエストがリダイレクトされたときは、HTTPS で `*.ncbi.nlm.nih.gov` に向かうものだけをたどるようにしました。API キーはクエリ文字列に含まれ、リダイレクト先にも引き継がれます。
|
|
22
|
+
- エラーメッセージの中の API キーは、NCBI が返した本文のどこに現れても伏せるようにしました。ネットワークエラーには、API キーを含む axios のエラーオブジェクトを付けないようにしました。
|
|
23
|
+
- HTTP モードで、`exp` と `sub` のないアクセストークンを拒否するようにしました。
|
|
24
|
+
- HTTP モードで、リクエスト本文の JSON をトークンの検証後に解析するようにしました。不正な形式や大きすぎる本文などのエラーには、スタックトレースを含む HTML ではなく JSON を返し、`X-Powered-By` ヘッダーも送らないようにしました。Docker イメージでは `NODE_ENV=production` を設定し、依存パッケージのインストールスクリプトを実行しないようにしました。
|
|
25
|
+
- `@modelcontextprotocol/sdk`、`axios`、`express` の最低バージョンを、既知の脆弱性の修正を含むバージョンに上げました。
|
|
26
|
+
- GitHub Actions のアクションをコミット SHA で固定し、`actions/checkout` が認証情報を `.git` に残さないようにしました。
|
|
27
|
+
|
|
8
28
|
## [1.0.2] - 2026-11-03
|
|
9
29
|
|
|
10
30
|
### 変更
|
|
@@ -29,7 +49,8 @@ npm パッケージ [`@djmima/pubmed-mcp`](https://www.npmjs.com/package/@djmima
|
|
|
29
49
|
- 同じツールをシェルから実行する `pubmed` CLI と、エージェント向けの Skill(`skills/pubmed-cli`)
|
|
30
50
|
- MIT License
|
|
31
51
|
|
|
32
|
-
[Unreleased]: https://github.com/DJMIMA/PubMed_MCP/compare/v1.0
|
|
52
|
+
[Unreleased]: https://github.com/DJMIMA/PubMed_MCP/compare/v1.1.0...HEAD
|
|
53
|
+
[1.1.0]: https://github.com/DJMIMA/PubMed_MCP/compare/v1.0.2...v1.1.0
|
|
33
54
|
[1.0.2]: https://github.com/DJMIMA/PubMed_MCP/compare/v1.0.1...v1.0.2
|
|
34
55
|
[1.0.1]: https://github.com/DJMIMA/PubMed_MCP/compare/v1.0.0...v1.0.1
|
|
35
56
|
[1.0.0]: https://github.com/DJMIMA/PubMed_MCP/releases/tag/v1.0.0
|
package/README.md
CHANGED
|
@@ -119,8 +119,8 @@ With an API key, the rate limit goes from 3 to 8 req/s.
|
|
|
119
119
|
2. Set it in the `NCBI_API_KEY` environment variable (see the client-specific settings below)
|
|
120
120
|
|
|
121
121
|
When an MCP client starts the server locally, pass the key in the `env` section of the client configuration.
|
|
122
|
-
`.env`
|
|
123
|
-
the project
|
|
122
|
+
The server reads `.env` only from its own package root (the repository root if you [built from source](#building-from-source)),
|
|
123
|
+
never from the directory it is started in, so a `.env` in a project open in your MCP client cannot change its settings.
|
|
124
124
|
|
|
125
125
|
Use an API key owned and managed by the person or organization running this server.
|
|
126
126
|
The repository does not ship an API key. When a response includes the `echo` from the NCBI API,
|
|
@@ -279,14 +279,14 @@ PORT=8080 npm run dev
|
|
|
279
279
|
# → http://localhost:8080/health Health check
|
|
280
280
|
```
|
|
281
281
|
|
|
282
|
-
HTTP mode reads `OAUTH_ISSUER`, `OAUTH_JWKS_URL`, and `
|
|
282
|
+
HTTP mode reads `OAUTH_ISSUER`, `OAUTH_JWKS_URL`, `MCP_RESOURCE_URL`, and `ALLOWED_SUBJECTS` at startup, and exits with the following error if any of them is missing:
|
|
283
283
|
|
|
284
284
|
```
|
|
285
285
|
Fatal error: Error: Missing required environment variable: OAUTH_ISSUER
|
|
286
286
|
```
|
|
287
287
|
|
|
288
288
|
Set these values in `.env` before starting (see [Environment variables](#environment-variables) for what each one means).
|
|
289
|
-
To check `/health` or the 401 response, placeholder values in URL form are enough to start the server, but to actually call `/mcp`
|
|
289
|
+
To check `/health` or the 401 response, placeholder values (in URL form for the URLs) are enough to start the server, but to actually call `/mcp`
|
|
290
290
|
you need an access token issued with `MCP_RESOURCE_URL` as its `aud`. To try the tools without authentication, use stdio mode.
|
|
291
291
|
|
|
292
292
|
---
|
|
@@ -543,9 +543,9 @@ gcloud run deploy pubmed-mcp \
|
|
|
543
543
|
| `OAUTH_ISSUER` | The `issuer` from the authorization server metadata. It is compared with the token's `iss` exactly, so copy it as-is, including whether it has a trailing `/` |
|
|
544
544
|
| `OAUTH_JWKS_URL` | The `jwks_uri` from the same metadata: the URL of the public keys used to verify token signatures |
|
|
545
545
|
| `MCP_RESOURCE_URL` | The MCP endpoint URL you decided in step 5. It is compared with the token's `aud`, and published as `resource` in `/.well-known/oauth-protected-resource` |
|
|
546
|
-
| `ALLOWED_SUBJECTS` | A comma-separated list of user IDs (the token's `sub`) allowed to connect.
|
|
546
|
+
| `ALLOWED_SUBJECTS` | A comma-separated list of user IDs (the token's `sub`) allowed to connect. Required: without it, every user who can get a valid token from AuthKit could connect |
|
|
547
547
|
|
|
548
|
-
If any of `OAUTH_ISSUER`, `OAUTH_JWKS_URL`, or `
|
|
548
|
+
If any of `OAUTH_ISSUER`, `OAUTH_JWKS_URL`, `MCP_RESOURCE_URL`, or `ALLOWED_SUBJECTS` is missing, the server exits at startup with
|
|
549
549
|
`Missing required environment variable: ...` and the deployment fails. If it fails, look for this message in the Cloud Run logs
|
|
550
550
|
(if you set the variables in Cloud Console, also check for spaces around the variable names).
|
|
551
551
|
|
|
@@ -620,11 +620,11 @@ curl.exe -i "$CLOUD_RUN_URL/mcp" -X POST -H "Content-Type: application/json" `
|
|
|
620
620
|
|
|
621
621
|
### Step 8 — Add your user ID to ALLOWED_SUBJECTS
|
|
622
622
|
|
|
623
|
-
With Dynamic Client Registration, anyone can register an OAuth client, so
|
|
624
|
-
(
|
|
623
|
+
With Dynamic Client Registration, anyone can register an OAuth client, so `ALLOWED_SUBJECTS` limits which users can connect
|
|
624
|
+
(without it, every user who can log in to AuthKit could use `/mcp`, including third parties if AuthKit allows sign-ups, so the server does not start without it).
|
|
625
625
|
The value is the access token's `sub` (the WorkOS user ID, starting with `user_`).
|
|
626
626
|
|
|
627
|
-
|
|
627
|
+
The server logs the `sub` of users it rejects. So connect once with the placeholder value in place, and find your `sub` in the log entry for the rejected request.
|
|
628
628
|
|
|
629
629
|
1. Connect from claude.ai or another client following [Client connection settings](#client-connection-settings) below, and log in with WorkOS AuthKit.
|
|
630
630
|
Because your `sub` is not in `ALLOWED_SUBJECTS`, the connection fails with 403, and the server logs `[auth] forbidden subject: ...`.
|
|
@@ -796,7 +796,7 @@ The first release is published by hand, because Trusted Publishing can't be conf
|
|
|
796
796
|
| `OAUTH_ISSUER` | Required in HTTP mode | The authorization server's issuer (`issuer` in its metadata). Compared with the token's `iss` |
|
|
797
797
|
| `OAUTH_JWKS_URL` | Required in HTTP mode | The URL of the authorization server's JWKS (`jwks_uri` in the same metadata). Used to verify token signatures |
|
|
798
798
|
| `MCP_RESOURCE_URL` | Required in HTTP mode | The public URL of the MCP endpoint. Compared with the token's `aud`, and published as `resource` in the Protected Resource Metadata |
|
|
799
|
-
| `ALLOWED_SUBJECTS` |
|
|
799
|
+
| `ALLOWED_SUBJECTS` | Required in HTTP mode | A comma-separated list of token `sub` values allowed to connect |
|
|
800
800
|
|
|
801
801
|
`OAUTH_ISSUER`, `OAUTH_JWKS_URL`, `MCP_RESOURCE_URL`, and `ALLOWED_SUBJECTS` are used only in HTTP mode and are not needed in stdio mode.
|
|
802
802
|
See steps 5–8 of [Deploying to Google Cloud Run](#deploying-to-google-cloud-run) for how to choose their values.
|
package/dist/auth.d.ts
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* JWKS (signature, issuer, audience, expiry).
|
|
13
13
|
* 3. Restricts access to an allowlist of token subjects — since DCR lets
|
|
14
14
|
* anyone register a client, this is what makes the server *yours only*.
|
|
15
|
-
*
|
|
15
|
+
* The allowlist is required, so a missing value cannot open the server
|
|
16
|
+
* to everyone who can sign in to the authorization server.
|
|
16
17
|
*
|
|
17
18
|
* Required environment variables (copy issuer/jwks from the provider's
|
|
18
19
|
* https://<your-authkit-domain>/.well-known/oauth-authorization-server ):
|
|
@@ -23,13 +24,10 @@
|
|
|
23
24
|
* https://pubmed-mcp-PROJECT_NUMBER.asia-northeast1.run.app/mcp);
|
|
24
25
|
* used as the expected token `aud` and as the resource
|
|
25
26
|
* identifier
|
|
26
|
-
*
|
|
27
|
-
* Optional:
|
|
28
27
|
* ALLOWED_SUBJECTS — comma-separated token `sub` values (user IDs) permitted
|
|
29
|
-
* to connect.
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* "[auth] forbidden subject: <sub>". Then set the real
|
|
28
|
+
* to connect. To find your own id, deploy with a
|
|
29
|
+
* placeholder value first: rejected subjects are logged
|
|
30
|
+
* as "[auth] forbidden subject: <sub>". Then set the real
|
|
33
31
|
* value with `gcloud run services update --update-env-vars`.
|
|
34
32
|
*/
|
|
35
33
|
import type { Request, Response, NextFunction } from 'express';
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAsB/D,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAM5E;AAID,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
package/dist/auth.js
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* JWKS (signature, issuer, audience, expiry).
|
|
13
13
|
* 3. Restricts access to an allowlist of token subjects — since DCR lets
|
|
14
14
|
* anyone register a client, this is what makes the server *yours only*.
|
|
15
|
-
*
|
|
15
|
+
* The allowlist is required, so a missing value cannot open the server
|
|
16
|
+
* to everyone who can sign in to the authorization server.
|
|
16
17
|
*
|
|
17
18
|
* Required environment variables (copy issuer/jwks from the provider's
|
|
18
19
|
* https://<your-authkit-domain>/.well-known/oauth-authorization-server ):
|
|
@@ -23,23 +24,23 @@
|
|
|
23
24
|
* https://pubmed-mcp-PROJECT_NUMBER.asia-northeast1.run.app/mcp);
|
|
24
25
|
* used as the expected token `aud` and as the resource
|
|
25
26
|
* identifier
|
|
26
|
-
*
|
|
27
|
-
* Optional:
|
|
28
27
|
* ALLOWED_SUBJECTS — comma-separated token `sub` values (user IDs) permitted
|
|
29
|
-
* to connect.
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* "[auth] forbidden subject: <sub>". Then set the real
|
|
28
|
+
* to connect. To find your own id, deploy with a
|
|
29
|
+
* placeholder value first: rejected subjects are logged
|
|
30
|
+
* as "[auth] forbidden subject: <sub>". Then set the real
|
|
33
31
|
* value with `gcloud run services update --update-env-vars`.
|
|
34
32
|
*/
|
|
35
33
|
import { createRemoteJWKSet, jwtVerify } from 'jose';
|
|
36
34
|
const ISSUER = requireEnv('OAUTH_ISSUER');
|
|
37
35
|
const JWKS_URL = requireEnv('OAUTH_JWKS_URL');
|
|
38
36
|
const RESOURCE = requireEnv('MCP_RESOURCE_URL');
|
|
39
|
-
const ALLOWED_SUBJECTS = (
|
|
37
|
+
const ALLOWED_SUBJECTS = requireEnv('ALLOWED_SUBJECTS')
|
|
40
38
|
.split(',')
|
|
41
39
|
.map((s) => s.trim())
|
|
42
40
|
.filter(Boolean);
|
|
41
|
+
if (ALLOWED_SUBJECTS.length === 0) {
|
|
42
|
+
throw new Error('ALLOWED_SUBJECTS must list at least one token subject');
|
|
43
|
+
}
|
|
43
44
|
// Metadata lives at the well-known path on the same origin as the resource.
|
|
44
45
|
const RESOURCE_METADATA_URL = `${originOf(RESOURCE)}/.well-known/oauth-protected-resource`;
|
|
45
46
|
const jwks = createRemoteJWKSet(new URL(JWKS_URL));
|
|
@@ -60,23 +61,28 @@ export async function requireAuth(req, res, next) {
|
|
|
60
61
|
return;
|
|
61
62
|
}
|
|
62
63
|
const token = header.slice('Bearer '.length).trim();
|
|
64
|
+
let subject;
|
|
63
65
|
try {
|
|
64
66
|
const { payload } = await jwtVerify(token, jwks, {
|
|
65
67
|
issuer: ISSUER,
|
|
66
68
|
audience: RESOURCE,
|
|
69
|
+
// jose checks exp only when present; a token without it would never expire.
|
|
70
|
+
requiredClaims: ['exp', 'sub'],
|
|
67
71
|
});
|
|
68
|
-
|
|
69
|
-
// Valid token, but not you. Log the subject so you can allowlist yourself.
|
|
70
|
-
process.stderr.write(`[auth] forbidden subject: ${payload.sub ?? '(none)'}\n`);
|
|
71
|
-
res.status(403).json({ error: 'forbidden' });
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
next();
|
|
72
|
+
subject = String(payload.sub);
|
|
75
73
|
}
|
|
76
74
|
catch (err) {
|
|
77
75
|
process.stderr.write(`[auth] token rejected: ${String(err)}\n`);
|
|
78
76
|
unauthorized(res, 'invalid_token');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (!ALLOWED_SUBJECTS.includes(subject)) {
|
|
80
|
+
// Valid token, but not you. Log the subject so you can allowlist yourself.
|
|
81
|
+
process.stderr.write(`[auth] forbidden subject: ${subject}\n`);
|
|
82
|
+
res.status(403).json({ error: 'forbidden' });
|
|
83
|
+
return;
|
|
79
84
|
}
|
|
85
|
+
next();
|
|
80
86
|
}
|
|
81
87
|
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
82
88
|
/** 401 with the RFC 9728 pointer so the client can discover how to authorize. */
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAiCtD,4EAA4E;AAC5E,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1E;AAgbD,eAAO,MAAM,QAAQ,EAAE,OAAO,EAQ7B,CAAC;AAsGF,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEjD"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { searchArticles, searchArticlesSchema } from '../tools/searchArticles.js';
|
|
13
13
|
import { getArticleMetadata, getArticleMetadataSchema, MAX_METADATA_PMIDS, } from '../tools/getArticleMetadata.js';
|
|
14
|
-
import { findRelatedArticles, findRelatedArticlesSchema, } from '../tools/findRelatedArticles.js';
|
|
14
|
+
import { findRelatedArticles, findRelatedArticlesSchema, MAX_RELATED_PMIDS, } from '../tools/findRelatedArticles.js';
|
|
15
15
|
import { lookupArticleByCitation, lookupArticleByCitationSchema, MAX_CITATIONS, } from '../tools/lookupArticleByCitation.js';
|
|
16
16
|
import { convertArticleIds, convertArticleIdsSchema, MAX_CONVERT_IDS, } from '../tools/convertArticleIds.js';
|
|
17
17
|
import { getFullTextArticle, getFullTextArticleSchema, MAX_FULL_TEXT_IDS, } from '../tools/getFullTextArticle.js';
|
|
@@ -133,8 +133,6 @@ Example:
|
|
|
133
133
|
},
|
|
134
134
|
};
|
|
135
135
|
// ─── related ────────────────────────────────────────────────────────────────
|
|
136
|
-
/** ELink takes the IDs in the URL, so keep each request's list short. */
|
|
137
|
-
const RELATED_BATCH_SIZE = 200;
|
|
138
136
|
const related = {
|
|
139
137
|
name: 'related',
|
|
140
138
|
tool: 'find_related_articles',
|
|
@@ -146,7 +144,7 @@ const related = {
|
|
|
146
144
|
help: `Usage: pubmed related <pmid>... | - [options]
|
|
147
145
|
|
|
148
146
|
Find linked records for each PMID with NCBI ELink (same JSON as
|
|
149
|
-
find_related_articles). Lists longer than ${
|
|
147
|
+
find_related_articles). Lists longer than ${MAX_RELATED_PMIDS} PMIDs are split into batches.
|
|
150
148
|
|
|
151
149
|
Options:
|
|
152
150
|
--link-type <type> similar_articles (default) similar PubMed articles
|
|
@@ -167,7 +165,7 @@ Example:
|
|
|
167
165
|
const pmids = await readIds(input, PMID);
|
|
168
166
|
const linkType = input.values['link-type'];
|
|
169
167
|
const maxResults = intOption(input, 'max-results');
|
|
170
|
-
const batches = chunk(pmids,
|
|
168
|
+
const batches = chunk(pmids, MAX_RELATED_PMIDS).map((batch) => validate(findRelatedArticlesSchema, {
|
|
171
169
|
pmids: batch,
|
|
172
170
|
link_type: linkType,
|
|
173
171
|
max_results: maxResults,
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express app for HTTP mode (Cloud Run / remote deployment).
|
|
3
|
+
*
|
|
4
|
+
* Kept apart from the entrypoint (src/index.ts) so tests can run it with a
|
|
5
|
+
* mocked NCBI client. Importing this module loads auth.ts, which reads the
|
|
6
|
+
* OAuth environment variables and throws if any of them is missing.
|
|
7
|
+
*
|
|
8
|
+
* Routes:
|
|
9
|
+
* POST /mcp — MCP Streamable HTTP (Bearer token required)
|
|
10
|
+
* GET /.well-known/oauth-protected-resource — RFC 9728 metadata (public)
|
|
11
|
+
* GET /health — Cloud Run probes (public)
|
|
12
|
+
*/
|
|
13
|
+
import express from 'express';
|
|
14
|
+
import type { NcbiClient } from './pubmed/client.js';
|
|
15
|
+
/**
|
|
16
|
+
* @param ncbiClient Shared by every per-request MCP server, so that its rate
|
|
17
|
+
* limiter spans concurrent requests.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createHttpApp(ncbiClient: NcbiClient): express.Express;
|
|
20
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,OAA2D,MAAM,SAAS,CAAC;AAIlF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CA6ErE"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express app for HTTP mode (Cloud Run / remote deployment).
|
|
3
|
+
*
|
|
4
|
+
* Kept apart from the entrypoint (src/index.ts) so tests can run it with a
|
|
5
|
+
* mocked NCBI client. Importing this module loads auth.ts, which reads the
|
|
6
|
+
* OAuth environment variables and throws if any of them is missing.
|
|
7
|
+
*
|
|
8
|
+
* Routes:
|
|
9
|
+
* POST /mcp — MCP Streamable HTTP (Bearer token required)
|
|
10
|
+
* GET /.well-known/oauth-protected-resource — RFC 9728 metadata (public)
|
|
11
|
+
* GET /health — Cloud Run probes (public)
|
|
12
|
+
*/
|
|
13
|
+
import express from 'express';
|
|
14
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
15
|
+
import { protectedResourceMetadata, requireAuth } from './auth.js';
|
|
16
|
+
import { createServer } from './server.js';
|
|
17
|
+
/**
|
|
18
|
+
* @param ncbiClient Shared by every per-request MCP server, so that its rate
|
|
19
|
+
* limiter spans concurrent requests.
|
|
20
|
+
*/
|
|
21
|
+
export function createHttpApp(ncbiClient) {
|
|
22
|
+
const app = express();
|
|
23
|
+
app.disable('x-powered-by');
|
|
24
|
+
// OAuth 2.0 Protected Resource Metadata (RFC 9728) — public so the client can
|
|
25
|
+
// discover the authorization server. No token required.
|
|
26
|
+
app.get('/.well-known/oauth-protected-resource', protectedResourceMetadata);
|
|
27
|
+
// Health check endpoint — used by Cloud Run readiness/liveness probes.
|
|
28
|
+
// No auth required so Cloud Run can always reach it.
|
|
29
|
+
app.get('/health', (_req, res) => {
|
|
30
|
+
res.send('ok');
|
|
31
|
+
});
|
|
32
|
+
// MCP Streamable HTTP. The body is parsed only after the token is verified.
|
|
33
|
+
// SDK v1.x: stateless transports cannot be reused across requests.
|
|
34
|
+
// A new transport and server instance must be created for every request.
|
|
35
|
+
app.post('/mcp', requireAuth, express.json(), (req, res) => {
|
|
36
|
+
const transport = new StreamableHTTPServerTransport({
|
|
37
|
+
sessionIdGenerator: undefined, // stateless mode
|
|
38
|
+
});
|
|
39
|
+
const mcpServer = createServer(ncbiClient);
|
|
40
|
+
res.on('close', () => {
|
|
41
|
+
// Also closes the transport.
|
|
42
|
+
mcpServer.close().catch((err) => {
|
|
43
|
+
process.stderr.write(`[http] close error: ${String(err)}\n`);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
mcpServer
|
|
47
|
+
.connect(transport)
|
|
48
|
+
.then(() => transport.handleRequest(req, res, req.body))
|
|
49
|
+
.catch((err) => {
|
|
50
|
+
process.stderr.write(`[http] handleRequest error: ${String(err)}\n`);
|
|
51
|
+
if (!res.headersSent) {
|
|
52
|
+
res.status(500).json({ error: 'Internal server error' });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
// A stateless server sends no server-initiated messages and has no session,
|
|
57
|
+
// so there is no SSE stream to open with GET and nothing to end with DELETE.
|
|
58
|
+
// Answering 405, as the MCP spec allows, keeps clients from holding idle
|
|
59
|
+
// streams open (each one would keep a server instance and a Cloud Run
|
|
60
|
+
// request alive).
|
|
61
|
+
app.all('/mcp', requireAuth, (_req, res) => {
|
|
62
|
+
res.setHeader('Allow', 'POST');
|
|
63
|
+
res.status(405).json({ error: 'method_not_allowed' });
|
|
64
|
+
});
|
|
65
|
+
// Errors such as malformed or oversized request bodies get JSON, not
|
|
66
|
+
// Express's default HTML page, which includes the stack trace unless
|
|
67
|
+
// NODE_ENV is "production".
|
|
68
|
+
app.use((err, _req, res, next) => {
|
|
69
|
+
if (res.headersSent) {
|
|
70
|
+
next(err);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (err.type === 'entity.parse.failed') {
|
|
74
|
+
res.status(400).json({ error: 'Invalid JSON body' });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (err.status !== undefined && err.status >= 400 && err.status < 500) {
|
|
78
|
+
res.status(err.status).json({ error: err.expose ? err.message : 'Bad request' });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
process.stderr.write(`[http] unhandled error: ${String(err)}\n`);
|
|
82
|
+
res.status(500).json({ error: 'Internal server error' });
|
|
83
|
+
});
|
|
84
|
+
return app;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
* HTTP mode (Cloud Run / remote deployment):
|
|
13
13
|
* Activated when the PORT environment variable is set.
|
|
14
|
-
* Starts an Express server that handles Streamable HTTP
|
|
14
|
+
* Starts an Express server (see http.ts) that handles Streamable HTTP
|
|
15
|
+
* transport at /mcp.
|
|
15
16
|
* Used by remote clients: Claude custom connectors and the Anthropic API
|
|
16
17
|
* MCP connector, which can only reach servers over HTTP.
|
|
17
18
|
* /mcp requires an OAuth 2.0 Bearer token (see auth.ts); /health and
|
|
@@ -23,10 +24,9 @@
|
|
|
23
24
|
* NCBI_API_KEY — NCBI API key; raises rate limit from 3 → 8 req/s
|
|
24
25
|
* Register free at https://www.ncbi.nlm.nih.gov/account/
|
|
25
26
|
* PORT — When set, enables HTTP mode on the specified port.
|
|
26
|
-
* OAUTH_ISSUER, OAUTH_JWKS_URL, MCP_RESOURCE_URL
|
|
27
|
+
* OAUTH_ISSUER, OAUTH_JWKS_URL, MCP_RESOURCE_URL, ALLOWED_SUBJECTS
|
|
27
28
|
* — Required in HTTP mode; startup fails without them.
|
|
28
|
-
*
|
|
29
|
-
* See auth.ts for all four.
|
|
29
|
+
* See auth.ts.
|
|
30
30
|
*/
|
|
31
31
|
export {};
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
* HTTP mode (Cloud Run / remote deployment):
|
|
13
13
|
* Activated when the PORT environment variable is set.
|
|
14
|
-
* Starts an Express server that handles Streamable HTTP
|
|
14
|
+
* Starts an Express server (see http.ts) that handles Streamable HTTP
|
|
15
|
+
* transport at /mcp.
|
|
15
16
|
* Used by remote clients: Claude custom connectors and the Anthropic API
|
|
16
17
|
* MCP connector, which can only reach servers over HTTP.
|
|
17
18
|
* /mcp requires an OAuth 2.0 Bearer token (see auth.ts); /health and
|
|
@@ -23,17 +24,27 @@
|
|
|
23
24
|
* NCBI_API_KEY — NCBI API key; raises rate limit from 3 → 8 req/s
|
|
24
25
|
* Register free at https://www.ncbi.nlm.nih.gov/account/
|
|
25
26
|
* PORT — When set, enables HTTP mode on the specified port.
|
|
26
|
-
* OAUTH_ISSUER, OAUTH_JWKS_URL, MCP_RESOURCE_URL
|
|
27
|
+
* OAUTH_ISSUER, OAUTH_JWKS_URL, MCP_RESOURCE_URL, ALLOWED_SUBJECTS
|
|
27
28
|
* — Required in HTTP mode; startup fails without them.
|
|
28
|
-
*
|
|
29
|
-
* See auth.ts for all four.
|
|
29
|
+
* See auth.ts.
|
|
30
30
|
*/
|
|
31
|
-
// Load .env file
|
|
32
|
-
//
|
|
31
|
+
// Load the .env file in the package root (the repository root in a source
|
|
32
|
+
// checkout) if present. Silently skipped in production where env vars are
|
|
33
|
+
// injected by the runtime (Cloud Run, Docker --env, etc.). Never read from the
|
|
34
|
+
// current directory: MCP clients start the server in whatever project is
|
|
35
|
+
// open, and a .env there could otherwise set PORT (switching to HTTP mode) or
|
|
36
|
+
// HTTPS_PROXY with NODE_TLS_REJECT_UNAUTHORIZED=0, letting a proxy read the
|
|
37
|
+
// API key and alter NCBI responses. Variables already set in the environment
|
|
38
|
+
// take precedence.
|
|
33
39
|
// quiet: dotenv >=17 logs to stdout by default, which corrupts the stdio
|
|
34
40
|
// JSON-RPC stream.
|
|
41
|
+
import path from 'node:path';
|
|
42
|
+
import { fileURLToPath } from 'node:url';
|
|
35
43
|
import { config as loadDotenv } from 'dotenv';
|
|
36
|
-
loadDotenv({
|
|
44
|
+
loadDotenv({
|
|
45
|
+
path: path.join(path.dirname(fileURLToPath(import.meta.url)), '..', '.env'),
|
|
46
|
+
quiet: true,
|
|
47
|
+
});
|
|
37
48
|
import { createServer } from './server.js';
|
|
38
49
|
import { NcbiClient } from './pubmed/client.js';
|
|
39
50
|
async function main() {
|
|
@@ -52,45 +63,9 @@ async function main() {
|
|
|
52
63
|
// after loadDotenv() so that it reads NCBI_API_KEY from .env.
|
|
53
64
|
const sharedNcbiClient = new NcbiClient();
|
|
54
65
|
async function startHttpServer(port) {
|
|
55
|
-
|
|
56
|
-
const {
|
|
57
|
-
const
|
|
58
|
-
const app = express();
|
|
59
|
-
app.use(express.json());
|
|
60
|
-
// OAuth 2.0 Protected Resource Metadata (RFC 9728) — public so the client can
|
|
61
|
-
// discover the authorization server. No token required.
|
|
62
|
-
app.get('/.well-known/oauth-protected-resource', protectedResourceMetadata);
|
|
63
|
-
// Return JSON (not HTML) for malformed request bodies.
|
|
64
|
-
app.use((err, _req, res, next) => {
|
|
65
|
-
if (err.type === 'entity.parse.failed') {
|
|
66
|
-
res.status(400).json({ error: 'Invalid JSON body' });
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
next(err);
|
|
70
|
-
});
|
|
71
|
-
// MCP Streamable HTTP — handles both POST (client→server) and GET (SSE stream).
|
|
72
|
-
// SDK v1.x: stateless transports cannot be reused across requests.
|
|
73
|
-
// A new transport and server instance must be created for every request.
|
|
74
|
-
app.all('/mcp', requireAuth, (req, res) => {
|
|
75
|
-
const transport = new StreamableHTTPServerTransport({
|
|
76
|
-
sessionIdGenerator: undefined, // stateless mode
|
|
77
|
-
});
|
|
78
|
-
const mcpServer = createServer(sharedNcbiClient);
|
|
79
|
-
mcpServer
|
|
80
|
-
.connect(transport)
|
|
81
|
-
.then(() => transport.handleRequest(req, res, req.body))
|
|
82
|
-
.catch((err) => {
|
|
83
|
-
process.stderr.write(`[http] handleRequest error: ${String(err)}\n`);
|
|
84
|
-
if (!res.headersSent) {
|
|
85
|
-
res.status(500).json({ error: 'Internal server error' });
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
// Health check endpoint — used by Cloud Run readiness/liveness probes.
|
|
90
|
-
// No auth required so Cloud Run can always reach it.
|
|
91
|
-
app.get('/health', (_req, res) => {
|
|
92
|
-
res.send('ok');
|
|
93
|
-
});
|
|
66
|
+
// Imported only in HTTP mode: auth.ts requires the OAuth variables.
|
|
67
|
+
const { createHttpApp } = await import('./http.js');
|
|
68
|
+
const app = createHttpApp(sharedNcbiClient);
|
|
94
69
|
const httpServer = app.listen(port, () => {
|
|
95
70
|
process.stderr.write(`PubMed MCP server running on HTTP port ${port}\n`);
|
|
96
71
|
process.stderr.write(` MCP endpoint : http://localhost:${port}/mcp\n`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/pubmed/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/pubmed/client.ts"],"names":[],"mappings":"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"}
|
package/dist/pubmed/client.js
CHANGED
|
@@ -23,6 +23,18 @@ const HTTPS_AGENT = new https.Agent({
|
|
|
23
23
|
ALPNProtocols: ['http/1.1'],
|
|
24
24
|
keepAlive: true,
|
|
25
25
|
});
|
|
26
|
+
/**
|
|
27
|
+
* Abort a request when NCBI sends no response headers, or the connection
|
|
28
|
+
* goes idle, for this long. Without it a stalled connection hangs the tool
|
|
29
|
+
* call (and in HTTP mode, the client's request) indefinitely.
|
|
30
|
+
*/
|
|
31
|
+
const REQUEST_TIMEOUT_MS = 60_000;
|
|
32
|
+
/** Options shared by every NCBI request. */
|
|
33
|
+
const REQUEST_OPTIONS = {
|
|
34
|
+
httpsAgent: HTTPS_AGENT,
|
|
35
|
+
timeout: REQUEST_TIMEOUT_MS,
|
|
36
|
+
beforeRedirect: refuseRedirectOffNcbi,
|
|
37
|
+
};
|
|
26
38
|
const TOOL_NAME = 'pubmed-mcp';
|
|
27
39
|
/**
|
|
28
40
|
* NCBI requires `email` to be the software developer's address, not an end
|
|
@@ -120,7 +132,7 @@ export class NcbiClient {
|
|
|
120
132
|
await sleep(retryDelayMs(err, attempt));
|
|
121
133
|
continue;
|
|
122
134
|
}
|
|
123
|
-
throw wrapAxiosError(err, operation);
|
|
135
|
+
throw wrapAxiosError(err, operation, this.apiKey);
|
|
124
136
|
}
|
|
125
137
|
}
|
|
126
138
|
}
|
|
@@ -130,7 +142,7 @@ export class NcbiClient {
|
|
|
130
142
|
*/
|
|
131
143
|
async esearch(params) {
|
|
132
144
|
const response = await this.request('esearch', () => axios.get(`${NCBI_BASE_URL}esearch.fcgi`, {
|
|
133
|
-
|
|
145
|
+
...REQUEST_OPTIONS,
|
|
134
146
|
params: {
|
|
135
147
|
...this.commonParams(),
|
|
136
148
|
db: 'pubmed',
|
|
@@ -154,7 +166,7 @@ export class NcbiClient {
|
|
|
154
166
|
async efetch(params) {
|
|
155
167
|
const idStr = Array.isArray(params.id) ? params.id.join(',') : params.id;
|
|
156
168
|
const response = await this.request('efetch', () => axios.get(`${NCBI_BASE_URL}efetch.fcgi`, {
|
|
157
|
-
|
|
169
|
+
...REQUEST_OPTIONS,
|
|
158
170
|
params: {
|
|
159
171
|
...this.commonParams(),
|
|
160
172
|
db: params.db,
|
|
@@ -183,7 +195,7 @@ export class NcbiClient {
|
|
|
183
195
|
searchParams.append('id', id);
|
|
184
196
|
}
|
|
185
197
|
const response = await this.request('elink', () => axios.get(`${NCBI_BASE_URL}elink.fcgi?${searchParams.toString()}`, {
|
|
186
|
-
|
|
198
|
+
...REQUEST_OPTIONS,
|
|
187
199
|
}));
|
|
188
200
|
return response.data;
|
|
189
201
|
}
|
|
@@ -193,10 +205,12 @@ export class NcbiClient {
|
|
|
193
205
|
*/
|
|
194
206
|
async ecitmatch(citations) {
|
|
195
207
|
const bdata = citations
|
|
196
|
-
.map((c) =>
|
|
208
|
+
.map((c) => [c.journal, c.year, c.volume, c.first_page, c.author, c.key]
|
|
209
|
+
.map(bdataField)
|
|
210
|
+
.join('|') + '|')
|
|
197
211
|
.join('\r');
|
|
198
212
|
const response = await this.request('ecitmatch', () => axios.get(`${NCBI_BASE_URL}ecitmatch.cgi`, {
|
|
199
|
-
|
|
213
|
+
...REQUEST_OPTIONS,
|
|
200
214
|
params: {
|
|
201
215
|
...this.commonParams(),
|
|
202
216
|
db: 'pubmed',
|
|
@@ -219,7 +233,7 @@ export class NcbiClient {
|
|
|
219
233
|
*/
|
|
220
234
|
async idConvert(params) {
|
|
221
235
|
const response = await this.request('idConvert', () => axios.get(PMC_ID_CONVERTER_URL, {
|
|
222
|
-
|
|
236
|
+
...REQUEST_OPTIONS,
|
|
223
237
|
params: {
|
|
224
238
|
...this.commonParams(),
|
|
225
239
|
format: 'json',
|
|
@@ -228,11 +242,11 @@ export class NcbiClient {
|
|
|
228
242
|
versions: 'no',
|
|
229
243
|
},
|
|
230
244
|
}));
|
|
231
|
-
return sanitizeIdConvResponse(response.data);
|
|
245
|
+
return sanitizeIdConvResponse(response.data, this.apiKey);
|
|
232
246
|
}
|
|
233
247
|
}
|
|
234
248
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
235
|
-
function wrapAxiosError(err, operation) {
|
|
249
|
+
function wrapAxiosError(err, operation, apiKey) {
|
|
236
250
|
if (err instanceof NcbiApiError || err instanceof NcbiNetworkError) {
|
|
237
251
|
return err;
|
|
238
252
|
}
|
|
@@ -240,10 +254,11 @@ function wrapAxiosError(err, operation) {
|
|
|
240
254
|
const status = err.response?.status;
|
|
241
255
|
if (status !== undefined) {
|
|
242
256
|
const body = describeResponseBody(err.response?.data);
|
|
243
|
-
const message = redactApiKey(body || err.message);
|
|
257
|
+
const message = redactApiKey(body || err.message, apiKey);
|
|
244
258
|
return new NcbiApiError(`NCBI ${operation} returned HTTP ${status}: ${message}`, status);
|
|
245
259
|
}
|
|
246
|
-
|
|
260
|
+
// The AxiosError is not kept as the cause: its config holds the API key.
|
|
261
|
+
return new NcbiNetworkError(`Network error during NCBI ${operation}: ${redactApiKey(err.message, apiKey)}`);
|
|
247
262
|
}
|
|
248
263
|
if (err instanceof Error)
|
|
249
264
|
return err;
|
|
@@ -289,15 +304,32 @@ function retryDelayMs(err, attempt) {
|
|
|
289
304
|
}
|
|
290
305
|
return fallback;
|
|
291
306
|
}
|
|
307
|
+
/**
|
|
308
|
+
* Refuse a redirect that leaves NCBI or drops HTTPS. The API key travels in
|
|
309
|
+
* the query string, which redirects keep (the ID Converter redirects to
|
|
310
|
+
* pmc.ncbi.nlm.nih.gov with the query intact). Checks href rather than
|
|
311
|
+
* hostname, which axios rewrites to the proxy's when a proxy is configured.
|
|
312
|
+
*/
|
|
313
|
+
function refuseRedirectOffNcbi(options) {
|
|
314
|
+
const target = new URL(String(options.href));
|
|
315
|
+
const onNcbi = target.hostname === 'ncbi.nlm.nih.gov' || target.hostname.endsWith('.ncbi.nlm.nih.gov');
|
|
316
|
+
if (target.protocol !== 'https:' || !onNcbi) {
|
|
317
|
+
throw new Error(`refused redirect to ${target.protocol}//${target.host}`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/** "|" separates ECitMatch fields and "\r" separates citations, so neither may appear in a field. */
|
|
321
|
+
function bdataField(value) {
|
|
322
|
+
return String(value).replace(/[|\r\n]+/g, ' ');
|
|
323
|
+
}
|
|
292
324
|
function looksLikeHtml(text) {
|
|
293
325
|
return /^\s*(?:<!doctype\s+html|<html\b)/i.test(text);
|
|
294
326
|
}
|
|
295
|
-
function sanitizeIdConvResponse(response) {
|
|
327
|
+
function sanitizeIdConvResponse(response, apiKey) {
|
|
296
328
|
return {
|
|
297
329
|
...response,
|
|
298
330
|
request: {
|
|
299
331
|
...response.request,
|
|
300
|
-
echo: redactApiKey(response.request.echo),
|
|
332
|
+
echo: redactApiKey(response.request.echo, apiKey),
|
|
301
333
|
},
|
|
302
334
|
records: response.records.map((record) => ({
|
|
303
335
|
...record,
|
|
@@ -310,10 +342,12 @@ function sanitizeIdConvResponse(response) {
|
|
|
310
342
|
})),
|
|
311
343
|
};
|
|
312
344
|
}
|
|
313
|
-
function redactApiKey(value) {
|
|
345
|
+
function redactApiKey(value, apiKey) {
|
|
314
346
|
// NCBI echoes the key both as a query param and as "api-key" in JSON error bodies.
|
|
315
|
-
|
|
347
|
+
const redacted = value
|
|
316
348
|
.replace(/(^|[?&])(api_key=)[^&\s]+/gi, '$1$2<redacted>')
|
|
317
349
|
.replace(/("api[-_]key"\s*:\s*")[^"]*/gi, '$1<redacted>');
|
|
350
|
+
// Any other echo of the key, such as one in an HTML-escaped URL.
|
|
351
|
+
return apiKey ? redacted.split(apiKey).join('<redacted>') : redacted;
|
|
318
352
|
}
|
|
319
353
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/pubmed/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/pubmed/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,aAAa,GAAG,gDAAgD,CAAC;AACvE,MAAM,oBAAoB,GAAG,qDAAqD,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;IAClC,aAAa,EAAE,CAAC,UAAU,CAAC;IAC3B,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,4CAA4C;AAC5C,MAAM,eAAe,GAAG;IACtB,UAAU,EAAE,WAAW;IACvB,OAAO,EAAE,kBAAkB;IAC3B,cAAc,EAAE,qBAAqB;CACtC,CAAC;AAEF,MAAM,SAAS,GAAG,YAAY,CAAC;AAC/B;;;;;GAKG;AACH,MAAM,UAAU,GAAG,+CAA+C,CAAC;AAEnE,gFAAgF;AAEhF,MAAM,WAAW;IACP,QAAQ,GAAG,CAAC,CAAC;IACJ,WAAW,CAAS,CAAC,KAAK;IAE3C,YAAY,iBAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,iBAAiB,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QACxC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACf,MAAM,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,kDAAkD;AAClD,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,sEAAsE;AACtE,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,gFAAgF;AAEhF,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACI;IAA7C,YAAY,OAAe,EAAkB,KAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,UAAK,GAAL,KAAK,CAAU;QAE1D,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACQ;IAA7C,YAAY,OAAe,EAAkB,UAAmB;QAC9D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,eAAU,GAAV,UAAU,CAAS;QAE9D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACM;IAA7C,YAAY,OAAe,EAAkB,KAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,UAAK,GAAL,KAAK,CAAU;QAE1D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,gFAAgF;AAEhF,MAAM,OAAO,UAAU;IACJ,MAAM,CAAqB;IAC3B,WAAW,CAAc;IAE1C,YAAY,MAAe;QACzB,gFAAgF;QAChF,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kEAAkE;QACnG,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEO,YAAY;QAClB,MAAM,MAAM,GAA2B;YACrC,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,UAAU;SAClB,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,OAAO,CAAI,SAAiB,EAAE,IAAsB;QAChE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,GAAG,sBAAsB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3D,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;oBACxC,SAAS;gBACX,CAAC;gBACD,MAAM,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,MASb;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAClD,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,cAAc,EAAE;YACxC,GAAG,eAAe;YAClB,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,EAAE,EAAE,QAAQ;gBACZ,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;gBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD;SACF,CAAC,CACH,CAAC;QACF,OAAQ,QAAQ,CAAC,IAAyC,CAAC,aAAa,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,MAKZ;QACC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CACjD,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,aAAa,EAAE;YACvC,GAAG,eAAe;YAClB,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;gBAChC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CACH,CAAC;QACF,OAAO,QAAQ,CAAC,IAAc,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,MAKX;QACC,kDAAkD;QAClD,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC;YACvC,GAAG,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,UAAU;YAC7B,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YAC3B,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAChD,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,cAAc,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE;YACjE,GAAG,eAAe;SACnB,CAAC,CACH,CAAC;QACF,OAAO,QAAQ,CAAC,IAAqB,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,SAA0B;QACxC,MAAM,KAAK,GAAG,SAAS;aACpB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC;aACzD,GAAG,CAAC,UAAU,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CACrB;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CACpD,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,eAAe,EAAE;YACzC,GAAG,eAAe;YAClB,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,EAAE,EAAE,QAAQ;gBACZ,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK;gBACd,KAAK;aACN;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CACH,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,YAAY,CACpB,+DAA+D;gBAC7D,0DAA0D,EAC5D,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAGf;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CACpD,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE;YAC9B,GAAG,eAAe;YAClB,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM;gBAC/B,QAAQ,EAAE,IAAI;aACf;SACF,CAAC,CACH,CAAC;QACF,OAAO,sBAAsB,CAAC,QAAQ,CAAC,IAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;CACF;AAsED,gFAAgF;AAEhF,SAAS,cAAc,CAAC,GAAY,EAAE,SAAiB,EAAE,MAA0B;IACjF,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;QACnE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1D,OAAO,IAAI,YAAY,CACrB,QAAQ,SAAS,kBAAkB,MAAM,KAAK,OAAO,EAAE,EACvD,MAAM,CACP,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,OAAO,IAAI,gBAAgB,CACzB,6BAA6B,SAAS,KAAK,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,uFAAuF;AACvF,SAAS,oBAAoB,CAAC,IAAa;IACzC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACnD,IAAI,IAAY,CAAC;IACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,IAAI,YAAY,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,OAAO,IAAI,CAAC,MAAM,GAAG,qBAAqB;QACxC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,GAAG;QAC5C,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAC;AACjE,CAAC;AAED,yFAAyF;AACzF,SAAS,YAAY,CAAC,GAAY,EAAE,OAAe;IACjD,MAAM,QAAQ,GAAG,qBAAqB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,OAA8C,CAAC;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,OAAgC;IAC7D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,MAAM,MAAM,GACV,MAAM,CAAC,QAAQ,KAAK,kBAAkB,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC1F,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,SAAS,UAAU,CAAC,KAAsB;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAwB,EACxB,MAA0B;IAE1B,OAAO;QACL,GAAG,QAAQ;QACX,OAAO,EAAE;YACP,GAAG,QAAQ,CAAC,OAAO;YACnB,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SAClD;QACD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACzC,GAAG,MAAM;YACT,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,SAAS;gBACtC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE;gBACpD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,MAA0B;IAC7D,mFAAmF;IACnF,MAAM,QAAQ,GAAG,KAAK;SACnB,OAAO,CAAC,6BAA6B,EAAE,gBAAgB,CAAC;SACxD,OAAO,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;IAC5D,iEAAiE;IACjE,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvE,CAAC"}
|
package/dist/pubmed/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TypeScript types for PubMed MCP tool responses.
|
|
3
|
-
*
|
|
3
|
+
* Tool names follow the Anthropic PubMed connector, but these shapes are this
|
|
4
|
+
* server's own and are not kept in sync with that connector.
|
|
4
5
|
*/
|
|
5
6
|
export interface SearchArticlesWarnings {
|
|
6
7
|
phrases_ignored: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pubmed/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pubmed/types.ts"],"names":[],"mappings":"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"}
|
package/dist/pubmed/types.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TypeScript types for PubMed MCP tool responses.
|
|
3
|
-
*
|
|
3
|
+
* Tool names follow the Anthropic PubMed connector, but these shapes are this
|
|
4
|
+
* server's own and are not kept in sync with that connector.
|
|
4
5
|
*/
|
|
5
6
|
// ─── Shared constants ────────────────────────────────────────────────────────
|
|
6
7
|
export const IMPORTANT_LEGAL_NOTICE = 'PubMed data is provided by the National Library of Medicine (NLM). ' +
|
package/dist/pubmed/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pubmed/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pubmed/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiMH,gFAAgF;AAEhF,MAAM,CAAC,MAAM,sBAAsB,GACjC,qEAAqE;IACrE,2FAA2F;IAC3F,iEAAiE;IACjE,6FAA6F;IAC7F,wDAAwD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertArticleIds.d.ts","sourceRoot":"","sources":["../../src/tools/convertArticleIds.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"convertArticleIds.d.ts","sourceRoot":"","sources":["../../src/tools/convertArticleIds.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGpE,8EAA8E;AAC9E,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,uBAAuB;;;;;;;CAqBnC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;CACpC,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,yBAAyB,CAAC,CAcpC"}
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
* Uses the NCBI PMC ID Converter API.
|
|
6
6
|
*/
|
|
7
7
|
import { z } from 'zod';
|
|
8
|
+
import { articleIdSchema } from '../utils/ids.js';
|
|
8
9
|
/** IDs per request; the CLI splits longer lists into batches of this size. */
|
|
9
10
|
export const MAX_CONVERT_IDS = 200;
|
|
10
11
|
export const convertArticleIdsSchema = {
|
|
11
12
|
ids: z
|
|
12
|
-
.array(
|
|
13
|
+
.array(articleIdSchema)
|
|
13
14
|
.min(1)
|
|
14
15
|
.max(MAX_CONVERT_IDS)
|
|
15
16
|
.describe('Array of article IDs to convert. ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertArticleIds.js","sourceRoot":"","sources":["../../src/tools/convertArticleIds.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"convertArticleIds.js","sourceRoot":"","sources":["../../src/tools/convertArticleIds.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,EAAE,CAAC;SACH,KAAK,CAAC,eAAe,CAAC;SACtB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,eAAe,CAAC;SACpB,QAAQ,CACP,mCAAmC;QACjC,2EAA2E;QAC3E,wDAAwD;QACxD,qEAAqE,CACxE;IACH,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;SAC9B,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,EAAE;SACV,QAAQ,CACP,0BAA0B;QACxB,kCAAkC;QAClC,+DAA+D;QAC/D,sCAAsC,CACzC;CACJ,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAA+B,EAC/B,MAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAExC,oDAAoD;IACpD,+DAA+D;IAC/D,MAAM,GAAG,GACP,MAAM,KAAK,OAAO;QAChB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAEjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjE,uEAAuE;IACvE,OAAO,QAAqC,CAAC;AAC/C,CAAC"}
|
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
import { z } from 'zod';
|
|
8
8
|
import type { NcbiClient } from '../pubmed/client.js';
|
|
9
9
|
import type { FindRelatedArticlesResponse } from '../pubmed/types.js';
|
|
10
|
+
/**
|
|
11
|
+
* PMIDs per request, kept short because ELink takes them in the URL.
|
|
12
|
+
* The CLI splits longer lists into batches of this size.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MAX_RELATED_PMIDS = 200;
|
|
10
15
|
declare const LINK_TYPES: readonly ["similar_articles", "citing_pmc_articles", "linked_gene_records", "linked_refseq_proteins", "linked_refseq_nucleotides"];
|
|
11
16
|
export type FindRelatedLinkType = (typeof LINK_TYPES)[number];
|
|
12
17
|
export declare const findRelatedArticlesSchema: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findRelatedArticles.d.ts","sourceRoot":"","sources":["../../src/tools/findRelatedArticles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,2BAA2B,EAAW,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"findRelatedArticles.d.ts","sourceRoot":"","sources":["../../src/tools/findRelatedArticles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,2BAA2B,EAAW,MAAM,oBAAoB,CAAC;AAG/E;;;GAGG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,QAAA,MAAM,UAAU,oIAMN,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,yBAAyB;;;;;;;;;;CA8BrC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAWF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,yBAAyB,EACjC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,2BAA2B,CAAC,CAiCtC"}
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* service. Supports cross-database links (PubMed→PubMed, PubMed→PMC, etc.).
|
|
6
6
|
*/
|
|
7
7
|
import { z } from 'zod';
|
|
8
|
+
import { pmidSchema } from '../utils/ids.js';
|
|
9
|
+
/**
|
|
10
|
+
* PMIDs per request, kept short because ELink takes them in the URL.
|
|
11
|
+
* The CLI splits longer lists into batches of this size.
|
|
12
|
+
*/
|
|
13
|
+
export const MAX_RELATED_PMIDS = 200;
|
|
8
14
|
const LINK_TYPES = [
|
|
9
15
|
'similar_articles',
|
|
10
16
|
'citing_pmc_articles',
|
|
@@ -14,9 +20,11 @@ const LINK_TYPES = [
|
|
|
14
20
|
];
|
|
15
21
|
export const findRelatedArticlesSchema = {
|
|
16
22
|
pmids: z
|
|
17
|
-
.array(
|
|
23
|
+
.array(pmidSchema)
|
|
18
24
|
.min(1)
|
|
19
|
-
.
|
|
25
|
+
.max(MAX_RELATED_PMIDS)
|
|
26
|
+
.describe('Array of source PubMed IDs to find related articles for. ' +
|
|
27
|
+
`Maximum ${MAX_RELATED_PMIDS} PMIDs per request.`),
|
|
20
28
|
link_type: z
|
|
21
29
|
.enum(LINK_TYPES)
|
|
22
30
|
.default('similar_articles')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findRelatedArticles.js","sourceRoot":"","sources":["../../src/tools/findRelatedArticles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"findRelatedArticles.js","sourceRoot":"","sources":["../../src/tools/findRelatedArticles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,MAAM,UAAU,GAAG;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,wBAAwB;IACxB,2BAA2B;CACnB,CAAC;AAGX,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,UAAU,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,iBAAiB,CAAC;SACtB,QAAQ,CACP,2DAA2D;QACzD,WAAW,iBAAiB,qBAAqB,CACpD;IACH,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,UAAU,CAAC;SAChB,OAAO,CAAC,kBAAkB,CAAC;SAC3B,QAAQ,CACP,2BAA2B;QACzB,oFAAoF;QACpF,4EAA4E;QAC5E,2DAA2D;QAC3D,gEAAgE;QAChE,iEAAiE,CACpE;IACH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,sEAAsE;QACpE,8EAA8E,CACjF;CACJ,CAAC;AAQF,mEAAmE;AACnE,MAAM,aAAa,GAAwC;IACzD,gBAAgB,EAAE,eAAe;IACjC,mBAAmB,EAAE,iBAAiB;IACtC,mBAAmB,EAAE,aAAa;IAClC,sBAAsB,EAAE,uBAAuB;IAC/C,yBAAyB,EAAE,uBAAuB;CACnD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiC,EACjC,MAAkB;IAElB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,MAAM,EAAE,QAAQ;QAChB,EAAE,EAAE,MAAM,CAAC,KAAK;QAChB,QAAQ;QACR,GAAG,EAAE,UAAU;KAChB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;IAEtC,MAAM,QAAQ,GAAc,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,GAAG,EAAE,EAAE,CAAC,GAAG;QACX,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAoB,EAAE,EAAE;YAC7D,0EAA0E;YAC1E,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClC,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAC1C,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACrC,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK;aACN,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getArticleMetadata.d.ts","sourceRoot":"","sources":["../../src/tools/getArticleMetadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAiB,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"getArticleMetadata.d.ts","sourceRoot":"","sources":["../../src/tools/getArticleMetadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAiB,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAKpF,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,QAAA,MAAM,YAAY,iDAAkD,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,wBAAwB;;;;;;;;;CA4BpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAqBF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,0BAA0B,CAAC,CAuBrC"}
|
|
@@ -6,13 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { z } from 'zod';
|
|
8
8
|
import { IMPORTANT_LEGAL_NOTICE } from '../pubmed/types.js';
|
|
9
|
+
import { pmidSchema } from '../utils/ids.js';
|
|
9
10
|
import { parsePubmedEfetchXml } from '../utils/xml.js';
|
|
10
11
|
/** PMIDs per request; the CLI splits longer lists into batches of this size. */
|
|
11
12
|
export const MAX_METADATA_PMIDS = 200;
|
|
12
13
|
const AUTHOR_MODES = ['all', 'first_last', 'first', 'none'];
|
|
13
14
|
export const getArticleMetadataSchema = {
|
|
14
15
|
pmids: z
|
|
15
|
-
.array(
|
|
16
|
+
.array(pmidSchema)
|
|
16
17
|
.min(1)
|
|
17
18
|
.max(MAX_METADATA_PMIDS)
|
|
18
19
|
.describe('Array of PubMed IDs (PMIDs) to retrieve metadata for. ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getArticleMetadata.js","sourceRoot":"","sources":["../../src/tools/getArticleMetadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGrE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"getArticleMetadata.js","sourceRoot":"","sources":["../../src/tools/getArticleMetadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGrE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,UAAU,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,kBAAkB,CAAC;SACvB,QAAQ,CACP,wDAAwD;QACtD,WAAW,kBAAkB,qBAAqB,CACrD;IACH,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,YAAY,CAAC;SAClB,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,kEAAkE;QAChE,yCAAyC;QACzC,oFAAoF;QACpF,wCAAwC;QACxC,6BAA6B;QAC7B,uDAAuD,CAC1D;IACH,oBAAoB,EAAE,CAAC;SACpB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,oEAAoE;QAClE,yEAAyE;QACzE,uBAAuB,CAC1B;CACJ,CAAC;AAQF,SAAS,aAAa,CAAC,OAAwB,EAAE,IAAgB;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAClF,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAqB;IAChD,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,YAAY,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAgC,EAChC,MAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QAC9B,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,MAAM,CAAC,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,UAAU;KACpB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;IACrC,MAAM,mBAAmB,GAAG,MAAM,CAAC,oBAAoB,IAAI,KAAK,CAAC;IAEjE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3D,GAAG,OAAO;QACV,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3D,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAC3D;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,sBAAsB,EAAE,sBAAsB;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCopyrightStatus.d.ts","sourceRoot":"","sources":["../../src/tools/getCopyrightStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,0BAA0B,EAAmB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"getCopyrightStatus.d.ts","sourceRoot":"","sources":["../../src/tools/getCopyrightStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,0BAA0B,EAAmB,MAAM,oBAAoB,CAAC;AAItF,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,wBAAwB;;CAMpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAKF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,0BAA0B,CAAC,CA4DrC"}
|
|
@@ -11,12 +11,13 @@
|
|
|
11
11
|
* does not allow full-text XML download.
|
|
12
12
|
*/
|
|
13
13
|
import { z } from 'zod';
|
|
14
|
+
import { pmidSchema } from '../utils/ids.js';
|
|
14
15
|
import { parsePmcAccessXml } from '../utils/xml.js';
|
|
15
16
|
/** PMIDs per request; the CLI splits longer lists into batches of this size. */
|
|
16
17
|
export const MAX_COPYRIGHT_PMIDS = 50;
|
|
17
18
|
export const getCopyrightStatusSchema = {
|
|
18
19
|
pmids: z
|
|
19
|
-
.array(
|
|
20
|
+
.array(pmidSchema)
|
|
20
21
|
.min(1)
|
|
21
22
|
.max(MAX_COPYRIGHT_PMIDS)
|
|
22
23
|
.describe('Array of PubMed IDs (PMIDs) to check copyright status for.'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCopyrightStatus.js","sourceRoot":"","sources":["../../src/tools/getCopyrightStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;AAExE,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"getCopyrightStatus.js","sourceRoot":"","sources":["../../src/tools/getCopyrightStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFullTextArticle.d.ts","sourceRoot":"","sources":["../../src/tools/getFullTextArticle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,0BAA0B,EAAmB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"getFullTextArticle.d.ts","sourceRoot":"","sources":["../../src/tools/getFullTextArticle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,0BAA0B,EAAmB,MAAM,oBAAoB,CAAC;AAKtF,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,wBAAwB;;CAWpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAYF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,0BAA0B,CAAC,CA6DrC"}
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { z } from 'zod';
|
|
10
10
|
import { IMPORTANT_LEGAL_NOTICE } from '../pubmed/types.js';
|
|
11
|
+
import { pmcidSchema } from '../utils/ids.js';
|
|
11
12
|
import { parsePmcEfetchXml } from '../utils/xml.js';
|
|
12
13
|
/** PMCIDs per request; the CLI splits longer lists into batches of this size. */
|
|
13
14
|
export const MAX_FULL_TEXT_IDS = 20;
|
|
14
15
|
export const getFullTextArticleSchema = {
|
|
15
16
|
pmc_ids: z
|
|
16
|
-
.array(
|
|
17
|
+
.array(pmcidSchema)
|
|
17
18
|
.min(1)
|
|
18
19
|
.max(MAX_FULL_TEXT_IDS)
|
|
19
20
|
.describe('Array of PubMed Central IDs (PMCIDs) to retrieve full text for. ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFullTextArticle.js","sourceRoot":"","sources":["../../src/tools/getFullTextArticle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"getFullTextArticle.js","sourceRoot":"","sources":["../../src/tools/getFullTextArticle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for article IDs in tool arguments.
|
|
3
|
+
*
|
|
4
|
+
* Each value must be a single ID. NCBI reads commas as separators, so a value
|
|
5
|
+
* such as "1,2,3" would otherwise carry any number of IDs past a tool's
|
|
6
|
+
* per-request limit.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export declare const pmidSchema: z.ZodString;
|
|
10
|
+
/**
|
|
11
|
+
* With or without the "PMC" prefix, in any case. Spelled without the i flag,
|
|
12
|
+
* which the JSON Schema in tools/list cannot carry.
|
|
13
|
+
*/
|
|
14
|
+
export declare const pmcidSchema: z.ZodString;
|
|
15
|
+
/** A PMID, PMCID, or DOI. */
|
|
16
|
+
export declare const articleIdSchema: z.ZodString;
|
|
17
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,aAA4D,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,WAAW,aAE4C,CAAC;AAErE,6BAA6B;AAC7B,eAAO,MAAM,eAAe,aAE0C,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for article IDs in tool arguments.
|
|
3
|
+
*
|
|
4
|
+
* Each value must be a single ID. NCBI reads commas as separators, so a value
|
|
5
|
+
* such as "1,2,3" would otherwise carry any number of IDs past a tool's
|
|
6
|
+
* per-request limit.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export const pmidSchema = z.string().regex(/^\d+$/, 'must be a PMID (digits only)');
|
|
10
|
+
/**
|
|
11
|
+
* With or without the "PMC" prefix, in any case. Spelled without the i flag,
|
|
12
|
+
* which the JSON Schema in tools/list cannot carry.
|
|
13
|
+
*/
|
|
14
|
+
export const pmcidSchema = z
|
|
15
|
+
.string()
|
|
16
|
+
.regex(/^([Pp][Mm][Cc])?\d+$/, 'must be a PMCID, e.g. PMC7984072');
|
|
17
|
+
/** A PMID, PMCID, or DOI. */
|
|
18
|
+
export const articleIdSchema = z
|
|
19
|
+
.string()
|
|
20
|
+
.regex(/^[^\s,]+$/, 'must be a single ID, without commas or spaces');
|
|
21
|
+
//# sourceMappingURL=ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;AAEpF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,EAAE;KACR,KAAK,CAAC,sBAAsB,EAAE,kCAAkC,CAAC,CAAC;AAErE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,KAAK,CAAC,WAAW,EAAE,+CAA+C,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@djmima/pubmed-mcp",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "MCP server providing access to PubMed biomedical literature and citations",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "DJ MIMA",
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"prepublishOnly": "npm run typecheck && npm run lint && npm test && npm run build"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
49
|
-
"axios": "^1.
|
|
48
|
+
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
49
|
+
"axios": "^1.20.0",
|
|
50
50
|
"dotenv": "^17.3.1",
|
|
51
|
-
"express": "^4.
|
|
51
|
+
"express": "^4.22.3",
|
|
52
52
|
"fast-xml-parser": "^5.11.2",
|
|
53
53
|
"jose": "^5.10.0",
|
|
54
54
|
"zod": "^4.6.7"
|