{"name":"io.github.SidneyBissoli/medical-terminologies-mcp","slug":"sidneybissoli-medical-terminologies-mcp","title":"Medical Terminologies MCP","description":"Diagnoses, drugs & lab codes: ICD-11, SNOMED, LOINC, RxNorm, MeSH, ATC, CID-10. 33 tools, MIT.","url":"https://mcp.market/server/sidneybissoli-medical-terminologies-mcp","rating":null,"grade":"A","score":90,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":50,"stars":13,"forks":5,"downloads_week":1306,"last_push_at":"2026-09-16T23:46:19.000Z","license":"MIT"},"uptime":{"percent":100,"checks":2,"ok":2,"last_checked_at":"2026-09-19T22:55:45.379Z","last_ok_at":"2026-09-19T22:55:45.379Z","latency_ms":72},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/SidneyBissoli/medical-terminologies-mcp","website":"https://medical.sidneybissoli.com","version":"1.12.1","remotes":[{"type":"streamable-http","url":"https://medical.sidneybissoli.com/mcp"}],"packages":[{"registryType":"npm","identifier":"medical-terminologies-mcp","version":"1.12.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"WHO ICD-11 API Client ID. Required only for ICD-11 tools (5 tools); the server starts without it and other terminologies (LOINC, RxNorm, MeSH, ATC, CID-10) work unauthenticated. Get credentials at https://icd.who.int/icdapi.","name":"WHO_CLIENT_ID"},{"description":"WHO ICD-11 API Client Secret. Required only for ICD-11 tools.","isSecret":true,"name":"WHO_CLIENT_SECRET"},{"description":"ICD-11 release to query (e.g. 2024-01, 2025-01). Optional; defaults to 2024-01.","name":"WHO_ICD11_RELEASE_ID"},{"description":"Set to 'true' to register the 6 SNOMED-dependent tools (snomed_search, snomed_concept, snomed_hierarchy, snomed_descriptions, snomed_ecl, plus map_snomed_to_icd10). Disabled by default because the historical public IHTSDO Snowstorm endpoint was retired (HTTP 410 Gone). Requires SNOMED_BASE_URL pointing at a working self-hosted Snowstorm.","name":"ENABLE_SNOMED_TOOLS"},{"description":"Base URL of a self-hosted Snowstorm instance (e.g. https://my-snowstorm.example.com/snowstorm/snomed-ct). Required only when ENABLE_SNOMED_TOOLS is true.","name":"SNOMED_BASE_URL"},{"description":"Accept-Language tag(s) for SNOMED responses (e.g. pt, pt-BR, es). Optional; defaults to 'en'. Composite values with q-weights depend on the upstream Snowstorm instance.","name":"SNOMED_LANGUAGE"},{"description":"pino log level (debug, info, warn, error, fatal). Optional; defaults to 'info'. Logs go to stderr only — never stdout (which is the MCP stdio transport).","name":"LOG_LEVEL"}]},{"registryType":"npm","identifier":"medical-terminologies-mcp","version":"1.12.1","transport":{"type":"streamable-http","url":"http://localhost:3000/mcp"},"packageArguments":[{"type":"named","name":"--http"},{"description":"TCP port to listen on. Update the transport URL above if you change this.","value":"3000","type":"named","name":"--port"},{"description":"Bind address. Defaults to 127.0.0.1 in CLI; 0.0.0.0 here so containers can route in.","value":"0.0.0.0","type":"named","name":"--host"}],"environmentVariables":[{"description":"WHO ICD-11 API Client ID. Required only for ICD-11 tools.","name":"WHO_CLIENT_ID"},{"description":"WHO ICD-11 API Client Secret. Required only for ICD-11 tools.","isSecret":true,"name":"WHO_CLIENT_SECRET"},{"description":"ICD-11 release to query (e.g. 2024-01, 2025-01). Optional; defaults to 2024-01.","name":"WHO_ICD11_RELEASE_ID"},{"description":"Set to 'true' to register the 6 SNOMED-dependent tools. Requires SNOMED_BASE_URL.","name":"ENABLE_SNOMED_TOOLS"},{"description":"Base URL of a self-hosted Snowstorm instance. Required only when ENABLE_SNOMED_TOOLS is true.","name":"SNOMED_BASE_URL"},{"description":"Accept-Language tag(s) for SNOMED responses (e.g. pt, pt-BR, es). Optional; defaults to 'en'.","name":"SNOMED_LANGUAGE"},{"description":"pino log level. Optional; defaults to 'info'.","name":"LOG_LEVEL"}]}],"tools":[{"name":"atc_classify","description":"Look up the WHO ATC (Anatomical Therapeutic Chemical) classification(s) for a drug by name.\n\nUse this tool to:\n- Find the ATC code for a medication (e.g., \"metformin\" → A10BA02)\n- Identify the therapeutic and pharmacological class hierarchy\n- Cross-reference drugs with their international ATC codes\n\nReturns one entry per ATC code the drug belongs to. A single-ingredient drug typically maps to one substance-level code; combination products map to multiple. ATC codes are international (WHO Collaborating Centre); this tool retrieves them via NLM RxClass.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"drug_name":{"type":"string","minLength":1,"description":"Drug name to classify (brand or generic, e.g., \"metformin\")"}},"required":["drug_name"],"additionalProperties":false}},{"name":"atc_lookup","description":"Look up an ATC code at level 1-4 to get its name and hierarchy level.\n\nUse this tool to:\n- Resolve an ATC code (e.g., \"A10BA\") to its class name (\"Biguanides\")\n- Confirm a code exists in the current ATC index\n- Identify the level (anatomical / therapeutic / pharmacological / chemical)\n\nAccepts codes 1-5 characters long: \"A\" (anatomical), \"A10\" (therapeutic), \"A10B\" (pharmacological), \"A10BA\" (chemical). Substance-level codes (7 chars, e.g., \"A10BA02\") are not exposed by this endpoint — use atc_classify with the drug name to retrieve the substance code.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"atc_code":{"type":"string","pattern":"^[A-V](\\d{2}([A-Z]([A-Z](\\d{2})?)?)?)?$","description":"ATC code at level 1-4 (1-5 chars). Substance-level codes (7 chars, e.g., A10BA02) are not exposed by this endpoint — use atc_classify with the drug name instead."}},"required":["atc_code"],"additionalProperties":false}},{"name":"atc_members","description":"List the drugs (substances) that belong to an ATC class.\n\nUse this tool to:\n- Enumerate all members of a therapeutic class (e.g., \"A10BA\" → metformin, phenformin)\n- Build a list of drugs sharing a pharmacological mechanism\n- Explore an ATC subtree at any level\n\nEach member includes its substance-level (7-char) ATC code via source_atc_code, useful for disambiguation when the queried class is at level 1-4. RxNorm's catalog is US-centric; the ATC class names and codes themselves are international.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"atc_code":{"type":"string","pattern":"^[A-V](\\d{2}([A-Z]([A-Z](\\d{2})?)?)?)?$","description":"ATC code at any level. Higher levels (1-4) return all member substances; level 5 returns the single substance."}},"required":["atc_code"],"additionalProperties":false}},{"name":"cid10_chapter","description":"Get one CID-10 chapter and its constituent groups (e.g., \"Chapter IX → I00-I02 Febre reumática aguda, I05-I09 Doenças reumáticas crônicas do coração, ...\").\n\nUse this tool to:\n- Drill from a chapter into its groups\n- Build hierarchical browsers\n- Find which group contains a code range\n\nProvide a chapter number (1-22).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"num":{"type":"integer","minimum":1,"maximum":22,"description":"Chapter number (1-22). CID-10 V2008 has 22 chapters."}},"required":["num"],"additionalProperties":false}},{"name":"cid10_chapters","description":"List the 22 chapters of CID-10 with their code ranges and Portuguese titles.\n\nUse this tool to:\n- See the top-level structure of CID-10 (chapters I-XXII, e.g., \"I. Algumas doenças infecciosas e parasitárias\", \"IX. Doenças do aparelho circulatório\")\n- Map a code to its chapter by code range (e.g., I00-I99 → chapter IX)\n- Build a navigable table of contents for downstream tooling\n\nReturns 22 entries — CID-10 V2008 has not been updated since 2008.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"cid10_lookup","description":"Look up a specific CID-10 code and return its Portuguese name.\n\nUse this tool to:\n- Resolve a code to its Brazilian description (\"I21\" → \"Infarto agudo do miocárdio\")\n- Confirm a 3-char category or 4-char subcategory exists in CID-10\n- Retrieve gender / cause-of-death restriction flags when applicable\n\nAccepts both dotted (\"A00.1\") and undotted (\"A001\") forms; returns the canonical display.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"code":{"type":"string","pattern":"^[A-Z]\\d{2}(\\.?\\d)?$","description":"CID-10 code (e.g., \"A00\", \"A00.1\", \"A001\", \"I21\"). Dotted and undotted forms both accepted."}},"required":["code"],"additionalProperties":false}},{"name":"cid10_search","description":"Search the Brazilian CID-10 (Classificação Estatística Internacional de Doenças, 10ª Revisão) by Portuguese text.\n\nUse this tool to:\n- Find CID-10 codes for Brazilian SUS / ANVISA contexts (\"infarto\", \"diabetes\", \"tuberculose\")\n- Look up the official Portuguese (CBCD/USP) translation of a clinical term\n- Locate codes for billing, epidemiology, and clinical documentation in Brazil\n\nReturns matches from CID-10 categories (3-char) and/or subcategories (4-char). Search is diacritic-insensitive: typing \"infeccoes\" matches \"infecções\". Every word must match (AND), and everyday Portuguese is resolved to the CID-10's own wording (câncer→neoplasia maligna, AVC→acidente vascular cerebral, pressão alta→hipertensão, suicídio→lesão autoprovocada, aids→HIV); when that happens the response says so in vocabulary_notes. This tool searches the Brazilian Portuguese CID-10 V2008 — for the international ICD-11 (current WHO revision, in English by default), use icd11_search.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","minLength":2,"description":"Search terms in Portuguese, AND between words (e.g., \"diabetes\", \"infarto\", \"câncer de mama\"); accents ignored, everyday words resolved to CID-10 wording"},"level":{"default":"all","description":"Restrict search to 3-char categories, 4-char subcategories, or both. Default: all","type":"string","enum":["categories","subcategories","all"]},"max_results":{"default":25,"description":"Maximum number of results (1-100). Default: 25","type":"integer","minimum":1,"maximum":100}},"required":["query"],"additionalProperties":false}},{"name":"fetch","description":"Returns the full document for an id obtained from `search`, as { id, title, text, url, metadata }: `text` is the readable content (Markdown) and `url` the canonical public page to cite.\n\nCompanion of `search` in the OpenAI Deep Research contract, over the medical terminologies (CID-10 categories and chapters, ICD-11, LOINC, RxNorm, MeSH, terminology version records) catalog. Only ids returned by `search` are valid; an unknown id returns an error.\nThe terminology tools (`icd11_*`, `cid10_*`, `loinc_*`, `rxnorm_*`, `mesh_*`, `atc_*`, `map_*`, `find_equivalent`, `validate_codes`) remain the tools for data queries.\n\nBehavior: read-only and idempotent — a live GET against the public source when the document needs it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of a document returned by `search`"}},"required":["id"]}},{"name":"find_equivalent","description":"Ranked unified search for equivalent terms across multiple medical terminologies.\n\nUse this tool to:\n- Find the same concept in different coding systems\n- Compare how terminologies represent a concept\n- Support terminology mapping and data integration\n\nSearches across: ICD-11, SNOMED CT, LOINC, RxNorm, and MeSH. Set `target_terminologies` to limit which are searched, or set `source_terminology` to exclude one (e.g. when you already have a code from that terminology and want equivalents elsewhere). The two combine: source is subtracted from targets. `limit` caps candidates per terminology (default 5, max 10).\n\nEvery candidate carries `match_score` (lexical similarity to the search term, 0-1) and `rank` (global position across all searched terminologies) — both computed by this server, since upstreams don't expose comparable relevance scores. Candidates from different terminologies whose titles are lexically identical are clustered in `groups` — a strong same-concept signal (absence of a group is NOT evidence of non-equivalence).\n\nSearches upstreams in English. For official pt-BR content, use the dedicated tools: `icd11_search`/`mesh_search` accept `language: \"pt\"`, and `cid10_search` is natively Portuguese.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"term":{"type":"string","minLength":1,"description":"Medical term to search (e.g., \"diabetes\", \"aspirin\")"},"source_terminology":{"description":"If set, this terminology is excluded from the search. Use this when the term came from this terminology and you want equivalents in the others. Combines with target_terminologies by subtraction (source is removed from the target list).","type":"string","enum":["icd11","snomed","loinc","rxnorm","mesh"]},"target_terminologies":{"description":"Limit the search to these terminologies. If omitted, all five are searched.","type":"array","items":{"type":"string","enum":["icd11","snomed","loinc","rxnorm","mesh"]}},"limit":{"description":"Maximum candidates returned PER terminology (1-10, default 5). This is a cap, not a page: the live fan-out has no stable cursor across five upstreams, so raise the limit instead of paging.","type":"integer","minimum":1,"maximum":10}},"required":["term"],"additionalProperties":false}},{"name":"icd11_chapters","description":"List all ICD-11 chapters (top-level categories).\n\nUse this tool to:\n- Get an overview of ICD-11 structure\n- Find which chapter covers a body system or condition type\n- Navigate to specific disease categories\n\nICD-11 has 28 chapters covering all areas of medicine.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"language":{"default":"en","type":"string","enum":["en","es","pt","fr","de","it","zh","ja","ar","ru"],"description":"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."}},"additionalProperties":false}},{"name":"icd11_hierarchy","description":"Navigate the ICD-11 hierarchy to find parent or child entities.\n\nUse this tool to:\n- Find broader categories (parents) of a condition\n- Find specific subtypes (children) of a condition\n- Understand the classification structure\n\nName the entity by `code` (a leaf code like \"5A11\", or a block range like \"5A10-5A2Y\" — blocks come back from 'parents' with an empty code and a code_range) or by `uri` (the URI any previous answer returned). Direction 'parents' returns ancestor categories, 'children' returns subcategories. ICD-10 codes (like \"E11\") are not ICD-11 codes: convert them first with map_icd10_to_icd11.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"code":{"description":"ICD-11 code (e.g., \"BA00\", \"5A11\") or block range (e.g., \"5A10-5A2Y\")","type":"string","minLength":1},"uri":{"description":"Entity URI as returned by icd11_lookup, icd11_search or a previous icd11_hierarchy call","type":"string","format":"uri"},"direction":{"type":"string","enum":["parents","children"],"description":"Direction: \"parents\" for ancestors, \"children\" for subtypes"},"language":{"default":"en","type":"string","enum":["en","es","pt","fr","de","it","zh","ja","ar","ru"],"description":"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."}},"required":["direction"],"additionalProperties":false}},{"name":"icd11_lookup","description":"Get detailed information about a specific ICD-11 entity by code or URI.\n\nUse this tool to:\n- Get the full definition of a disease\n- Retrieve coding notes and exclusions\n- Get the official title and synonyms\n\nProvide either an ICD-11 code (e.g., \"BA00\") or a full foundation URI. Set `language` for WHO's official translations (e.g. `language: \"pt\"` for official Portuguese).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"code":{"description":"ICD-11 code (e.g., \"BA00\", \"1A00\")","type":"string","minLength":1},"uri":{"description":"Full ICD-11 foundation URI","type":"string","format":"uri"},"language":{"default":"en","type":"string","enum":["en","es","pt","fr","de","it","zh","ja","ar","ru"],"description":"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."}},"additionalProperties":false}},{"name":"icd11_postcoordination","description":"Get postcoordination information for an ICD-11 code.\n\nUse this tool to:\n- Find available axes for building composite codes\n- Check required vs optional postcoordination\n- Understand code extension possibilities\n\nPostcoordination allows adding severity, laterality, anatomy, etc.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"ICD-11 code to get postcoordination info for"}},"required":["code"],"additionalProperties":false}},{"name":"icd11_search","description":"Search for medical conditions, diseases, and health problems in ICD-11 (International Classification of Diseases, 11th Revision).\n\nUse this tool to:\n- Find ICD-11 codes for diagnoses\n- Search for diseases by name or keyword\n- Look up conditions in multiple languages\n\nSet `language` for WHO's official translations — e.g. `language: \"pt\"` searches and returns the official Portuguese (pt-BR) ICD-11 labels. Never machine-translated.\n\nReturns matching entities with codes, titles, and relevance scores.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Search text (disease name, symptom, or keyword)"},"language":{"default":"en","type":"string","enum":["en","es","pt","fr","de","it","zh","ja","ar","ru"],"description":"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."},"max_results":{"default":25,"description":"Maximum number of results (1-100). Default: 25","type":"integer","minimum":1,"maximum":100}},"required":["query"],"additionalProperties":false}},{"name":"loinc_answers","description":"Get the list of valid answers for a LOINC questionnaire item.\n\nUse this tool to:\n- Find valid response options for survey questions\n- Get answer codes for data entry validation\n- Look up standardized answer lists\n\nOnly applicable to LOINC codes that represent questions with defined answer sets.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"loinc_num":{"type":"string","pattern":"^\\d{1,5}-\\d$","description":"LOINC number (e.g., \"2339-0\")"}},"required":["loinc_num"],"additionalProperties":false}},{"name":"loinc_details","description":"Get detailed information about a specific LOINC code.\n\nUse this tool to:\n- Get the full name and description of a LOINC code\n- Find the component, property, timing, and system\n- Check the scale type and method\n\nProvide a LOINC number in format \"XXXXX-X\" (e.g., \"2339-0\" for Glucose).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"loinc_num":{"type":"string","pattern":"^\\d{1,5}-\\d$","description":"LOINC number (e.g., \"2339-0\")"}},"required":["loinc_num"],"additionalProperties":false}},{"name":"loinc_panels","description":"Get the structure of a LOINC panel or form.\n\nUse this tool to:\n- See all tests included in a panel (e.g., CBC, metabolic panel)\n- Get the structure of assessment forms\n- Find related observations grouped together\n\nReturns the list of LOINC codes that make up the panel.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"loinc_num":{"type":"string","pattern":"^\\d{1,5}-\\d$","description":"LOINC number (e.g., \"2339-0\")"}},"required":["loinc_num"],"additionalProperties":false}},{"name":"loinc_search","description":"Search for laboratory tests, clinical observations, and measurements in LOINC (Logical Observation Identifiers Names and Codes).\n\nUse this tool to:\n- Find LOINC codes for lab tests (e.g., \"glucose\", \"hemoglobin\")\n- Search for clinical measurements and vital signs\n- Look up diagnostic observations\n\nReturns matching LOINC codes with names, components, and properties.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Search term (test name, keyword, or partial LOINC code)"},"max_results":{"default":25,"description":"Maximum number of results (1-100). Default: 25","type":"integer","minimum":1,"maximum":100}},"required":["query"],"additionalProperties":false}},{"name":"map_icd10_to_icd11","description":"Authoritative ICD-10 → ICD-11 mapping using WHO transition tables (release 2025-01, bundled with the server).\n\nReturns the primary 1:1 ICD-11 category for the ICD-10 code plus any alternative ICD-11 candidates that WHO documents (some ICD-10 concepts split into multiple ICD-11 entities). For each mapping, includes the ICD-11 code, title, chapter, and the Foundation URI / Linearization URI for navigating to the full entity definition.\n\nUse this for clinical coding, billing migration, retrospective analysis, and any workflow that needs authoritative mapping rather than text-search candidates. Coverage: 11,243 ICD-10 categories (excludes chapters and blocks like \"A00-A09\" which aren't used in clinical coding).\n\nProvide a code like \"E11\" (Type 2 diabetes), \"I21\" (Acute MI), or \"A07.8\" (4 alternatives in WHO's table). Both dotted (\"A07.8\") and undotted (\"A078\") forms are accepted.\n\nReturns \"no mapping\" when the code isn't in the WHO category-level table — that's the honest answer rather than a fuzzy search fallback.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"icd10_code":{"type":"string","minLength":1,"description":"ICD-10 code to query in the ICD-11 search index (e.g., E11, I21.0, J18.9)"}},"required":["icd10_code"],"additionalProperties":false}},{"name":"map_loinc_to_snomed","description":"This tool looks up a LOINC code in NLM Clinical Tables and returns guidance on where to obtain a LOINC → SNOMED CT mapping. It does not perform the mapping.\n\nDirect LOINC → SNOMED CT mappings are not freely available via API. UMLS Metathesaurus contains the relationships but requires an individual UMLS Terminology Services license; the LOINC SNOMED CT Expression Association is published by Regenstrief Institute as part of the LOINC release and requires authenticated download from loinc.org under the LOINC license.\n\nFor programmatic LOINC → SNOMED mapping, use UMLS or the LOINC Expression Association files. For interactive lookup, use the SNOMED CT browser available to your organization or the Regenstrief RELMA desktop tool.\n\nProvide a LOINC code like \"2339-0\" (Glucose) or \"718-7\" (Hemoglobin).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"loinc_code":{"type":"string","pattern":"^\\d{1,5}-\\d$","description":"LOINC code (e.g., 2339-0 for Glucose)"}},"required":["loinc_code"],"additionalProperties":false}},{"name":"mesh_descriptor","description":"Get detailed information about a MeSH descriptor by ID.\n\nUse this tool to:\n- Get the full definition (scope note) of a MeSH term\n- View tree numbers showing hierarchy location\n- See related concepts and synonyms\n\nProvide a MeSH Descriptor ID like \"D015242\" (Ofloxacin). Set `language` to request NLM's official translations where they exist (e.g. `language: \"pt\"`).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mesh_id":{"type":"string","pattern":"^D\\d+$","description":"MeSH Descriptor ID (e.g., D015242, D003920)"},"language":{"default":"en","type":"string","enum":["en","es","pt","fr","de","it","zh","ja","ar","ru"],"description":"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."}},"required":["mesh_id"],"additionalProperties":false}},{"name":"mesh_qualifiers","description":"Get allowed qualifiers (subheadings) for a MeSH descriptor.\n\nUse this tool to:\n- Find which qualifiers can be combined with a descriptor\n- Build precise MeSH search queries\n- Understand aspects that can be specified\n\nQualifiers refine descriptors (e.g., \"Diabetes Mellitus/drug therapy\").","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mesh_id":{"type":"string","pattern":"^D\\d+$","description":"MeSH Descriptor ID (e.g., D015242, D003920)"}},"required":["mesh_id"],"additionalProperties":false}},{"name":"mesh_search","description":"Search for MeSH (Medical Subject Headings) descriptors.\n\nUse this tool to:\n- Find MeSH terms for indexing medical literature\n- Look up subject headings for PubMed searches\n- Find controlled vocabulary terms\n\nSet `language` to request NLM's official translations where they exist (e.g. `language: \"pt\"` for Portuguese labels); content is never machine-translated.\n\nReturns matching descriptors with MeSH IDs and labels.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Search term (e.g., \"diabetes\", \"heart failure\")"},"match":{"default":"contains","description":"Match type: exact, contains, or startswith. Default: contains","type":"string","enum":["exact","contains","startswith"]},"language":{"default":"en","type":"string","enum":["en","es","pt","fr","de","it","zh","ja","ar","ru"],"description":"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."},"max_results":{"default":25,"description":"Maximum number of results (1-100). Default: 25","type":"integer","minimum":1,"maximum":100}},"required":["query"],"additionalProperties":false}},{"name":"mesh_tree","description":"Get the tree hierarchy location(s) for a MeSH descriptor.\n\nUse this tool to:\n- See where a term fits in the MeSH hierarchy\n- Understand broader/narrower relationships\n- Find related terms in the same branch\n\nMeSH tree numbers show the hierarchical path (e.g., C14.280.647 for Myocardial Infarction).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mesh_id":{"type":"string","pattern":"^D\\d+$","description":"MeSH Descriptor ID (e.g., D015242, D003920)"}},"required":["mesh_id"],"additionalProperties":false}},{"name":"rxnorm_classes","description":"Get therapeutic and pharmacologic classes for a drug.\n\nUse this tool to:\n- Find the drug class (e.g., \"Beta-blockers\", \"NSAIDs\")\n- Identify therapeutic categories\n- Look up mechanism of action classifications\n\nReturns class IDs, names, and classification sources.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"rxcui":{"type":"string","pattern":"^\\d+$","description":"RxCUI of the drug"}},"required":["rxcui"],"additionalProperties":false}},{"name":"rxnorm_concept","description":"Get detailed information about a specific RxNorm concept by RxCUI.\n\nUse this tool to:\n- Get the full name and synonyms for a drug\n- Check the concept status (active, remapped, etc.)\n- View related concepts (ingredients, brands, forms)\n\nProvide an RxCUI (RxNorm Concept Unique Identifier) like \"161\".","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"rxcui":{"type":"string","pattern":"^\\d+$","description":"RxNorm Concept Unique Identifier"},"include_related":{"default":false,"description":"Include related concepts (ingredients, brands, dose forms)","type":"boolean"}},"required":["rxcui"],"additionalProperties":false}},{"name":"rxnorm_ingredients","description":"Get active ingredients for a drug by RxCUI.\n\nUse this tool to:\n- Find the active ingredients in a medication\n- Check for single vs. multiple ingredient products\n- Identify the generic components of brand drugs\n\nReturns ingredient RxCUIs and names.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"rxcui":{"type":"string","pattern":"^\\d+$","description":"RxCUI of the drug"}},"required":["rxcui"],"additionalProperties":false}},{"name":"rxnorm_ndc","description":"Map between RxNorm concepts and National Drug Codes (NDC).\n\nUse this tool to:\n- Get all NDC codes for a drug (by RxCUI)\n- Find the RxCUI for an NDC code\n- Cross-reference between coding systems\n\nProvide either an RxCUI to get NDCs, or an NDC to get the RxCUI.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"rxcui":{"description":"RxCUI to get NDC codes for","type":"string","pattern":"^\\d+$"},"ndc":{"description":"NDC code to look up RxCUI (alternative to rxcui)","type":"string","minLength":1}},"additionalProperties":false}},{"name":"rxnorm_search","description":"Search for drugs in RxNorm (Normalized names for clinical drugs).\n\nUse this tool to:\n- Find drug concepts by brand or generic name\n- Look up medications for prescribing\n- Search for drug formulations\n\nReturns matching drugs with RxCUI identifiers, names, and term types.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Drug name to search (brand or generic)"},"max_results":{"default":25,"description":"Maximum number of results (1-100). Default: 25","type":"integer","minimum":1,"maximum":100}},"required":["query"],"additionalProperties":false}},{"name":"search","description":"Searches the medical terminologies (CID-10 categories and chapters, ICD-11, LOINC, RxNorm, MeSH, terminology version records) catalog and returns up to 10 matching documents as { id, title, url }, ordered by relevance (an empty list means nothing matched).\n\nThis tool exists for the OpenAI Deep Research contract: ChatGPT deep research, company knowledge and research workflows over the Responses API require exactly the tools `search` and `fetch`. Pass one of the returned ids to `fetch` to read the document.\nFor direct questions and for data (values, series, rankings) prefer the terminology tools (`icd11_*`, `cid10_*`, `loinc_*`, `rxnorm_*`, `mesh_*`, `atc_*`, `map_*`, `find_equivalent`, `validate_codes`), which return the actual data with provenance — this is a catalog index, not a data query.\n\nQuery: natural language or keywords, Portuguese or English; accents and case are ignored.\n\nBehavior: read-only and idempotent — the catalog comes from the public source and is cached in memory.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Search terms, natural language or keywords (accents and case are ignored)"}},"required":["query"]}},{"name":"terminology_diff","description":"Report what diff data is available between two versions of a terminology.\n\nFor most terminologies this is **guidance only** — the server doesn't ship historical snapshots, so the tool points at the publisher's official changelog and explains the cadence. `bundled_versions` lists the version(s) this server actually has on hand.\n\nFor **ICD-10 vs ICD-11** specifically, the tool surfaces a real cross-revision summary from the bundled WHO transition tables (the ICD-10 → ICD-11 case is a structural diff between two WHO revisions). Use `terminology: \"icd10\"` with no `to_version` to get the cross-revision summary: total mapped ICD-10 categories, how many are 1:1 vs split into multiple ICD-11 codes, and the average number of alternatives when split.\n\nInputs:\n- `terminology` (required): which terminology to report on.\n- `from_version` (optional): the version you have data from. If omitted, the tool reports against the currently-bundled version.\n- `to_version` (optional): the version you want to compare to. If omitted, the tool reports against the publisher's latest known release.\n\nThis tool is intentionally a metadata + guidance layer, not a diff engine — for terminologies that change frequently (SNOMED, LOINC, RxNorm, MeSH), the publisher's official changelog is the authoritative source.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"terminology":{"type":"string","enum":["icd11","icd10","snomed","loinc","rxnorm","mesh","atc","cid10"],"description":"Which terminology to report on."},"from_version":{"description":"Version you have data from. Optional; behavior depends on terminology.","type":"string"},"to_version":{"description":"Version you want to compare to. Optional.","type":"string"}},"required":["terminology"],"additionalProperties":false}},{"name":"terminology_versions","description":"List the current version, release date, publisher, source URL, and update cadence of every terminology this server queries against.\n\nUseful for pipeline maintainers who need to:\n- Confirm which release of ICD-11 / SNOMED / LOINC / RxNorm / MeSH / ATC the server is querying before a batch run.\n- Verify the bundled CID-10 (frozen at V2008) and ICD-10 → ICD-11 transition tables (currently 2025-01) match expectations.\n- Cite the data version in research artifacts.\n\nPass `terminology` to filter to a single entry; otherwise the full set of 8 is returned. The ICD-10 → ICD-11 version reads live from the bundled dataset; everything else is metadata maintained alongside the project release.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"terminology":{"description":"Filter to a single terminology. Omit to return all 8.","type":"string","enum":["icd11","icd10","snomed","loinc","rxnorm","mesh","atc","cid10"]}},"additionalProperties":false}},{"name":"validate_codes","description":"Validate a mixed batch of medical codes against their source terminologies. Useful for retrospective analysis of legacy databases — flag codes that no longer exist, surface ICD-10 → ICD-11 replacements, and grade activity status where the terminology exposes it.\n\nFor each input `{ code, terminology }`, returns:\n- **valid**: whether the code exists in the source terminology.\n- **active**: whether the code is currently active. Null when the source doesn't expose an explicit active/inactive distinction at category level (CID-10, ATC, ICD-11, RxNorm, MeSH all return null today; SNOMED and LOINC return a real boolean).\n- **title**: the official label/name when available.\n- **replaced_by**: a successor code, populated today only for ICD-10 codes that have a primary ICD-11 mapping in the bundled WHO transition tables.\n- **source**: human-readable provenance of the validation (terminology + release/version).\n- **error**: non-null only when validation couldn't be performed (network error, SNOMED feature flag off, etc.). `valid: false` + `error: null` means \"code not found\"; `valid: false` + `error: set` means \"couldn't validate\".\n\nTerminology is **required per code** — auto-detection isn't supported because category codes like \"A00\" exist in both ICD-10 and CID-10. Accepted values: `icd11`, `icd10`, `snomed`, `loinc`, `rxnorm`, `mesh`, `atc`, `cid10`.\n\nHard cap of 50 codes per call; codes are validated in parallel through their respective clients, so total wall time scales with the slowest upstream + its rate limit (worst case ~10 s for a full batch hitting ICD-11).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"codes":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"The code to validate (raw, as it appears in your data)."},"terminology":{"type":"string","enum":["icd11","icd10","snomed","loinc","rxnorm","mesh","atc","cid10"],"description":"Which terminology this code belongs to. Required — auto-detection isn't supported because category-level codes like \"A00\" exist in both ICD-10 and CID-10."}},"required":["code","terminology"]},"description":"List of code+terminology pairs to validate. Hard cap of 50 per call to keep total latency under ~10 s given upstream rate limits."}},"required":["codes"],"additionalProperties":false}}],"scan":{"score":90,"grade":"A","scanned_at":"2026-09-19T19:42:24.847Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:42:24.784Z","components":{"code":{"score":25,"max":25,"notes":["1 source files scanned","1 source files scanned"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2378ms"]},"poisoning":{"score":15,"max":15,"notes":["33 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"probes":[{"url":"https://medical.sidneybissoli.com/mcp","reachable":true,"authRequired":false,"latencyMs":2378,"serverInfo":{"name":"medical-terminologies-mcp","version":"1.12.1"}}],"packages":[{"registryType":"npm","identifier":"medical-terminologies-mcp","version":"1.12.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-09-16T23:49:29.278Z","repositoryUrl":"git+https://github.com/SidneyBissoli/medical-terminologies-mcp.git","weeklyDownloads":653},{"registryType":"npm","identifier":"medical-terminologies-mcp","version":"1.12.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-09-16T23:49:29.278Z","repositoryUrl":"git+https://github.com/SidneyBissoli/medical-terminologies-mcp.git","weeklyDownloads":653}],"repo":{"found":true,"owner":"SidneyBissoli","repo":"medical-terminologies-mcp","archived":false,"pushedAt":"2026-09-16T23:46:19Z","stars":13,"forks":5,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/66520599?v=4","ownerCreatedAt":"2020-06-06T13:10:18Z","license":"MIT"},"icon":{"url":"https://raw.githubusercontent.com/SidneyBissoli/medical-terminologies-mcp/main/assets/icon-dark.png","source":"registry","width":512,"height":512},"presence":{"stars":13,"forks":5,"downloadsWeek":1306,"license":"MIT","lastPushAt":"2026-09-16T23:46:19.000Z","score":50}}}},"grade_history":[],"reviews":[]}