@omophub/omophub-mcp 1.2.2 → 1.3.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 +45 -4
- package/dist/client/api.d.ts +2 -2
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +1 -1
- package/dist/client/api.js.map +1 -1
- package/dist/client/resolve.d.ts +26 -0
- package/dist/client/resolve.d.ts.map +1 -0
- package/dist/client/resolve.js +55 -0
- package/dist/client/resolve.js.map +1 -0
- package/dist/client/types.d.ts +13 -8
- package/dist/client/types.d.ts.map +1 -1
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +21 -4
- package/dist/formatters/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -9
- package/dist/index.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +7 -4
- package/dist/resources/index.js.map +1 -1
- package/dist/server.d.ts +2 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -3
- package/dist/server.js.map +1 -1
- package/dist/tools/concepts.d.ts.map +1 -1
- package/dist/tools/concepts.js +7 -4
- package/dist/tools/concepts.js.map +1 -1
- package/dist/tools/explore.d.ts.map +1 -1
- package/dist/tools/explore.js +6 -4
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/hierarchy.d.ts.map +1 -1
- package/dist/tools/hierarchy.js +4 -2
- package/dist/tools/hierarchy.js.map +1 -1
- package/dist/tools/mappings.d.ts.map +1 -1
- package/dist/tools/mappings.js +4 -2
- package/dist/tools/mappings.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +4 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/semantic-search.d.ts.map +1 -1
- package/dist/tools/semantic-search.js +4 -2
- package/dist/tools/semantic-search.js.map +1 -1
- package/dist/tools/similar.d.ts.map +1 -1
- package/dist/tools/similar.js +4 -2
- package/dist/tools/similar.js.map +1 -1
- package/dist/tools/vocabularies.d.ts.map +1 -1
- package/dist/tools/vocabularies.js +36 -10
- package/dist/tools/vocabularies.js.map +1 -1
- package/dist/transports/http.d.ts +3 -2
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +126 -19
- package/dist/transports/http.js.map +1 -1
- package/dist/utils/auth.d.ts +1 -1
- package/dist/utils/auth.d.ts.map +1 -1
- package/dist/utils/auth.js +1 -6
- package/dist/utils/auth.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concepts.js","sourceRoot":"","sources":["../../src/tools/concepts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"concepts.js","sourceRoot":"","sources":["../../src/tools/concepts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAuBtD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAoOnF"}
|
package/dist/tools/explore.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { resolveClient } from '../client/resolve.js';
|
|
2
3
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
3
4
|
export function registerExploreTools(server, client) {
|
|
4
5
|
server.tool('explore_concept', 'Get a comprehensive view of a medical concept in one call: detailed info, ancestors/descendants hierarchy, and cross-vocabulary mappings. Use this instead of calling get_concept + get_hierarchy + map_concept separately. Ideal for understanding what a concept is, where it sits in the classification tree, and how it maps to other coding systems.', {
|
|
@@ -22,25 +23,26 @@ export function registerExploreTools(server, client) {
|
|
|
22
23
|
.max(200)
|
|
23
24
|
.optional()
|
|
24
25
|
.describe("Comma-separated vocabulary IDs to filter mappings. Examples: 'ICD10CM', 'SNOMED'."),
|
|
25
|
-
}, async ({ concept_id, include_hierarchy, include_mappings, hierarchy_levels, target_vocabularies,
|
|
26
|
+
}, async ({ concept_id, include_hierarchy, include_mappings, hierarchy_levels, target_vocabularies }, extra) => {
|
|
26
27
|
try {
|
|
28
|
+
const rc = resolveClient(extra, client);
|
|
27
29
|
// Build parallel requests
|
|
28
30
|
const requests = [];
|
|
29
31
|
// 1. Always fetch concept details
|
|
30
|
-
const conceptReq =
|
|
32
|
+
const conceptReq = rc.request(`/concepts/${concept_id}`, {}, 'explore_concept');
|
|
31
33
|
requests.push(conceptReq);
|
|
32
34
|
// 2. Optionally fetch hierarchy
|
|
33
35
|
let hierarchyReq = null;
|
|
34
36
|
if (include_hierarchy !== false) {
|
|
35
37
|
const levels = hierarchy_levels ?? 2;
|
|
36
|
-
hierarchyReq =
|
|
38
|
+
hierarchyReq = rc.request(`/concepts/${concept_id}/hierarchy`, { max_levels: levels }, 'explore_concept');
|
|
37
39
|
requests.push(hierarchyReq);
|
|
38
40
|
}
|
|
39
41
|
// 3. Optionally fetch mappings via relationships endpoint
|
|
40
42
|
// (The /mappings endpoint has a schema resolution bug — using /relationships instead)
|
|
41
43
|
let mappingsReq = null;
|
|
42
44
|
if (include_mappings !== false) {
|
|
43
|
-
mappingsReq =
|
|
45
|
+
mappingsReq = rc.request(`/concepts/${concept_id}/relationships`, { page_size: 100 }, 'explore_concept');
|
|
44
46
|
requests.push(mappingsReq);
|
|
45
47
|
}
|
|
46
48
|
// Execute all in parallel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/tools/hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/tools/hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAoHrF"}
|
package/dist/tools/hierarchy.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { resolveClient } from '../client/resolve.js';
|
|
2
3
|
import { formatHierarchy } from '../formatters/index.js';
|
|
3
4
|
import { hierarchyCache } from '../utils/cache.js';
|
|
4
5
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
@@ -24,8 +25,9 @@ export function registerHierarchyTools(server, client) {
|
|
|
24
25
|
.max(200)
|
|
25
26
|
.optional()
|
|
26
27
|
.describe('Comma-separated vocabulary IDs to filter results. Leave empty for all.'),
|
|
27
|
-
}, async ({ concept_id, direction, max_levels, max_results, vocabulary_ids }) => {
|
|
28
|
+
}, async ({ concept_id, direction, max_levels, max_results, vocabulary_ids }, extra) => {
|
|
28
29
|
try {
|
|
30
|
+
const rc = resolveClient(extra, client);
|
|
29
31
|
const cacheKey = `hierarchy:${concept_id}:${direction}:${max_levels}:${max_results}:${vocabulary_ids}`;
|
|
30
32
|
const cached = hierarchyCache.get(cacheKey);
|
|
31
33
|
if (cached) {
|
|
@@ -51,7 +53,7 @@ export function registerHierarchyTools(server, client) {
|
|
|
51
53
|
params.page_size = max_results;
|
|
52
54
|
if (vocabulary_ids)
|
|
53
55
|
params.vocabulary_ids = vocabulary_ids;
|
|
54
|
-
const rawResponse = await
|
|
56
|
+
const rawResponse = await rc.request(`/concepts/${concept_id}/${endpoint}`, params, 'get_hierarchy');
|
|
55
57
|
// API returns flat concept fields — normalize into { concept: {...} } for formatter
|
|
56
58
|
const raw = rawResponse.data;
|
|
57
59
|
const totalAncestors = raw.total_ancestors ?? raw.hierarchy_summary?.total_ancestors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/tools/hierarchy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/tools/hierarchy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mappings.d.ts","sourceRoot":"","sources":["../../src/tools/mappings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mappings.d.ts","sourceRoot":"","sources":["../../src/tools/mappings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAgDnF"}
|
package/dist/tools/mappings.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { resolveClient } from '../client/resolve.js';
|
|
2
3
|
import { formatMappings } from '../formatters/index.js';
|
|
3
4
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
4
5
|
export function registerMappingTools(server, client) {
|
|
@@ -9,13 +10,14 @@ export function registerMappingTools(server, client) {
|
|
|
9
10
|
.max(200)
|
|
10
11
|
.optional()
|
|
11
12
|
.describe("Comma-separated vocabulary IDs to map TO. Examples: 'ICD10CM', 'SNOMED', 'RxNorm'. Omit to see all available mappings."),
|
|
12
|
-
}, async ({ concept_id, target_vocabularies }) => {
|
|
13
|
+
}, async ({ concept_id, target_vocabularies }, extra) => {
|
|
13
14
|
try {
|
|
15
|
+
const rc = resolveClient(extra, client);
|
|
14
16
|
const params = {};
|
|
15
17
|
// Map PRD param to actual API param (target_vocabularies → target_vocabulary)
|
|
16
18
|
if (target_vocabularies)
|
|
17
19
|
params.target_vocabulary = target_vocabularies;
|
|
18
|
-
const response = await
|
|
20
|
+
const response = await rc.request(`/concepts/${concept_id}/mappings`, params, 'map_concept');
|
|
19
21
|
const { text, json } = formatMappings(response, concept_id);
|
|
20
22
|
return {
|
|
21
23
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mappings.js","sourceRoot":"","sources":["../../src/tools/mappings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"mappings.js","sourceRoot":"","sources":["../../src/tools/mappings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,MAAM,CAAC,IAAI,CACT,aAAa,EACb,6eAA6e,EAC7e;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACzE,mBAAmB,EAAE,CAAC;aACnB,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wHAAwH,CACzH;KACJ,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,MAAM,GAA0D,EAAE,CAAC;YAEzE,8EAA8E;YAC9E,IAAI,mBAAmB;gBAAE,MAAM,CAAC,iBAAiB,GAAG,mBAAmB,CAAC;YAExE,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAC/B,aAAa,UAAU,WAAW,EAClC,MAAM,EACN,aAAa,CACd,CAAC;YAEF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE5D,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE;oBAC/B,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE;iBACtC;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE;oBAC/B,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE;iBACtC;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CA+ElF"}
|
package/dist/tools/search.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { resolveClient } from '../client/resolve.js';
|
|
2
3
|
import { formatConceptList } from '../formatters/index.js';
|
|
3
4
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
4
5
|
export function registerSearchTools(server, client) {
|
|
@@ -30,8 +31,9 @@ export function registerSearchTools(server, client) {
|
|
|
30
31
|
.max(50)
|
|
31
32
|
.default(10)
|
|
32
33
|
.describe('Number of results to return (1-50, default 10)'),
|
|
33
|
-
}, async ({ query, vocabulary_ids, domain_ids, standard_concept, page, page_size }) => {
|
|
34
|
+
}, async ({ query, vocabulary_ids, domain_ids, standard_concept, page, page_size }, extra) => {
|
|
34
35
|
try {
|
|
36
|
+
const rc = resolveClient(extra, client);
|
|
35
37
|
const params = {
|
|
36
38
|
query,
|
|
37
39
|
page: page ?? 1,
|
|
@@ -44,7 +46,7 @@ export function registerSearchTools(server, client) {
|
|
|
44
46
|
params.domain_ids = domain_ids;
|
|
45
47
|
if (standard_concept)
|
|
46
48
|
params.standard_concept = standard_concept;
|
|
47
|
-
const response = await
|
|
49
|
+
const response = await rc.request('/search/concepts', params, 'search_concepts');
|
|
48
50
|
const { text, json } = formatConceptList(response, query);
|
|
49
51
|
return {
|
|
50
52
|
content: [
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-search.d.ts","sourceRoot":"","sources":["../../src/tools/semantic-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic-search.d.ts","sourceRoot":"","sources":["../../src/tools/semantic-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUtD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CA6G1F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { resolveClient } from '../client/resolve.js';
|
|
2
3
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
3
4
|
export function registerSemanticSearchTools(server, client) {
|
|
4
5
|
server.tool('semantic_search', "Search for medical concepts using natural language with neural embeddings. Unlike keyword search, semantic search understands clinical meaning — 'heart attack' finds 'Myocardial infarction', 'high blood sugar' finds 'Hyperglycemia'. Returns concepts ranked by similarity score. Use this when the user describes symptoms, conditions, or treatments in everyday language rather than exact medical terminology.", {
|
|
@@ -34,8 +35,9 @@ export function registerSemanticSearchTools(server, client) {
|
|
|
34
35
|
.max(50)
|
|
35
36
|
.default(10)
|
|
36
37
|
.describe('Number of results to return (1-50, default 10)'),
|
|
37
|
-
}, async ({ query, vocabulary_ids, domain_ids, standard_concept, threshold, page_size }) => {
|
|
38
|
+
}, async ({ query, vocabulary_ids, domain_ids, standard_concept, threshold, page_size }, extra) => {
|
|
38
39
|
try {
|
|
40
|
+
const rc = resolveClient(extra, client);
|
|
39
41
|
const params = {
|
|
40
42
|
query,
|
|
41
43
|
page_size: page_size ?? 10,
|
|
@@ -47,7 +49,7 @@ export function registerSemanticSearchTools(server, client) {
|
|
|
47
49
|
params.domain_ids = domain_ids;
|
|
48
50
|
if (standard_concept)
|
|
49
51
|
params.standard_concept = standard_concept;
|
|
50
|
-
const response = await
|
|
52
|
+
const response = await rc.request('/concepts/semantic-search', params, 'semantic_search');
|
|
51
53
|
const results = response.data?.results ?? [];
|
|
52
54
|
if (results.length === 0) {
|
|
53
55
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-search.js","sourceRoot":"","sources":["../../src/tools/semantic-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic-search.js","sourceRoot":"","sources":["../../src/tools/semantic-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"similar.d.ts","sourceRoot":"","sources":["../../src/tools/similar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"similar.d.ts","sourceRoot":"","sources":["../../src/tools/similar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA4BtD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAuKnF"}
|
package/dist/tools/similar.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { resolveClient } from '../client/resolve.js';
|
|
2
3
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
3
4
|
export function registerSimilarTools(server, client) {
|
|
4
5
|
server.tool('find_similar_concepts', "Find medical concepts similar to a reference concept, name, or natural language query. Supports three algorithms: 'semantic' (neural embeddings — best for meaning), 'lexical' (text matching — best for typos), 'hybrid' (combined — default). Provide exactly ONE of: concept_id, concept_name, or query. Use this to explore related concepts, find alternative codes, or build phenotype concept sets. Tip: For drug vocabularies like RxNorm, use drug class names ('ACE inhibitors', 'beta blockers', 'antihypertensives') rather than symptom descriptions ('medications for high blood pressure') — the embedding model aligns better with clinical terminology than lay language.", {
|
|
@@ -39,8 +40,9 @@ export function registerSimilarTools(server, client) {
|
|
|
39
40
|
.max(200)
|
|
40
41
|
.optional()
|
|
41
42
|
.describe("Comma-separated domain IDs to filter results. Examples: 'Condition', 'Drug'."),
|
|
42
|
-
}, async ({ concept_id, concept_name, query, algorithm, similarity_threshold, page_size, vocabulary_ids, domain_ids, }) => {
|
|
43
|
+
}, async ({ concept_id, concept_name, query, algorithm, similarity_threshold, page_size, vocabulary_ids, domain_ids, }, extra) => {
|
|
43
44
|
try {
|
|
45
|
+
const rc = resolveClient(extra, client);
|
|
44
46
|
// Validate exactly one input source
|
|
45
47
|
const provided = [concept_id, concept_name, query].filter((v) => v !== undefined).length;
|
|
46
48
|
if (provided !== 1) {
|
|
@@ -75,7 +77,7 @@ export function registerSimilarTools(server, client) {
|
|
|
75
77
|
.split(',')
|
|
76
78
|
.map((s) => s.trim())
|
|
77
79
|
.filter(Boolean);
|
|
78
|
-
const response = await
|
|
80
|
+
const response = await rc.post('/search/similar', body, 'find_similar_concepts');
|
|
79
81
|
const data = response.data;
|
|
80
82
|
const concepts = data?.similar_concepts ?? [];
|
|
81
83
|
const meta = data?.search_metadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"similar.js","sourceRoot":"","sources":["../../src/tools/similar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA0BvD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,4pBAA4pB,EAC5pB;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QAC3F,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4CAA4C,CAAC;QACzD,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,SAAS,EAAE,CAAC;aACT,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;aACvC,OAAO,CAAC,QAAQ,CAAC;aACjB,QAAQ,CACP,kGAAkG,CACnG;QACH,oBAAoB,EAAE,CAAC;aACpB,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,GAAG,CAAC;aACZ,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,uCAAuC,CAAC;QACpD,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,kFAAkF,CACnF;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8EAA8E,CAAC;KAC5F,EACD,KAAK,
|
|
1
|
+
{"version":3,"file":"similar.js","sourceRoot":"","sources":["../../src/tools/similar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabularies.d.ts","sourceRoot":"","sources":["../../src/tools/vocabularies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"vocabularies.d.ts","sourceRoot":"","sources":["../../src/tools/vocabularies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA8BtD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAyDtF"}
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { resolveClient } from '../client/resolve.js';
|
|
2
3
|
import { formatVocabularyList } from '../formatters/index.js';
|
|
3
4
|
import { vocabularyCache } from '../utils/cache.js';
|
|
4
5
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
6
|
+
const PAGE_SIZE = 100;
|
|
7
|
+
async function fetchAllVocabularies(client) {
|
|
8
|
+
const all = [];
|
|
9
|
+
let page = 1;
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
11
|
+
while (true) {
|
|
12
|
+
const raw = await client.request('/vocabularies', { include_stats: true, page_size: PAGE_SIZE, page }, 'list_vocabularies');
|
|
13
|
+
const batch = raw.data.vocabularies;
|
|
14
|
+
all.push(...batch);
|
|
15
|
+
if (batch.length < PAGE_SIZE || !raw.meta?.pagination?.has_next)
|
|
16
|
+
break;
|
|
17
|
+
page++;
|
|
18
|
+
}
|
|
19
|
+
return all;
|
|
20
|
+
}
|
|
5
21
|
export function registerVocabularyTools(server, client) {
|
|
6
22
|
server.tool('list_vocabularies', 'List all available medical vocabularies in the OMOP standardized vocabulary system with concept counts and metadata. Use this to understand what terminology systems are available (SNOMED CT, ICD-10-CM, RxNorm, LOINC, etc.) and their scope.', {
|
|
7
23
|
search: z
|
|
@@ -9,19 +25,29 @@ export function registerVocabularyTools(server, client) {
|
|
|
9
25
|
.max(200)
|
|
10
26
|
.optional()
|
|
11
27
|
.describe('Optional search term to filter vocabularies by name'),
|
|
12
|
-
}, async ({ search }) => {
|
|
28
|
+
}, async ({ search }, extra) => {
|
|
13
29
|
try {
|
|
30
|
+
const rc = resolveClient(extra, client);
|
|
14
31
|
const cacheKey = 'vocabularies:all';
|
|
15
|
-
let
|
|
16
|
-
if (!
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
response = {
|
|
20
|
-
...rawResponse,
|
|
21
|
-
data: rawResponse.data.vocabularies,
|
|
22
|
-
};
|
|
23
|
-
vocabularyCache.set(cacheKey, response);
|
|
32
|
+
let vocabs = vocabularyCache.get(cacheKey);
|
|
33
|
+
if (!vocabs) {
|
|
34
|
+
vocabs = await fetchAllVocabularies(rc);
|
|
35
|
+
vocabularyCache.set(cacheKey, vocabs);
|
|
24
36
|
}
|
|
37
|
+
const response = {
|
|
38
|
+
success: true,
|
|
39
|
+
data: vocabs,
|
|
40
|
+
meta: {
|
|
41
|
+
pagination: {
|
|
42
|
+
total_items: vocabs.length,
|
|
43
|
+
page: 1,
|
|
44
|
+
page_size: vocabs.length,
|
|
45
|
+
total_pages: 1,
|
|
46
|
+
has_next: false,
|
|
47
|
+
has_previous: false,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
25
51
|
const { text, json } = formatVocabularyList(response, search);
|
|
26
52
|
return {
|
|
27
53
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabularies.js","sourceRoot":"","sources":["../../src/tools/vocabularies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"vocabularies.js","sourceRoot":"","sources":["../../src/tools/vocabularies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type Server } from 'node:http';
|
|
2
2
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import type { OmopHubClient } from '../client/api.js';
|
|
3
4
|
/**
|
|
4
|
-
* Starts an HTTP server with
|
|
5
|
+
* Starts an HTTP server with per-session MCP transports on /
|
|
5
6
|
* and a health endpoint on /health.
|
|
6
7
|
*/
|
|
7
|
-
export declare function startHttpTransport(
|
|
8
|
+
export declare function startHttpTransport(serverFactory: (client: OmopHubClient) => McpServer, defaultClient: OmopHubClient, port: number): Promise<Server>;
|
|
8
9
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA4BtD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,SAAS,EACnD,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CA8JjB"}
|