@djmima/pubmed-mcp 1.0.2 → 1.2.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 +33 -1
- package/README.md +11 -11
- 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/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +6 -0
- package/dist/cli/run.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/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.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/dist/version.d.ts +11 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +25 -0
- package/dist/version.js.map +1 -0
- package/package.json +4 -4
|
@@ -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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package version, read from package.json at runtime.
|
|
3
|
+
*
|
|
4
|
+
* package.json sits one directory above this module both in src/ (tsx) and in
|
|
5
|
+
* dist/ (build, npm package, Docker image), so a single relative path works
|
|
6
|
+
* everywhere. Reading it keeps the version in one place: `npm version` updates
|
|
7
|
+
* package.json only.
|
|
8
|
+
*/
|
|
9
|
+
/** The version field of the package's package.json, e.g. "1.1.0". */
|
|
10
|
+
export declare function packageVersion(): string;
|
|
11
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,qEAAqE;AACrE,wBAAgB,cAAc,IAAI,MAAM,CASvC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package version, read from package.json at runtime.
|
|
3
|
+
*
|
|
4
|
+
* package.json sits one directory above this module both in src/ (tsx) and in
|
|
5
|
+
* dist/ (build, npm package, Docker image), so a single relative path works
|
|
6
|
+
* everywhere. Reading it keeps the version in one place: `npm version` updates
|
|
7
|
+
* package.json only.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync } from 'node:fs';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
const PACKAGE_JSON_PATH = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
|
|
13
|
+
let cachedVersion;
|
|
14
|
+
/** The version field of the package's package.json, e.g. "1.1.0". */
|
|
15
|
+
export function packageVersion() {
|
|
16
|
+
if (cachedVersion === undefined) {
|
|
17
|
+
const pkg = JSON.parse(readFileSync(PACKAGE_JSON_PATH, 'utf8'));
|
|
18
|
+
if (typeof pkg.version !== 'string') {
|
|
19
|
+
throw new Error(`no version field in ${PACKAGE_JSON_PATH}`);
|
|
20
|
+
}
|
|
21
|
+
cachedVersion = pkg.version;
|
|
22
|
+
}
|
|
23
|
+
return cachedVersion;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,IAAI,EACJ,cAAc,CACf,CAAC;AAEF,IAAI,aAAiC,CAAC;AAEtC,qEAAqE;AACrE,MAAM,UAAU,cAAc;IAC5B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAA0B,CAAC;QACzF,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,iBAAiB,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@djmima/pubmed-mcp",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.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"
|