Skip to main content
Multilingual support: AI agents using these MCP tools can accept queries in any language. The agent translates to English before calling OMOPHub, then presents results in the user’s language. No special configuration needed - just ask in your language.

search_concepts

Search for medical concepts by name or clinical term across all vocabularies.

Parameters

Example


get_concept

Get detailed information about a specific OMOP concept by its numeric ID.

Parameters

Example


get_concept_by_code

Look up a concept using a vocabulary-specific code (e.g., ICD-10 E11.9, SNOMED 44054006).

Parameters

Example


map_concept

Map a concept to equivalent concepts in other vocabularies (e.g., SNOMED to ICD-10).

Parameters

Example


get_hierarchy

Navigate concept hierarchy - ancestors, descendants, or both.

Parameters

Example


list_vocabularies

List available medical vocabularies with statistics.

Parameters

Example


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”.

Parameters

Example


find_similar_concepts

Find medical concepts similar to a reference concept, name, or natural language query. Supports three similarity algorithms. Provide exactly one of: concept_id, concept_name, or query.

Parameters

Pagination

The tool’s text output ends with the position in the ranking — Page 2 of 3 — more results available, request page 3. — and the JSON block carries the full pagination object. Page while has_next is true rather than comparing page to total_pages. Every algorithm ranks a bounded candidate pool and total_candidates counts only what cleared the threshold inside it, so the totals can be lower bounds; search_metadata.totals_are_lower_bound says when. Reachable depth is bounded at roughly 500 / page_size pages — the pool is a constant 500 candidates, so a score never changes with page_size — and a page past the end comes back empty with has_next: false rather than as an error. hybrid fuses both signals as 0.7 x semantic + 0.3 x lexical. Every candidate is scored by that rule, with a signal neither retrieval established counting as 0. So a concept sharing no words with the query keeps only 0.7 x its semantic score, and one the embedding search did not return keeps only 0.3 x its lexical score — capping it at 0.3. The same similarity_threshold is therefore stricter for hybrid than for either single-signal algorithm. Lower it, use semantic for conceptual matches that share no vocabulary, or use lexical for exact name and code matches: hybrid is not a superset of the other two. When hybrid is requested but the embedding service is unavailable, the tool serves the lexical half and says so, reporting algorithm_used: "lexical" with degraded_from: "hybrid".

Example


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.

Parameters

Example


fhir_resolve

Resolve a FHIR coded value (system URI + code) to its OMOP standard concept, CDM target table, and optional Phoebe recommendations. Supports text-only input via semantic search fallback.

Parameters

At least one of (system + code), (vocabulary_id + code), or display is required.

Example


fhir_resolve_codeable_concept

Resolve a FHIR CodeableConcept with multiple codings. Picks the best match per OHDSI vocabulary preference (SNOMED > RxNorm > LOINC > CVX > ICD-10). Falls back to the text field via semantic search if no coding resolves.

Parameters

Example