# Medical Terminologies MCP (remote · medical.sidneybissoli.com)

Diagnoses, drugs & lab codes: ICD-11, SNOMED, LOINC, RxNorm, MeSH, ATC, CID-10. 37 tools, MIT.

- Trust score: 70/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `medical.sidneybissoli.com`: 70/100 (this document), [markdown](https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical.md), [page](https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical)
- npm · `medical-terminologies-mcp`: 81/100, [markdown](https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical-terminologies-mcp.md), [page](https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical-terminologies-mcp)

## Channel facts

- Endpoint: `https://medical.sidneybissoli.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.5.7`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 80/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4968 tokens (~141/item across 35 items; 31 tools + 4 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http sidneybissoli-medical-terminologies-mcp https://medical.sidneybissoli.com/mcp
```

### Codex

```toml
[mcp_servers.sidneybissoli-medical-terminologies-mcp]
url = "https://medical.sidneybissoli.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sidneybissoli-medical-terminologies-mcp": {
      "type": "remote",
      "url": "https://medical.sidneybissoli.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sidneybissoli-medical-terminologies-mcp --url https://medical.sidneybissoli.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  sidneybissoli-medical-terminologies-mcp:
    url: "https://medical.sidneybissoli.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "sidneybissoli-medical-terminologies-mcp": {
      "type": "http",
      "url": "https://medical.sidneybissoli.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 69, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 68, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 66)

First indexed and scored.

## MCP tools (31)

### `icd11_search` (~130 tokens)

Search for medical conditions, diseases, and health problems in ICD-11 (International Classification of Diseases, 11th Revision).

Use this tool to:
\- Find ICD-11 codes for diagnoses
\- Search for diseases by name or keyword
\- Look up conditions in multiple languages

Returns matching entities with codes, titles, and relevance scores.

Input parameters:

- `language` (string): Language code (default: en)
- `max_results` (integer): Maximum number of results (1-100). Default: 25
- `query` (string, required): Search text (disease name, symptom, or keyword)

Output parameters:

- `entities` (array)
- `query` (string)
- `total_count` (integer)

### `icd11_lookup` (~124 tokens)

Get detailed information about a specific ICD-11 entity by code or URI.

Use this tool to:
\- Get the full definition of a disease
\- Retrieve coding notes and exclusions
\- Get the official title and synonyms

Provide either an ICD-11 code (e.g., "BA00") or a full foundation URI.

Input parameters:

- `code` (string): ICD-11 code (e.g., "BA00", "1A00")
- `language` (string): Language code (default: en)
- `uri` (string): Full ICD-11 foundation URI

Output parameters:

- `block_id`
- `browser_url`
- `class_kind`
- `code`
- `code_range`
- `coding_note`
- `definition`
- `diagnostic_criteria`
- `exclusions` (array)
- `inclusions` (array)
- `index_terms` (array)
- `long_definition`
- `title` (string)
- `uri` (string)

### `icd11_hierarchy` (~109 tokens)

Navigate the ICD-11 hierarchy to find parent or child entities.

Use this tool to:
\- Find broader categories (parents) of a condition
\- Find specific subtypes (children) of a condition
\- Understand the classification structure

Direction 'parents' returns ancestor categories, 'children' returns subcategories.

Input parameters:

- `code` (string, required): ICD-11 code to get hierarchy for
- `direction` (string, required): Direction: "parents" for ancestors, "children" for subtypes

Output parameters:

- `code` (string)
- `direction` (string)
- `entities` (array)

### `icd11_chapters` (~83 tokens)

List all ICD-11 chapters (top-level categories).

Use this tool to:
\- Get an overview of ICD-11 structure
\- Find which chapter covers a body system or condition type
\- Navigate to specific disease categories

ICD-11 has 28 chapters covering all areas of medicine.

Input parameters:

- `language` (string): Language code (default: en)

Output parameters:

- `chapters` (array)

### `icd11_postcoordination` (~85 tokens)

Get postcoordination information for an ICD-11 code.

Use this tool to:
\- Find available axes for building composite codes
\- Check required vs optional postcoordination
\- Understand code extension possibilities

Postcoordination allows adding severity, laterality, anatomy, etc.

Input parameters:

- `code` (string, required): ICD-11 code to get postcoordination info for

Output parameters:

- `axes` (array)
- `code` (string)

### `loinc_search` (~129 tokens)

Search for laboratory tests, clinical observations, and measurements in LOINC (Logical Observation Identifiers Names and Codes).

Use this tool to:
\- Find LOINC codes for lab tests (e.g., "glucose", "hemoglobin")
\- Search for clinical measurements and vital signs
\- Look up diagnostic observations

Returns matching LOINC codes with names, components, and properties.

Input parameters:

- `max_results` (integer): Maximum number of results (1-100). Default: 25
- `query` (string, required): Search term (test name, keyword, or partial LOINC code)

Output parameters:

- `items` (array)
- `query` (string)
- `shown_count` (integer)
- `total_count` (integer)

### `loinc_details` (~107 tokens)

Get detailed information about a specific LOINC code.

Use this tool to:
\- Get the full name and description of a LOINC code
\- Find the component, property, timing, and system
\- Check the scale type and method

Provide a LOINC number in format "XXXXX-X" (e.g., "2339-0" for Glucose).

Input parameters:

- `loinc_num` (string, required): LOINC number (e.g., "2339-0")

Output parameters:

- `class` (string)
- `component` (string)
- `loinc_num` (string)
- `long_common_name` (string)
- `method_type` (string)
- `property` (string)
- `scale_type` (string)
- `short_name` (string)
- `status` (string)
- `system` (string)
- `time_aspect` (string)

### `loinc_answers` (~90 tokens)

Get the list of valid answers for a LOINC questionnaire item.

Use this tool to:
\- Find valid response options for survey questions
\- Get answer codes for data entry validation
\- Look up standardized answer lists

Only applicable to LOINC codes that represent questions with defined answer sets.

Input parameters:

- `loinc_num` (string, required): LOINC number (e.g., "2339-0")

Output parameters:

- `answers` (array)
- `loinc_num` (string)

### `loinc_panels` (~95 tokens)

Get the structure of a LOINC panel or form.

Use this tool to:
\- See all tests included in a panel (e.g., CBC, metabolic panel)
\- Get the structure of assessment forms
\- Find related observations grouped together

Returns the list of LOINC codes that make up the panel.

Input parameters:

- `loinc_num` (string, required): LOINC number (e.g., "2339-0")

Output parameters:

- `loinc_num` (string)
- `panel`

### `rxnorm_search` (~101 tokens)

Search for drugs in RxNorm (Normalized names for clinical drugs).

Use this tool to:
\- Find drug concepts by brand or generic name
\- Look up medications for prescribing
\- Search for drug formulations

Returns matching drugs with RxCUI identifiers, names, and term types.

Input parameters:

- `max_results` (integer): Maximum number of results (1-100). Default: 25
- `query` (string, required): Drug name to search (brand or generic)

Output parameters:

- `drugs` (array)
- `query` (string)
- `total_count` (integer)

### `rxnorm_concept` (~112 tokens)

Get detailed information about a specific RxNorm concept by RxCUI.

Use this tool to:
\- Get the full name and synonyms for a drug
\- Check the concept status (active, remapped, etc.)
\- View related concepts (ingredients, brands, forms)

Provide an RxCUI (RxNorm Concept Unique Identifier) like "161".

Input parameters:

- `include_related` (boolean): Include related concepts (ingredients, brands, dose forms)
- `rxcui` (string, required): RxNorm Concept Unique Identifier

Output parameters:

- `language` (string)
- `name` (string)
- `related_groups`
- `remapped_to` (array)
- `rxcui` (string)
- `status` (string)
- `suppress` (string)
- `synonym` (string)
- `tty` (string)
- `umlscui` (string)

### `rxnorm_ingredients` (~77 tokens)

Get active ingredients for a drug by RxCUI.

Use this tool to:
\- Find the active ingredients in a medication
\- Check for single vs. multiple ingredient products
\- Identify the generic components of brand drugs

Returns ingredient RxCUIs and names.

Input parameters:

- `rxcui` (string, required): RxCUI of the drug

Output parameters:

- `ingredients` (array)
- `rxcui` (string)

### `rxnorm_classes` (~80 tokens)

Get therapeutic and pharmacologic classes for a drug.

Use this tool to:
\- Find the drug class (e.g., "Beta-blockers", "NSAIDs")
\- Identify therapeutic categories
\- Look up mechanism of action classifications

Returns class IDs, names, and classification sources.

Input parameters:

- `rxcui` (string, required): RxCUI of the drug

Output parameters:

- `classes` (array)
- `rxcui` (string)

### `rxnorm_ndc` (~126 tokens)

Map between RxNorm concepts and National Drug Codes (NDC).

Use this tool to:
\- Get all NDC codes for a drug (by RxCUI)
\- Find the RxCUI for an NDC code
\- Cross-reference between coding systems

Provide either an RxCUI to get NDCs, or an NDC to get the RxCUI.

Input parameters:

- `ndc` (string): NDC code to look up RxCUI (alternative to rxcui)
- `rxcui` (string): RxCUI to get NDC codes for

Output parameters:

- `ndc`
- `ndcs` (array)
- `query_mode` (string)
- `rxcui`

### `mesh_search` (~136 tokens)

Search for MeSH (Medical Subject Headings) descriptors.

Use this tool to:
\- Find MeSH terms for indexing medical literature
\- Look up subject headings for PubMed searches
\- Find controlled vocabulary terms

Returns matching descriptors with MeSH IDs and labels.

Input parameters:

- `language` (string): Language code (default: en)
- `match` (string): Match type: exact, contains, or startswith. Default: contains
- `max_results` (integer): Maximum number of results (1-100). Default: 25
- `query` (string, required): Search term (e.g., "diabetes", "heart failure")

Output parameters:

- `descriptors` (array)
- `match` (string)
- `query` (string)
- `total_count` (integer)

### `mesh_descriptor` (~106 tokens)

Get detailed information about a MeSH descriptor by ID.

Use this tool to:
\- Get the full definition (scope note) of a MeSH term
\- View tree numbers showing hierarchy location
\- See related concepts and synonyms

Provide a MeSH Descriptor ID like "D015242" (Ofloxacin).

Input parameters:

- `language` (string): Language code (default: en)
- `mesh_id` (string, required): MeSH Descriptor ID (e.g., D015242, D003920)

Output parameters:

- `concepts` (array)
- `id` (string)
- `label` (string)
- `qualifiers` (array)
- `scope_note` (string)
- `tree_numbers` (array)
- `uri` (string)

### `mesh_tree` (~104 tokens)

Get the tree hierarchy location(s) for a MeSH descriptor.

Use this tool to:
\- See where a term fits in the MeSH hierarchy
\- Understand broader/narrower relationships
\- Find related terms in the same branch

MeSH tree numbers show the hierarchical path (e.g., C14.280.647 for Myocardial Infarction).

Input parameters:

- `mesh_id` (string, required): MeSH Descriptor ID (e.g., D015242, D003920)

Output parameters:

- `mesh_id` (string)
- `tree_numbers` (array)

### `mesh_qualifiers` (~96 tokens)

Get allowed qualifiers (subheadings) for a MeSH descriptor.

Use this tool to:
\- Find which qualifiers can be combined with a descriptor
\- Build precise MeSH search queries
\- Understand aspects that can be specified

Qualifiers refine descriptors (e.g., "Diabetes Mellitus/drug therapy").

Input parameters:

- `mesh_id` (string, required): MeSH Descriptor ID (e.g., D015242, D003920)

Output parameters:

- `mesh_id` (string)
- `qualifiers` (array)

### `map_icd10_to_icd11` (~291 tokens)

Authoritative ICD-10 → ICD-11 mapping using WHO transition tables (release 2025-01, bundled with the server).

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

Use 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).

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

Returns "no mapping" when the code isn't in the WHO category-level table — that's the honest answer rather than a fuzzy search fallback.

Input parameters:

- `icd10_code` (string, required): ICD-10 code to query in the ICD-11 search index (e.g., E11, I21.0, J18.9)

Output parameters:

- `alternatives` (array): Additional ICD-11 candidates WHO documents for this ICD-10 code. Empty when the primary is the only documented mapping (or when found=false). 1,461 of the 11,243 indexed codes have non-empty alternat…
- `found` (boolean): Whether the code is in the WHO ICD-10 → ICD-11 transition table.
- `icd10`: Source ICD-10 entry from the WHO table. Null when found=false.
- `primary`: Primary 1:1 ICD-11 mapping. Null when found=false.
- `query` (string): The ICD-10 code as submitted (raw, before normalization).
- `source` (object)

### `map_loinc_to_snomed` (~230 tokens)

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.

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

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

Provide a LOINC code like "2339-0" (Glucose) or "718-7" (Hemoglobin).

Input parameters:

- `loinc_code` (string, required): LOINC code (e.g., 2339-0 for Glucose)

Output parameters:

- `guidance` (string): Short human-readable explanation of why this tool returns guidance instead of a mapping.
- `loinc_code` (string): The LOINC code as submitted.
- `loinc_details`: NLM Clinical Tables details for the LOINC code (component, system, property, etc.). Null when the code was not found upstream.
- `mapping_sources` (array): Structured list of authoritative LOINC → SNOMED CT mapping sources (UMLS Metathesaurus, LOINC SNOMED CT Expression Association, Regenstrief RELMA).
- `status` (string): Always "guidance-only" — direct LOINC → SNOMED CT mappings require licensed sources (UMLS Metathesaurus or LOINC SNOMED CT Expression Association). This tool returns pointers, not the mapping itself.

### `validate_codes` (~421 tokens)

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.

For each input `{ code, terminology }`, returns:
\- **valid**: whether the code exists in the source terminology.
\- **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).
\- **title**: the official label/name when available.
\- **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.
\- **source**: human-readable provenance of the validation (terminology + release/version).
\- **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".

Terminology 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`.

Hard 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).

Input parameters:

- `codes` (array, required): List of code+terminology pairs to validate. Hard cap of 50 per call to keep total latency under ~10 s given upstream rate limits.

Output parameters:

- `error_count` (integer): How many couldn't be validated due to upstream/network errors.
- `invalid_count` (integer): How many were not found.
- `results` (array)
- `total` (integer): Number of codes submitted.
- `valid_count` (integer): How many were confirmed valid.

### `find_equivalent` (~230 tokens)

Search for equivalent terms across multiple medical terminologies.

Use this tool to:
\- Find the same concept in different coding systems
\- Compare how terminologies represent a concept
\- Support terminology mapping and data integration

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

Input parameters:

- `source_terminology` (string): 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 (sour…
- `target_terminologies` (array): Limit the search to these terminologies. If omitted, all five are searched.
- `term` (string, required): Medical term to search (e.g., "diabetes", "aspirin")

Output parameters:

- `results` (object)
- `searched_terminologies` (array)
- `source_terminology`
- `term` (string)

### `atc_classify` (~157 tokens)

Look up the WHO ATC (Anatomical Therapeutic Chemical) classification(s) for a drug by name.

Use this tool to:
\- Find the ATC code for a medication (e.g., "metformin" → A10BA02)
\- Identify the therapeutic and pharmacological class hierarchy
\- Cross-reference drugs with their international ATC codes

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

Input parameters:

- `drug_name` (string, required): Drug name to classify (brand or generic, e.g., "metformin")

Output parameters:

- `drug_name` (string)
- `matches` (array)

### `atc_lookup` (~225 tokens)

Look up an ATC code at level 1-4 to get its name and hierarchy level.

Use this tool to:
\- Resolve an ATC code (e.g., "A10BA") to its class name ("Biguanides")
\- Confirm a code exists in the current ATC index
\- Identify the level (anatomical / therapeutic / pharmacological / chemical)

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

Input parameters:

- `atc_code` (string, required): 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.

Output parameters:

- `atc_code` (string)
- `details`
- `found` (boolean)

### `atc_members` (~166 tokens)

List the drugs (substances) that belong to an ATC class.

Use this tool to:
\- Enumerate all members of a therapeutic class (e.g., "A10BA" → metformin, phenformin)
\- Build a list of drugs sharing a pharmacological mechanism
\- Explore an ATC subtree at any level

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

Input parameters:

- `atc_code` (string, required): ATC code at any level. Higher levels (1-4) return all member substances; level 5 returns the single substance.

Output parameters:

- `atc_code` (string)
- `members` (array)

### `cid10_search` (~254 tokens)

Search the Brazilian CID-10 (Classificação Estatística Internacional de Doenças, 10ª Revisão) by Portuguese text.

Use this tool to:
\- Find CID-10 codes for Brazilian SUS / ANVISA contexts ("infarto", "diabetes", "tuberculose")
\- Look up the official Portuguese (CBCD/USP) translation of a clinical term
\- Locate codes for billing, epidemiology, and clinical documentation in Brazil

Returns matches from CID-10 categories (3-char) and/or subcategories (4-char). Search is diacritic-insensitive: typing "infeccoes" matches "infecções". This tool searches the Brazilian Portuguese CID-10 V2008 — for the international ICD-11 (current WHO revision, in English by default), use icd11_search.

Input parameters:

- `level` (string): Restrict search to 3-char categories, 4-char subcategories, or both. Default: all
- `max_results` (integer): Maximum number of results (1-100). Default: 25
- `query` (string, required): Search term in Portuguese (e.g., "diabetes", "infarto", "tuberculose")

Output parameters:

- `hits` (array)
- `level` (string)
- `query` (string)
- `shown_count` (integer)
- `total_count` (integer)

### `cid10_lookup` (~149 tokens)

Look up a specific CID-10 code and return its Portuguese name.

Use this tool to:
\- Resolve a code to its Brazilian description ("I21" → "Infarto agudo do miocárdio")
\- Confirm a 3-char category or 4-char subcategory exists in CID-10
\- Retrieve gender / cause-of-death restriction flags when applicable

Accepts both dotted ("A00.1") and undotted ("A001") forms; returns the canonical display.

Input parameters:

- `code` (string, required): CID-10 code (e.g., "A00", "A00.1", "A001", "I21"). Dotted and undotted forms both accepted.

Output parameters:

- `code` (string)
- `found` (boolean)
- `hit`

### `cid10_chapters` (~131 tokens)

List the 22 chapters of CID-10 with their code ranges and Portuguese titles.

Use this tool to:
\- 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")
\- Map a code to its chapter by code range (e.g., I00-I99 → chapter IX)
\- Build a navigable table of contents for downstream tooling

Returns 22 entries — CID-10 V2008 has not been updated since 2008.

Output parameters:

- `chapters` (array)

### `cid10_chapter` (~118 tokens)

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, ...").

Use this tool to:
\- Drill from a chapter into its groups
\- Build hierarchical browsers
\- Find which group contains a code range

Provide a chapter number (1-22).

Input parameters:

- `num` (integer, required): Chapter number (1-22). CID-10 V2008 has 22 chapters.

Output parameters:

- `chapter`
- `found` (boolean)
- `groups` (array)
- `num` (integer)

### `terminology_versions` (~188 tokens)

List the current version, release date, publisher, source URL, and update cadence of every terminology this server queries against.

Useful for pipeline maintainers who need to:
\- Confirm which release of ICD-11 / SNOMED / LOINC / RxNorm / MeSH / ATC the server is querying before a batch run.
\- Verify the bundled CID-10 (frozen at V2008) and ICD-10 → ICD-11 transition tables (currently 2025-01) match expectations.
\- Cite the data version in research artifacts.

Pass `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.

Input parameters:

- `terminology` (string): Filter to a single terminology. Omit to return all 8.

Output parameters:

- `generated` (string): Date this snapshot was generated.
- `terminologies` (array)
- `total` (integer)

### `terminology_diff` (~346 tokens)

Report what diff data is available between two versions of a terminology.

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

For **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.

Inputs:
\- `terminology` (required): which terminology to report on.
\- `from_version` (optional): the version you have data from. If omitted, the tool reports against the currently-bundled version.
\- `to_version` (optional): the version you want to compare to. If omitted, the tool reports against the publisher's latest known release.

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

Input parameters:

- `from_version` (string): Version you have data from. Optional; behavior depends on terminology.
- `terminology` (string, required): Which terminology to report on.
- `to_version` (string): Version you want to compare to. Optional.

Output parameters:

- `bundled_versions` (array)
- `changelog_url`
- `cross_revision_summary`: Populated only for terminology="icd10" today — the bundled WHO ICD-10 → ICD-11 transition tables let us surface a real structural diff between the two WHO revisions.
- `diff_available` (boolean): True when this server has the data to compute a real diff for the requested terminology. False = guidance-only response.
- `from_version`
- `message` (string)
- `terminology` (string)
- `to_version`

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical#diagnostics

## Score history

- 2026-08-03: 70
- 2026-08-02: 70
- 2026-08-01: 69
- 2026-07-31: 69
- 2026-07-30: 68
- 2026-07-29: 68
- 2026-07-28: 67
- 2026-07-27: 66
- 2026-07-26: 66

## Links

- Remote endpoint: https://medical.sidneybissoli.com/mcp
- Repository: https://github.com/SidneyBissoli/medical-terminologies-mcp
- Website: https://medium.com/@sbissoli76/seven-medical-terminologies-one-mcp-server-a-practical-walkthrough-for-clinical-and-research-use-a6c46de9c83b
- Changelog RSS feed: https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical/changelog.json
- HTML version of this page: https://verifymcp.io/servers/sidneybissoli-medical-terminologies-mcp/medical
