clinicaltrialsgov-mcp-server 2.9.0 → 2.9.1
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/README.md +1 -1
- package/dist/mcp-server/tools/definitions/find-eligible.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/get-field-values.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/get-study-count.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/get-study-results.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/search-studies.tool.d.ts +1 -1
- package/dist/mcp-server/tools/utils/query-helpers.d.ts +5 -1
- package/dist/mcp-server/tools/utils/query-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/query-helpers.js +6 -2
- package/dist/mcp-server/tools/utils/query-helpers.js.map +1 -1
- package/dist/mcp-server/tools/utils/recovery-hints.d.ts +1 -1
- package/dist/mcp-server/tools/utils/recovery-hints.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/recovery-hints.js +1 -1
- package/dist/mcp-server/tools/utils/recovery-hints.js.map +1 -1
- package/dist/services/clinical-trials/field-search.d.ts +5 -0
- package/dist/services/clinical-trials/field-search.d.ts.map +1 -1
- package/dist/services/clinical-trials/field-search.js +25 -2
- package/dist/services/clinical-trials/field-search.js.map +1 -1
- package/package.json +1 -6
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](https://www.npmjs.com/package/clinicaltrialsgov-mcp-server) [](https://github.com/users/cyanheads/packages/container/package/clinicaltrialsgov-mcp-server) [](https://www.npmjs.com/package/clinicaltrialsgov-mcp-server) [](https://github.com/users/cyanheads/packages/container/package/clinicaltrialsgov-mcp-server) [](./CHANGELOG.md) [](https://modelcontextprotocol.io/) [](./LICENSE) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -53,7 +53,7 @@ export declare const findEligible: import("@cyanheads/mcp-ts-core").ToolDefiniti
|
|
|
53
53
|
readonly reason: "blank_value";
|
|
54
54
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
55
55
|
readonly when: "A parameter was supplied with a blank, whitespace-only, or empty-list value.";
|
|
56
|
-
readonly recovery: "
|
|
56
|
+
readonly recovery: "Supply a value containing non-whitespace, or for a list parameter at least one non-blank entry. Only when the parameter is optional and you meant to leave it unset, omit it entirely instead — omission and a blank value mean different things here.";
|
|
57
57
|
}, {
|
|
58
58
|
readonly reason: "rate_limited";
|
|
59
59
|
readonly code: JsonRpcErrorCode.RateLimited;
|
|
@@ -25,7 +25,7 @@ export declare const getFieldValues: import("@cyanheads/mcp-ts-core").ToolDefini
|
|
|
25
25
|
readonly reason: "blank_value";
|
|
26
26
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
27
27
|
readonly when: "A parameter was supplied with a blank, whitespace-only, or empty-list value.";
|
|
28
|
-
readonly recovery: "
|
|
28
|
+
readonly recovery: "Supply a value containing non-whitespace, or for a list parameter at least one non-blank entry. Only when the parameter is optional and you meant to leave it unset, omit it entirely instead — omission and a blank value mean different things here.";
|
|
29
29
|
}, {
|
|
30
30
|
readonly reason: "field_invalid";
|
|
31
31
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
@@ -22,7 +22,7 @@ export declare const getStudyCount: import("@cyanheads/mcp-ts-core").ToolDefinit
|
|
|
22
22
|
readonly reason: "blank_value";
|
|
23
23
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
24
24
|
readonly when: "A parameter was supplied with a blank, whitespace-only, or empty-list value.";
|
|
25
|
-
readonly recovery: "
|
|
25
|
+
readonly recovery: "Supply a value containing non-whitespace, or for a list parameter at least one non-blank entry. Only when the parameter is optional and you meant to leave it unset, omit it entirely instead — omission and a blank value mean different things here.";
|
|
26
26
|
}, {
|
|
27
27
|
readonly reason: "field_invalid";
|
|
28
28
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
@@ -50,7 +50,7 @@ export declare const getStudyResults: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
50
50
|
readonly reason: "blank_value";
|
|
51
51
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
52
52
|
readonly when: "A parameter was supplied with a blank, whitespace-only, or empty-list value.";
|
|
53
|
-
readonly recovery: "
|
|
53
|
+
readonly recovery: "Supply a value containing non-whitespace, or for a list parameter at least one non-blank entry. Only when the parameter is optional and you meant to leave it unset, omit it entirely instead — omission and a blank value mean different things here.";
|
|
54
54
|
}, {
|
|
55
55
|
readonly reason: "rate_limited";
|
|
56
56
|
readonly code: JsonRpcErrorCode.RateLimited;
|
|
@@ -32,7 +32,7 @@ export declare const searchStudies: import("@cyanheads/mcp-ts-core").ToolDefinit
|
|
|
32
32
|
readonly reason: "blank_value";
|
|
33
33
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
34
34
|
readonly when: "A parameter was supplied with a blank, whitespace-only, or empty-list value.";
|
|
35
|
-
readonly recovery: "
|
|
35
|
+
readonly recovery: "Supply a value containing non-whitespace, or for a list parameter at least one non-blank entry. Only when the parameter is optional and you meant to leave it unset, omit it entirely instead — omission and a blank value mean different things here.";
|
|
36
36
|
}, {
|
|
37
37
|
readonly reason: "ids_not_found";
|
|
38
38
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -30,7 +30,11 @@ export declare function firstBlankParam(params: Record<string, string | undefine
|
|
|
30
30
|
* `'[]'` form LLM callers sometimes send is judged on what it resolves to.
|
|
31
31
|
*/
|
|
32
32
|
export declare function firstBlankListParam(params: Record<string, string[] | undefined>): string | undefined;
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Actionable message for a parameter supplied with a blank value. Leads with
|
|
35
|
+
* the fix that works on a required parameter too — omitting one of those fails
|
|
36
|
+
* the schema and returns a bare -32602 with no reason and no recovery hint.
|
|
37
|
+
*/
|
|
34
38
|
export declare function blankValueMessage(param: string): string;
|
|
35
39
|
/** Build AREA[] phase filter and combine with user's advancedFilter. */
|
|
36
40
|
export declare function buildAdvancedFilter(phaseFilter?: string[], advancedFilter?: string): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-helpers.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/query-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACxD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAkBhF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAK9F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAC3C,MAAM,GAAG,SAAS,CAMpB;AAED
|
|
1
|
+
{"version":3,"file":"query-helpers.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/query-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACxD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAkBhF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAK9F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAC3C,MAAM,GAAG,SAAS,CAMpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CACjC,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,GAAG,SAAS,CAWpB"}
|
|
@@ -50,9 +50,13 @@ export function firstBlankListParam(params) {
|
|
|
50
50
|
}
|
|
51
51
|
return undefined;
|
|
52
52
|
}
|
|
53
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Actionable message for a parameter supplied with a blank value. Leads with
|
|
55
|
+
* the fix that works on a required parameter too — omitting one of those fails
|
|
56
|
+
* the schema and returns a bare -32602 with no reason and no recovery hint.
|
|
57
|
+
*/
|
|
54
58
|
export function blankValueMessage(param) {
|
|
55
|
-
return `Parameter '${param}' was supplied with a blank value — an empty or whitespace-only string, an empty list, or a list carrying a blank entry.
|
|
59
|
+
return `Parameter '${param}' was supplied with a blank value — an empty or whitespace-only string, an empty list, or a list carrying a blank entry. Supply a value containing non-whitespace, or for a list at least one non-blank entry; omit the parameter entirely only if it is optional and you meant to leave it unset.`;
|
|
56
60
|
}
|
|
57
61
|
/** Build AREA[] phase filter and combine with user's advancedFilter. */
|
|
58
62
|
export function buildAdvancedFilter(phaseFilter, advancedFilter) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/query-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,UAAU,OAAO,CAAC,CAAgC;IACtD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACrF,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0C;IACxE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA4C;IAE5C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/query-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,UAAU,OAAO,CAAC,CAAgC;IACtD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACrF,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0C;IACxE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA4C;IAE5C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,cAAc,KAAK,oSAAoS,CAAC;AACjU,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CACjC,WAAsB,EACtB,cAAuB;IAEvB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GACR,WAAW,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,CAAC,cAAc,WAAW,CAAC,CAAC,CAAC,EAAE;YAChC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module mcp-server/tools/utils/recovery-hints
|
|
8
8
|
*/
|
|
9
9
|
export declare const RECOVERY_HINTS: {
|
|
10
|
-
readonly blank_value: '
|
|
10
|
+
readonly blank_value: 'Supply a value containing non-whitespace, or for a list parameter at least one non-blank entry. Only when the parameter is optional and you meant to leave it unset, omit it entirely instead — omission and a blank value mean different things here.';
|
|
11
11
|
readonly study_not_found: 'Verify the NCT ID at clinicaltrials.gov or call clinicaltrials_search_studies to discover a valid identifier.';
|
|
12
12
|
readonly ids_not_found: 'Verify each NCT ID exists at clinicaltrials.gov, or call clinicaltrials_search_studies first to discover valid identifiers.';
|
|
13
13
|
readonly field_invalid: 'Call clinicaltrials_get_field_definitions to browse the field tree; use PascalCase piece names like OverallStatus, Phase, or StudyType.';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-hints.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/recovery-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,cAAc;aACzB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"recovery-hints.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/recovery-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,cAAc;aACzB,WAAW,EACT,wPAAwP;aAC1P,eAAe,EACb,+GAA+G;aACjH,aAAa,EACX,6HAA6H;aAC/H,aAAa,EACX,yIAAyI;aAC3I,YAAY,EACV,yIAAyI;aAC3I,iBAAiB,EACf,+ZAA+Z;aACja,WAAW,EACT,oMAAoM;aACtM,YAAY,EACV,gMAAgM;aAClM,cAAc,EACZ,4KAA4K;aAC9K,YAAY,EACV,6GAA6G;CACvG,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module mcp-server/tools/utils/recovery-hints
|
|
8
8
|
*/
|
|
9
9
|
export const RECOVERY_HINTS = {
|
|
10
|
-
blank_value: '
|
|
10
|
+
blank_value: 'Supply a value containing non-whitespace, or for a list parameter at least one non-blank entry. Only when the parameter is optional and you meant to leave it unset, omit it entirely instead — omission and a blank value mean different things here.',
|
|
11
11
|
study_not_found: 'Verify the NCT ID at clinicaltrials.gov or call clinicaltrials_search_studies to discover a valid identifier.',
|
|
12
12
|
ids_not_found: 'Verify each NCT ID exists at clinicaltrials.gov, or call clinicaltrials_search_studies first to discover valid identifiers.',
|
|
13
13
|
field_invalid: 'Call clinicaltrials_get_field_definitions to browse the field tree; use PascalCase piece names like OverallStatus, Phase, or StudyType.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-hints.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/recovery-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"recovery-hints.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/recovery-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EACT,wPAAwP;IAC1P,eAAe,EACb,+GAA+G;IACjH,aAAa,EACX,6HAA6H;IAC/H,aAAa,EACX,yIAAyI;IAC3I,YAAY,EACV,yIAAyI;IAC3I,iBAAiB,EACf,+ZAA+Z;IACja,WAAW,EACT,oMAAoM;IACtM,YAAY,EACV,gMAAgM;IAClM,cAAc,EACZ,4KAA4K;IAC9K,YAAY,EACV,6GAA6G;CACvG,CAAC"}
|
|
@@ -38,6 +38,11 @@ export declare function searchFields(query: string, entries: FieldIndexEntry[],
|
|
|
38
38
|
* Suggest the closest valid `piece` names to an invalid input. Uses the same
|
|
39
39
|
* keyword scoring first, falls back to Levenshtein distance for typos that
|
|
40
40
|
* don't share token-level signal (e.g., `ConditionList` → `Condition`).
|
|
41
|
+
*
|
|
42
|
+
* Both paths drop candidates clearing no minimum similarity, so an input
|
|
43
|
+
* related to no piece name yields nothing rather than the nearest of the
|
|
44
|
+
* unrelated. Callers already render the no-suggestion case: the message still
|
|
45
|
+
* names the invalid input and points at `clinicaltrials_get_field_definitions`.
|
|
41
46
|
*/
|
|
42
47
|
export declare function nearestPieces(invalid: string, entries: FieldIndexEntry[], n?: number): string[];
|
|
43
48
|
//# sourceMappingURL=field-search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-search.d.ts","sourceRoot":"","sources":["../../../src/services/clinical-trials/field-search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAkBpE;AA2FD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EAAE,EAC1B,KAAK,EAAE,MAAM,GACZ;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAI/C;
|
|
1
|
+
{"version":3,"file":"field-search.d.ts","sourceRoot":"","sources":["../../../src/services/clinical-trials/field-search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAkBpE;AA2FD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EAAE,EAC1B,KAAK,EAAE,MAAM,GACZ;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAI/C;AAiBD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC,SAAI,GAAG,MAAM,EAAE,CAmB1F"}
|
|
@@ -130,22 +130,45 @@ export function searchFields(query, entries, limit) {
|
|
|
130
130
|
scored.sort((a, b) => b.s - a.s);
|
|
131
131
|
return { entries: scored.slice(0, Math.max(1, limit)).map((x) => x.e), total: scored.length };
|
|
132
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Floor a keyword-scored suggestion must clear. Sits above the most a candidate
|
|
135
|
+
* can earn with no piece-name evidence at all — a lone path token (60), a lone
|
|
136
|
+
* description token (30), or both (90) — so a coincidence in the metadata
|
|
137
|
+
* surrounding a field never reads as a did-you-mean.
|
|
138
|
+
*/
|
|
139
|
+
const MIN_SUGGESTION_SCORE = 100;
|
|
140
|
+
/**
|
|
141
|
+
* Ceiling on edit distance as a fraction of the longer string, for the fallback
|
|
142
|
+
* path. A near miss stays well under it (`Enrolment` → `EnrollmentCount` is
|
|
143
|
+
* 0.40); a name sharing no structure with any piece sits at or near 1.0.
|
|
144
|
+
*/
|
|
145
|
+
const MAX_SUGGESTION_DISTANCE_RATIO = 0.5;
|
|
133
146
|
/**
|
|
134
147
|
* Suggest the closest valid `piece` names to an invalid input. Uses the same
|
|
135
148
|
* keyword scoring first, falls back to Levenshtein distance for typos that
|
|
136
149
|
* don't share token-level signal (e.g., `ConditionList` → `Condition`).
|
|
150
|
+
*
|
|
151
|
+
* Both paths drop candidates clearing no minimum similarity, so an input
|
|
152
|
+
* related to no piece name yields nothing rather than the nearest of the
|
|
153
|
+
* unrelated. Callers already render the no-suggestion case: the message still
|
|
154
|
+
* names the invalid input and points at `clinicaltrials_get_field_definitions`.
|
|
137
155
|
*/
|
|
138
156
|
export function nearestPieces(invalid, entries, n = 3) {
|
|
139
157
|
const scored = entries
|
|
140
158
|
.map((e) => ({ piece: e.piece, score: scoreEntry(invalid, e) }))
|
|
141
|
-
.filter((x) => x.score
|
|
159
|
+
.filter((x) => x.score >= MIN_SUGGESTION_SCORE);
|
|
142
160
|
if (scored.length > 0) {
|
|
143
161
|
scored.sort((a, b) => b.score - a.score);
|
|
144
162
|
return scored.slice(0, n).map((x) => x.piece);
|
|
145
163
|
}
|
|
146
164
|
const target = invalid.toLowerCase();
|
|
147
165
|
return entries
|
|
148
|
-
.map((e) =>
|
|
166
|
+
.map((e) => {
|
|
167
|
+
const piece = e.piece.toLowerCase();
|
|
168
|
+
const dist = levenshtein(target, piece);
|
|
169
|
+
return { piece: e.piece, dist, ratio: dist / Math.max(target.length, piece.length) };
|
|
170
|
+
})
|
|
171
|
+
.filter((x) => x.ratio <= MAX_SUGGESTION_DISTANCE_RATIO)
|
|
149
172
|
.sort((a, b) => a.dist - b.dist)
|
|
150
173
|
.slice(0, n)
|
|
151
174
|
.map((x) => x.piece);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-search.js","sourceRoot":"","sources":["../../../src/services/clinical-trials/field-search.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"field-search.js","sourceRoot":"","sources":["../../../src/services/clinical-trials/field-search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clinicaltrialsgov-mcp-server",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.1",
|
|
4
4
|
"mcpName": "io.github.cyanheads/clinicaltrialsgov-mcp-server",
|
|
5
5
|
"description": "Search ClinicalTrials.gov trials, retrieve study details and results, and match patients to eligible trials via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
"homepage": "https://github.com/cyanheads/clinicaltrialsgov-mcp-server#readme",
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "bun run scripts/build.ts",
|
|
31
|
-
"build:worker": "bun build ./src/worker.ts --outdir ./dist --target bun --no-external",
|
|
32
|
-
"deploy:dev": "MCP_TRANSPORT_TYPE=http bunx wrangler dev",
|
|
33
|
-
"deploy:prod": "MCP_TRANSPORT_TYPE=http bunx wrangler deploy",
|
|
34
31
|
"start": "bun ./dist/index.js",
|
|
35
32
|
"start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
|
|
36
33
|
"start:http": "MCP_TRANSPORT_TYPE=http bun ./dist/index.js",
|
|
@@ -49,7 +46,6 @@
|
|
|
49
46
|
"prepare": "git config core.hooksPath .husky || exit 0",
|
|
50
47
|
"inspector": "bunx mcp-inspector --config mcp.json --server clinicaltrialsgov-mcp-server",
|
|
51
48
|
"test": "bunx vitest run",
|
|
52
|
-
"test:conformance": "bunx vitest run --config vitest.conformance.ts",
|
|
53
49
|
"test:fuzz": "bunx vitest run fuzz",
|
|
54
50
|
"test:coverage": "bunx vitest run --coverage",
|
|
55
51
|
"coverage:update": "bun run scripts/update-coverage.ts",
|
|
@@ -108,7 +104,6 @@
|
|
|
108
104
|
},
|
|
109
105
|
"devDependencies": {
|
|
110
106
|
"@biomejs/biome": "^2.5.8",
|
|
111
|
-
"@cloudflare/workers-types": "5.20260815.1",
|
|
112
107
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
113
108
|
"@types/bun": "^1.3.14",
|
|
114
109
|
"@types/node": "26.2.0",
|