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

ParameterTypeRequiredDescription
querystringYesThe medical term or concept name to search for (1–500 characters)
vocabulary_idsstringComma-separated vocabulary IDs to filter by. Examples: SNOMED, ICD10CM, RxNorm, LOINC
domain_idsstringComma-separated domain IDs to filter by. Examples: Condition, Drug, Measurement, Procedure
standard_conceptstringFilter by standard concept status: S for Standard, C for Classification
pagenumberPage number, 1-based (default: 1)
page_sizenumberResults per page, 1–50 (default: 10)

Example

"Search for metformin in RxNorm"
→ search_concepts(query: "metformin", vocabulary_ids: "RxNorm")

get_concept

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

Parameters

ParameterTypeRequiredDescription
concept_idnumberYesThe OMOP concept_id (numeric identifier)

Example

"What is concept 201826?"
→ get_concept(concept_id: 201826)

get_concept_by_code

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

Parameters

ParameterTypeRequiredDescription
vocabulary_idstringYesThe vocabulary system. Examples: ICD10CM, SNOMED, RxNorm, LOINC, HCPCS, NDC
concept_codestringYesThe vocabulary-specific code. Examples: E11.9 (ICD-10), 44054006 (SNOMED), 4850 (LOINC)

Example

"Look up ICD-10 code E11.9"
→ get_concept_by_code(vocabulary_id: "ICD10CM", concept_code: "E11.9")

map_concept

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

Parameters

ParameterTypeRequiredDescription
concept_idnumberYesThe source OMOP concept_id to map from
target_vocabulariesstringComma-separated vocabulary IDs to map to. Examples: ICD10CM, SNOMED, RxNorm

Example

"Map SNOMED concept 201826 to ICD-10"
→ map_concept(concept_id: 201826, target_vocabularies: "ICD10CM")

get_hierarchy

Navigate concept hierarchy - ancestors, descendants, or both.

Parameters

ParameterTypeRequiredDescription
concept_idnumberYesThe OMOP concept_id
directionstringup for ancestors, down for descendants, both for full context (default: both)
max_levelsnumberMaximum levels to traverse (default: 5 for up, 10 for down)
max_resultsnumberMaximum nodes to return, 1–500 (default: 500)
vocabulary_idsstringComma-separated vocabulary IDs to filter results

Example

"Show me all descendants of Diabetes mellitus"
→ get_hierarchy(concept_id: 201820, direction: "down", max_levels: 3)

list_vocabularies

List available medical vocabularies with statistics.

Parameters

ParameterTypeRequiredDescription
searchstringOptional search term to filter vocabularies by name

Example

"What vocabularies are available?"
→ list_vocabularies()

"Search for drug vocabularies"
→ list_vocabularies(search: "drug")

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

ParameterTypeRequiredDescription
querystringYesNatural language description of the medical concept to find (1–500 characters)
vocabulary_idsstringComma-separated vocabulary IDs to filter by. Examples: SNOMED, ICD10CM, RxNorm
domain_idsstringComma-separated domain IDs to filter by. Examples: Condition, Drug, Measurement
standard_conceptstringFilter by standard concept status: S for Standard, C for Classification
thresholdnumberMinimum similarity score, 0.0–1.0 (default: 0.5). Higher = stricter matching
page_sizenumberResults to return, 1–50 (default: 10)

Example

"Find concepts related to heart attack"
→ semantic_search(query: "heart attack", vocabulary_ids: "SNOMED", threshold: 0.5)

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

ParameterTypeRequiredDescription
concept_idnumberOne of threeFind concepts similar to this OMOP concept ID
concept_namestringOne of threeFind concepts similar to this concept name
querystringOne of threeFind concepts matching this natural language description
algorithmstringSimilarity algorithm: semantic (meaning), lexical (text), hybrid (both). Default: hybrid
similarity_thresholdnumberMinimum similarity score, 0.0–1.0 (default: 0.7)
page_sizenumberResults to return, 1–100 (default: 20)
vocabulary_idsstringComma-separated vocabulary IDs to filter results
domain_idsstringComma-separated domain IDs to filter results

Example

"What concepts are similar to Type 2 diabetes?"
→ find_similar_concepts(concept_name: "Type 2 diabetes mellitus", algorithm: "hybrid")

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

ParameterTypeRequiredDescription
concept_idnumberYesThe OMOP concept_id to explore
include_hierarchybooleanInclude ancestors and descendants (default: true)
hierarchy_levelsnumberHow many hierarchy levels to fetch, 1–5 (default: 2)
include_mappingsbooleanInclude cross-vocabulary mappings (default: true)
target_vocabulariesstringComma-separated vocabulary IDs to filter mappings. Examples: ICD10CM, SNOMED

Example

"Give me everything about SNOMED concept 201826"
→ explore_concept(concept_id: 201826)

"Show concept 201826 with ICD-10 mappings only"
→ explore_concept(concept_id: 201826, target_vocabularies: "ICD10CM")

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

ParameterTypeRequiredDescription
systemstringFHIR code system URI (e.g. http://snomed.info/sct, http://loinc.org)
codestringCode value from the FHIR Coding
displaystringDisplay text for semantic search fallback when code is unavailable
vocabulary_idstringDirect OMOP vocabulary_id (e.g. SNOMED, ICD10CM), bypasses URI resolution
resource_typestringFHIR resource type (Condition, Observation, MedicationRequest, Procedure, etc.)
include_recommendationsbooleanInclude Phoebe-recommended related concepts (default: false)
include_qualitybooleanInclude mapping quality signal: high, medium, low, or manual_review (default: false)
At least one of (system + code), (vocabulary_id + code), or display is required.

Example

"What OMOP concept does SNOMED 44054006 map to?"
→ fhir_resolve(system: "http://snomed.info/sct", code: "44054006", resource_type: "Condition")

"Resolve this ICD-10 code to OMOP with quality signal"
→ fhir_resolve(system: "http://hl7.org/fhir/sid/icd-10-cm", code: "E11.9", include_quality: true)

"Find the OMOP concept for 'heart attack' using semantic search"
→ fhir_resolve(display: "heart attack", resource_type: "Condition")

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

ParameterTypeRequiredDescription
codingarrayYesArray of FHIR Coding entries (max 20). Each with system, code, and optional display
textstringCodeableConcept.text for semantic search fallback if no coding resolves
resource_typestringFHIR resource type for domain alignment
include_recommendationsbooleanInclude Phoebe recommendations (default: false)
include_qualitybooleanInclude mapping quality signal (default: false)

Example

"Which coding should I use from this CodeableConcept with SNOMED and ICD-10?"
→ fhir_resolve_codeable_concept(
    coding: [
      {system: "http://snomed.info/sct", code: "44054006"},
      {system: "http://hl7.org/fhir/sid/icd-10-cm", code: "E11.9"}
    ],
    resource_type: "Condition"
  )