Medical Terminologies MCP
Acceso unificado a terminologías médicas globales: ICD-11, SNOMED CT, LOINC, RxNorm, MeSH. 27 herramientas para codificación médica, búsqueda de terminología y mapeos de correspondencia.
Documentación
Servidor MCP de Terminologias Médicas
Um servidor Model Context Protocol (MCP) que fornece acesso unificado às principais terminologias médicas globais:
- ICD-11 - Classificação Internacional de Doenças (OMS)
- SNOMED CT - Nomenclatura Sistematizada de Medicina (opt-in; requer Snowstorm auto-hospedado)
- LOINC - Identificadores Lógicos de Nomes e Códigos de Observação
- RxNorm - Nomes normalizados para medicamentos clínicos (NIH)
- MeSH - Cabeçalhos de Assuntos Médicos (NLM)
- ATC - Classificação Química Terapêutica Anatômica (Centro Colaborador da OMS, servido via NLM RxClass)
- CID-10 - Tradução brasileira em português da ICD-10 (DataSUS V2008, incluída)
Veja em ação
Pergunte ao seu assistente:
- "Qual é o código ICD-11 para diabetes tipo 2?" →
icd11_search - "Mapeie o código ICD-10 E11 para ICD-11." →
map_icd10_to_icd11 - "O que o LOINC 2339-0 mede?" →
loinc_details - "Qual o código CID-10 para infarto agudo do miocárdio?" →
cid10_search
As respostas vêm de fontes autorizadas (OMS, NLM, NIH, DataSUS) — códigos e mapeamentos reais, não suposições de dados de treinamento.
Recursos
- 33 ferramentas padrão (39 com SNOMED habilitado): 31 ferramentas de terminologia mais
search/fetchpara ChatGPT Deep Research - 3 Prompts MCP que orquestram chamadas de ferramentas em fluxos de trabalho nomeados (
find-medical-code,drug-info,cid10-portuguese-lookup) — os clientes os renderizam como ações de usuário com um clique - 4 Recursos MCP para conteúdo de referência em processo (
info://server,info://cid10/chapters,info://licenses,info://stats) — leituras em menos de um milissegundo (excetoinfo://statsque faz ida e volta ao Durable Object StatsCounter no endpoint hospedado) - Suporte a múltiplas terminologias em um único servidor
- Mapeamento e busca entre terminologias
- Proveniência em cada resposta (desde v1.8.0): cada resultado de ferramenta bem-sucedido carrega um bloco de proveniência legível por máquina — fonte, URL canônica, data dos dados, instante real de extração (acertos de cache mantêm o instante original de busca), citação pronta para uso e licença — em
structuredContent.provenance+attribution, espelhado em_metasobcom.sidneybissoli.medical/*, com um rodapé de texto compacto para clientes somente texto. Respostas de múltiplas fontes (find_equivalent,validate_codes) carregam um bloco por fonte; campos de classificação calculados pelo servidor são sinalizados como derivados - Cache integrado para melhor desempenho
- Limitação de taxa para respeitar limites de API
- Respostas detalhadas com formatação rica
- Dois transportes: stdio (padrão; para Claude Desktop, clientes IDE) e Streamable HTTP (o Cloudflare Worker hospedado em
https://medical.sidneybissoli.com/mcp, ou sua própria instância deworker/)
📖 Artigo (em português): CID-10, CID-11 e o que muda para quem trabalha com dados do SUS — a estrutura V2008 em números, o que as tabelas de transição da OMS são e não são, e as licenças que diferem entre fontes. Também publicado no site, em português e inglês: sidneybissoli.com.
Para quem é este servidor?
Este servidor não é uma ferramenta de decisão para cuidados clínicos — médicos em prática clínica têm assistentes especializados (UpToDate AI, OpenEvidence, ferramentas integradas a EHR) para isso. O público real são pesquisadores, analistas de saúde pública, desenvolvedores de informática clínica e educadores que precisam de acesso programático a dados terminológicos autorizados.
| Se você é... | Comece com | Por quê |
|---|---|---|
| Pesquisador biomédico / bibliógrafo | mesh_search, mesh_descriptor, mesh_tree | MeSH é o vocabulário de indexação do PubMed; números de árvore permitem percorrer a hierarquia controlada programaticamente |
| Analista de saúde pública (Brasil / SUS) | cid10_search, cid10_chapters, atc_classify | CID-10 V2008 é o padrão operacional brasileiro; ATC combina bem com dados de prescrição do DataSUS |
| Analista de saúde pública (internacional) | icd11_search, icd11_lookup, icd11_chapters | A ICD-11 da OMS é a revisão internacional atual; capítulos e hierarquia suportam classificação em pipelines |
| Desenvolvedor de informática clínica | loinc_search, loinc_details, find_equivalent | LOINC para interoperabilidade de laboratório/observação; busca entre terminologias para estruturar novos mapeamentos |
| Educador / autor de currículos | mesh_descriptor, icd11_lookup, rxnorm_search | Definições autorizadas, números de árvore e tipos de termos de medicamentos que você pode usar em exercícios autocorrigidos |
Experimente a instância hospedada (sem instalação)
Uma implantação pública do Cloudflare Workers está disponível em:
https://medical.sidneybissoli.com/mcp
Conecte-se via MCP Inspector ou qualquer cliente MCP Streamable HTTP:
npx @modelcontextprotocol/inspector --transport streamable-http \
--server-url https://medical.sidneybissoli.com/mcp
Ou instale via Smithery, que faz proxy do mesmo endpoint através do gateway deles:
npx -y smithery mcp add sidneybissoli/medical-terminologies-mcp
A instância hospedada tem credenciais da OMS configuradas, então todas as 33 ferramentas padrão funcionam sem qualquer configuração da sua parte. Para sua própria implantação (ex.: rede corporativa, região diferente, credenciais personalizadas da OMS), veja as seções Instalação e Hospedado no Cloudflare Workers abaixo.
Instalação
Instalação Global (Recomendada)
npm install -g medical-terminologies-mcp
Instalação Local
npm install medical-terminologies-mcp
Configuração
Claude Desktop
Adicione ao seu arquivo de configuração do Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"medical-terminologies": {
"command": "npx",
"args": ["-y", "medical-terminologies-mcp"],
"env": {
"WHO_CLIENT_ID": "your-who-client-id",
"WHO_CLIENT_SECRET": "your-who-client-secret"
}
}
}
}
Variáveis de Ambiente
| Variável | Obrigatória | Descrição |
|---|---|---|
WHO_CLIENT_ID | Sim¹ | ID do Cliente da API ICD da OMS |
WHO_CLIENT_SECRET | Sim¹ | Segredo do Cliente da API ICD da OMS |
WHO_ICD11_RELEASE_ID | Não | Versão da ICD-11 a consultar (ex.: 2025-01, 2026-01). Padrão 2026-01. |
ENABLE_SNOMED_TOOLS | Não² | Defina como true para registrar as 6 ferramentas dependentes de SNOMED. Padrão desativado. |
SNOMED_BASE_URL | Não² | URL base para uma instância Snowstorm, ex.: https://my-snowstorm.example.com/snowstorm/snomed-ct. |
SNOMED_LANGUAGE | Não² | Tag(s) Accept-Language para respostas SNOMED, ex.: pt, pt-BR, es. Padrão en. Valores de tag única são repassados de forma confiável; valores compostos com pesos q (ex.: pt-BR,en;q=0.8) dependem do tratamento de Accept-Language da sua instância Snowstorm — a semântica de fallback pode variar. Teste contra sua implantação específica se depender de fallback ponderado. |
LOG_LEVEL | Não | Nível de log pino (debug, info, warn, error, fatal). Padrão info. |
¹ Obrigatório para ferramentas ICD-11. Obtenha credenciais em: https://icd.who.int/icdapi.
² Veja Configuração SNOMED CT (avançado) abaixo. LOINC, RxNorm e MeSH não precisam de configuração.
Transporte HTTP (hospedado)
O servidor roda sobre stdio por padrão — é o que Claude Desktop e clientes IDE esperam. O transporte Streamable HTTP é servido pelo Cloudflare Worker em worker/ (uma instância do template de hospedagem Fase 0 do mantenedor). A flag --http da entrada Node foi removida na v1.6.0 — se você precisar de um endpoint HTTP local, execute o Worker localmente:
npm ci && cd worker && npm ci
npm run dev # wrangler dev on http://localhost:8787
# Inspector via HTTP
npx @modelcontextprotocol/inspector --transport streamable-http --server-url http://localhost:8787/mcp
Endpoints hospedados (produção e local igualmente):
POST /mcp— JSON-RPC sobre Streamable HTTP (o protocolo MCP). Modo sem estado: cada requisição é independente.GET /health— sonda de atividade retornando{ status, name, version, tool_count, uptime_s }.GET /status— versão + metadados de implantação.GET /metrics— uso agregado por ferramenta.GET /statseGET /stats/badge— contador público de chamadas de ferramentas (desde 2026-05-13) e seu selo shields.io.GET /.well-known/mcp/server-card.json— cartão de servidor estático para scanners de registro.- CORS é permissivo (
*) para que clientes de navegador (ex.: a interface web do MCP Inspector) possam conectar diretamente.
ChatGPT (Deep Research)
O deep research do ChatGPT (e conhecimento da empresa, e fluxos de trabalho de pesquisa sobre a Responses API) só usa um servidor MCP que expõe exatamente search e fetch — este servidor expõe, além das ferramentas de terminologia. Aponte o conector para o endpoint hospedado, sem chave necessária:
https://medical.sidneybissoli.com/mcp
search classifica a consulta na CID-10 incluída (categorias, subcategorias, capítulos), nos registros de versão de terminologia e em um fan-out ao vivo para ICD-11, LOINC, RxNorm e MeSH (o mesmo fan-out que find_equivalent faz; uma fonte que falha é ignorada) e retorna { id, title, url }; fetch renderiza o documento através da própria ferramenta de busca da terminologia (cid10_lookup, icd11_lookup, loinc_details, rxnorm_concept, mesh_descriptor, terminology_versions) como Markdown legível com a página pública canônica (navegadores ICD da OMS, loinc.org, RxNav, MeSH Browser), que é o que o ChatGPT cita. Ambos carregam o mesmo bloco de proveniência que todas as outras ferramentas — search um bloco por fonte que respondeu, como find_equivalent. SNOMED não faz parte do corpus (seu navegador público foi aposentado, então não há página para citar). No modo desenvolvedor do ChatGPT (Configurações → Segurança e login → Modo desenvolvedor), qualquer ferramenta é chamável — as ferramentas de terminologia continuam sendo as indicadas para dados.
Hospedado no Cloudflare Workers (principal)
A implantação de produção é o Cloudflare Worker em worker/, configuração em worker/wrangler.jsonc, implantação CI em .github/workflows/deploy-worker.yml (executa automaticamente a cada push para main).
Para implantar sua própria instância:
npm ci && npm run build:worker-lib
cd worker && npm ci
npx wrangler login # one-time, browser flow
npx wrangler deploy # publishes to <name>.<account>.workers.dev
# Set ICD-11 secrets so those 5 tools work:
npx wrangler secret put WHO_CLIENT_ID
npx wrangler secret put WHO_CLIENT_SECRET
Nota: worker/wrangler.jsonc fixa o account_id do mantenedor e a rota de domínio personalizado — remova/substitua ambos para sua própria implantação.
Por que Workers: zero cold start na borda, US$ 5/mês fixos para 10M de requisições (o nível gratuito cobre até 100k req/dia), e sem VMs para dimensionar ou reiniciar. O template inclui limitação de taxa por IP e um Durable Object de estatísticas de uso; o cache/limitador de taxa voltado ao upstream são por isolado (PROGRESS.md Fase 11.9 Etapa 2 acompanha a atualização KV/DO).
Listagem no Smithery
Depois que seu Worker estiver no ar, registre a URL no Smithery:
- Visite https://smithery.ai → Publicar → MCP (ou
https://smithery.ai/new). - Escolha o caminho de submissão URL (o Smithery descontinuou a hospedagem de contêineres em 2024 — URL é o fluxo suportado agora).
- Cole
https://<your-worker>.workers.dev/mcp. O gateway do Smithery verifica conformidade e faz proxy do tráfego.
Ferramentas Disponíveis (33 por padrão, 39 com SNOMED habilitado)
Conteúdo oficial em português (pt-BR)
O servidor nunca traduz automaticamente conteúdo de terminologia — mas várias fontes publicam traduções oficiais, e as ferramentas as expõem:
- CID-10 é nativamente em português:
cid10_search/cid10_lookup/cid10_chapter(s)servem o conjunto de dados DataSUS V2008 (o CID-10 que o SUS brasileiro usa operacionalmente). - ICD-11 em português oficial: passe
language: "pt"paraicd11_search/icd11_lookuppara buscar e ler os rótulos da linearização oficial pt-BR da OMS. - MeSH: passe
language: "pt"paramesh_search/mesh_descriptorpara solicitar as traduções oficiais do NLM onde existirem. - SNOMED CT (quando habilitado):
languagesolicita as descrições carregadas na sua edição Snowstorm (ex.: refset pt-BR de uma extensão nacional).
Se uma fonte não tiver tradução oficial para uma entrada, você recebe o idioma da fonte de volta — nunca uma tradução automática.
Ferramentas ICD-11 (5)
| Herramienta | Descripción | Ejemplo |
|---|---|---|
icd11_search | Buscar en ICD-11 por término | query: "diabetes mellitus" |
icd11_lookup | Obtener detalles de la entidad por código/URI | code: "5A11" |
icd11_hierarchy | Navegar relaciones padre/hijo | code: "5A11" |
icd11_chapters | Listar todos los capítulos de ICD-11 | - |
icd11_postcoordination | Obtener ejes de postcoordinación | code: "5A11" |
Herramientas LOINC (4)
| Herramienta | Descripción | Ejemplo |
|---|---|---|
loinc_search | Buscar pruebas de laboratorio y observaciones | query: "glucose" |
loinc_details | Obtener detalles completos del código LOINC | loinc_num: "2339-0" |
loinc_answers | Obtener lista de respuestas para encuestas | loinc_num: "44249-1" |
loinc_panels | Obtener estructura de panel/formulario | loinc_num: "24331-1" |
Herramientas RxNorm (5)
| Herramienta | Descripción | Ejemplo |
|---|---|---|
rxnorm_search | Buscar medicamentos por nombre | query: "metformin" |
rxnorm_concept | Obtener detalles del concepto de medicamento | rxcui: "6809" |
rxnorm_ingredients | Obtener ingredientes activos | rxcui: "6809" |
rxnorm_classes | Obtener clases terapéuticas | rxcui: "6809" |
rxnorm_ndc | Mapear entre RxCUI y NDC | rxcui: "6809" |
Herramientas MeSH (4)
| Herramienta | Descripción | Ejemplo |
|---|---|---|
mesh_search | Buscar descriptores MeSH | query: "hypertension" |
mesh_descriptor | Obtener detalles del descriptor | mesh_id: "D006973" |
mesh_tree | Obtener ubicación en la jerarquía de árbol | mesh_id: "D006973" |
mesh_qualifiers | Obtener calificadores permitidos | mesh_id: "D006973" |
Herramientas SNOMED CT (5, deshabilitadas por defecto)
Estas solo se registran cuando ENABLE_SNOMED_TOOLS=true. Ver Configuración de SNOMED CT (avanzado).
| Herramienta | Descripción | Ejemplo |
|---|---|---|
snomed_search | Buscar conceptos por término | query: "myocardial infarction" |
snomed_concept | Obtener detalles del concepto por SCTID | sctid: "22298006" |
snomed_hierarchy | Obtener conceptos padre/hijo | sctid: "22298006" |
snomed_descriptions | Obtener todas las descripciones | sctid: "22298006" |
snomed_ecl | Ejecutar consultas ECL | ecl: "<< 73211009" |
Herramientas de Crosswalk (5 — map_snomed_to_icd10 requiere SNOMED)
| Herramienta | Descripción | Ejemplo |
|---|---|---|
map_icd10_to_icd11 | Mapeo autoritativo ICD-10 → ICD-11 mediante tablas de transición de la OMS incluidas; devuelve código principal + capítulo + URIs y cualquier alternativa documentada por la OMS | icd10_code: "E11" |
map_snomed_to_icd10 | Guía SNOMED CT → ICD-10 (solo cuando ENABLE_SNOMED_TOOLS=true) | sctid: "73211009" |
map_loinc_to_snomed | Guía LOINC ↔ SNOMED | loinc_code: "2339-0" |
validate_codes | Validación por lotes de hasta 100 códigos en ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10 (y SNOMED cuando está habilitado); devuelve válido/no válido por código + nombre mostrado | codes: [{terminology:"icd11",code:"5A11"}, …] |
find_equivalent | Búsqueda unificada clasificada entre terminologías: match_score/rank calculados por el servidor por candidato, más groups entre terminologías de títulos léxicamente idénticos; la rama SNOMED se omite cuando las herramientas SNOMED están deshabilitadas | term: "diabetes" |
Herramientas ATC (3)
Clasificación Química Terapéutica Anatómica de la OMS, servida a través de NLM RxClass (gratuito, sin autenticación). La base WHOCC en sí requiere una suscripción de pago, pero RxClass envuelve los mismos pares código/nombre.
| Herramienta | Descripción | Ejemplo |
|---|---|---|
atc_classify | Nombre de medicamento → código(s) ATC | drug_name: "metformin" |
atc_lookup | Código ATC (nivel 1-4) → nombre + tipo de nivel | atc_code: "A10BA" |
atc_members | Clase ATC → medicamentos miembros | atc_code: "A10BA" |
Herramientas CID-10 (4)
Traducción al portugués brasileño de ICD-10 (DataSUS V2008). Incluido como conjunto de datos estático — sin llamadas HTTP. El SUS brasileño usa CID-10 V2008 operativamente; para el ICD-11 internacional (revisión actual de la OMS), use las herramientas ICD-11 anteriores.
| Herramienta | Descripción | Ejemplo |
|---|---|---|
cid10_search | Búsqueda de texto en portugués (insensible a diacríticos, AND entre palabras; palabras cotidianas resueltas a la redacción CID-10, y la respuesta lo indica) | query: "câncer de mama" |
cid10_lookup | Código → nombre oficial en portugués | code: "I21" o "A00.1" |
cid10_chapters | Listar los 22 capítulos de CID-10 | - |
cid10_chapter | Detalle del capítulo con grupos constituyentes | num: 9 |
Pregunte con sus palabras, no con las del CID-10. El CID-10 está redactado en portugués clínico, y cid10_search comparó sus palabras contra el título del código como una frase textual única — por lo que la palabra cotidiana devolvió nada en absoluto. Medido sobre las 14,496 categorías y subcategorías del conjunto de datos V2008 incluido (2026-09-16), corregido desde 1.12.0: cada palabra debe coincidir (AND), y la palabra cotidiana se expande a la propia del CID-10 (src/clients/cid10-vocabulary.ts, solo pares medidos) — la respuesta lo indica en vocabulary_notes, y los resultados cero vienen con una salida.
| usted pregunta | coincidencias antes | el CID-10 escribe | coincidencias |
|---|---|---|---|
câncer, câncer de mama | 0 | neoplasia maligna (da mama) | 497, 12 |
ataque cardíaco | 0 | infarto | 42 |
AVC | 0 | acidente vascular cerebral | 11 |
pressão alta | 0 | hipertensão | 44 |
dor de cabeça | 0 | cefaleia | 10 |
suicídio | 0 | lesão autoprovocada | 167 |
atropelamento | 0 | pedestre traumatizado | 97 |
aids | 0 | doença pelo HIV | 45 |
pedra nos rins, convulsão, tabagismo, maconha, crack, obeso, cachorro | 0 | calculose, convulsões, fumo, canabinóides, cocaína, obesidade, provocado por cão | 19, 41, 17, 12, 13, 6, 11 |
Lo que el conjunto de datos V2008 no contiene permanece fuera y aún devuelve cero — covid (U07.1 es de 2020), zika — porque un alias para un código que no existe promete lo que la fuente no tiene. La misma tabla alimenta el índice de Deep Research search.
Herramientas de Versionado (2)
Muestran qué versión de cada terminología consulta este servidor hoy — útil al ejecutar validación por lotes contra una versión fija o al investigar una falta de coincidencia inesperada después de una actualización ascendente.
| Herramienta | Descripción | Ejemplo |
|---|---|---|
terminology_versions | Listar las 8 terminologías compatibles con versión actual, fecha de lanzamiento, editor, URL de origen y cadencia de actualización | - |
terminology_diff | Informar qué datos de diferencias están disponibles entre dos versiones de una terminología (estadísticas reales entre revisiones para ICD-10 → ICD-11; orientación en otros casos) | terminology: "icd10-icd11" |
ChatGPT Deep Research (2)
El contrato de OpenAI Deep Research — las únicas dos herramientas sin prefijo de terminología (nombres fijados por OpenAI). Ver ChatGPT (Deep Research) arriba.
| Herramienta | Descripción | Ejemplo |
|---|---|---|
search | Busca en el catálogo (CID-10, ICD-11, LOINC, RxNorm, MeSH, versiones de terminologías) y devuelve { id, title, url } clasificados por relevancia | query: "myocardial infarction" |
fetch | Devuelve el documento completo de un id de search ({ id, title, text, url, metadata }), renderizado por la herramienta de consulta de la terminología | id: "cid10:I21.0" |
Ejemplos de Salida
Las muestras a continuación son la salida formateada real que producen las herramientas — el cuerpo de texto del CallToolResult. Las herramientas también devuelven un objeto structuredContent que coincide con el outputSchema de cada herramienta para consumidores programáticos.
loinc_search — consulta: "glucose", max_results: 3
## LOINC Search Results for "glucose"
Found 1024 total results (showing 3):
1. **74790-7** - Glucose challenge (hydrogen breath test) panel - Exhaled gas
Component: Glucose challenge panel | Method: -
2. **104708-3** - Deprecated Estimated average glucose [Moles/volume] in Blood
Component: Estimated average glucose | Property: SCnc
3. **97510-2** - Glucose measurements in range out of Total glucose measurements during reporting period
Component: Glucose measurements in range/Total glucose measurements | Property: NFr | Method: Calculated
total_count (1024) refleja cada coincidencia en el índice de Clinical Tables de NLM, no solo la página devuelta. Aumente max_results (máx. 50) para ver códigos canónicos como 2339-0 (Glucose [Mass/volume] in Blood); la clasificación de relevancia de la API coloca paneles y mediciones derivadas por encima de la glucosa sanguínea simple en tamaños de página pequeños.
rxnorm_ingredients — rxcui: "6809" (metformina)
# Ingredients for RxCUI 6809
Found 18 ingredient(s):
| RxCUI | Name | Type |
|-------|------|------|
| 6809 | metformin | Single Ingredient |
| 1007411 | chlorpropamide / metformin | Multiple Ingredient |
| 1043562 | metformin / saxagliptin | Multiple Ingredient |
| 1243019 | linagliptin / metformin | Multiple Ingredient |
| 1486436 | dapagliflozin / metformin | Multiple Ingredient |
| 1545149 | canagliflozin / metformin | Multiple Ingredient |
| 1664314 | empagliflozin / metformin | Multiple Ingredient |
| 729717 | metformin / sitagliptin | Multiple Ingredient |
| ... | (10 more combinations) | Multiple Ingredient |
Para un RxCUI que es en sí mismo un ingrediente (TTY=IN), la herramienta devuelve ese ingrediente más cada concepto multi-ingrediente (TTY=MIN) que lo incluye. Use esto para enumerar productos combinados construidos alrededor de una sustancia.
mesh_descriptor — mesh_id: "D006973" (Hipertensión)
# Hypertension
MeSH ID: D006973
## Scope Note
Persistently high systemic arterial BLOOD PRESSURE. Based on multiple readings (BLOOD PRESSURE DETERMINATION), hypertension is currently defined as when SYSTOLIC PRESSURE is consistently greater than 140 mm Hg or when DIASTOLIC PRESSURE is consistently 90 mm Hg or more.
## Tree Numbers
- C14.907.489
## Concepts
- Hypertension *(preferred)*
## Allowed Qualifiers
35 qualifier(s) allowed. Use mesh_qualifiers for details.
La nota de alcance proviene del concepto preferido del descriptor, no de su campo de anotación (que es una nota orientada al indexador). Los números de árbol son la ruta navegable hacia la jerarquía controlada de MeSH — C14.907.489 coloca Hipertensión bajo Enfermedades Cardiovasculares → Enfermedades Vasculares.
Flujos de Trabajo Comunes
- Consulta ICD-11:
icd11_searchcon un término clínico → seleccione el resultado →icd11_lookupcon el código para detalles completos, oicd11_hierarchypara recorrer padres/hijos. - Canal de medicamentos:
rxnorm_searchpara un nombre de marca o genérico →rxnorm_conceptpara el registro canónico →rxnorm_ingredientsyrxnorm_classespara análisis posteriores. - Andamiaje entre terminologías:
find_equivalentcon un término clínico busca en ICD-11, LOINC, RxNorm, MeSH y (cuando está habilitado) SNOMED en una sola llamada. Úselo para iniciar mapeos; las herramientasmap_*por pares los refinan. - ICD-10 → ICD-11 (búsqueda de texto, no autoritativa):
map_icd10_to_icd11realiza una búsqueda de texto honesta contra ICD-11 de la OMS. Las tablas de transición reales de la OMS se rastrean en PROGRESS.md Fase 13.1.
Configuración de SNOMED CT (avanzado)
Las 5 herramientas SNOMED (snomed_search, snomed_concept, snomed_hierarchy, snomed_descriptions, snomed_ecl) más la herramienta de crosswalk dependiente de SNOMED (map_snomed_to_icd10) están deshabilitadas por defecto. Con ellas deshabilitadas, el servidor registra 33 herramientas en lugar de 39; find_equivalent aún funciona y omite la rama SNOMED con una nota explicativa.
La razón: a partir de 2026-05-08, el endpoint público Snowstorm de IHTSDO que este proyecto llamaba históricamente (https://browser.ihtsdotools.org/snowstorm/snomed-ct/...) devuelve HTTP 410 Gone para cada ruta. Sin un backend funcional, registrar estas herramientas expone 6 herramientas garantizadamente rotas a cada cliente.
Para habilitar las herramientas SNOMED:
-
Confirme su licencia SNOMED CT. El uso de SNOMED CT requiere una licencia de SNOMED International (IHTSDO). Los residentes de países miembros típicamente tienen una a través de su centro nacional de lanzamiento; los no miembros pueden obtener una licencia de Afiliado. Ver https://www.snomed.org/snomed-ct/get-snomed.
-
Ejecute una instancia de Snowstorm. SNOMED International publica Snowstorm como código abierto (IHTSDO/snowstorm) y como imagen Docker (
snomedinternational/snowstorm). El autoalojamiento requiere importar un archivo de lanzamiento RF2 (proporcionado a los titulares de licencia). -
Configure este servidor:
{ "mcpServers": { "medical-terminologies": { "command": "npx", "args": ["-y", "medical-terminologies-mcp"], "env": { "WHO_CLIENT_ID": "...", "WHO_CLIENT_SECRET": "...", "ENABLE_SNOMED_TOOLS": "true", "SNOMED_BASE_URL": "https://my-snowstorm.example.com/snowstorm/snomed-ct", "SNOMED_LANGUAGE": "en" } } } }SNOMED_BASE_URLdebe apuntar a la base bajo la cual Snowstorm expone sus/MAIN/conceptsy endpoints relacionados.SNOMED_LANGUAGEacepta etiquetasAccept-Languageestándar (p. ej.pt,es,pt-BR,en;q=0.8) — Snowstorm devuelve términos localizados cuando la rama los tiene y recurre al inglés en caso contrario. -
Reinicie el cliente MCP para que el servidor tome las variables de entorno.
Si establece ENABLE_SNOMED_TOOLS=true sin configurar un Snowstorm funcional, las herramientas SNOMED se registrarán pero cada llamada fallará en la capa de red.
Licencias de Terminologías
La licencia MIT cubre el código del servidor y los metadatos mantenidos por el servidor
solo — no el contenido de terminologías servido a través de él, y no
los dos conjuntos de datos incluidos (cid10.json, icd10-to-icd11.json), que
permanecen bajo sus propios términos. El aviso consolidado se distribuye con el
paquete como NOTICE.md; cada respuesta de herramienta lleva un
bloque de procedencia por fuente con la licencia aplicable.
ICD-11 (OMS)
El contenido de ICD-11 se proporciona bajo la licencia Creative Commons Attribution-NoDerivatives 3.0 IGO (CC BY-ND 3.0 IGO), según los Términos de Uso y Acuerdo de Licencia de ICD-11.
- Cita requerida: "Clasificación Internacional de Enfermedades, Undécima Revisión (CIE-11), Organización Mundial de la Salud (OMS) 2019 https://icd.who.int/browse11. Licenciada bajo la licencia Creative Commons Attribution-NoDerivatives 3.0 IGO (CC BY-ND 3.0 IGO)."
- Este servidor siempre sirve los códigos y títulos de la CIE-11 junto con sus URI, textualmente; las etiquetas no inglesas son traducciones oficiales propias de la OMS (nunca traducidas automáticamente)
- La OMS puede terminar la licencia en cualquier momento mediante aviso (§4.7)
- El acceso a la API requiere registro en https://icd.who.int/icdapi
Tablas de transición CIE-10 de la OMS → CIE-11 (incluidas)
Conversión de formato (TSV → JSON, contenido sin alterar) de las tablas que la OMS publica dentro de la versión CIE-11. © Organización Mundial de la Salud, bajo los Términos de Uso de la CIE-11 — no bajo la licencia MIT de este proyecto. Guía de la OMS: las tablas muestran correspondencia entre revisiones y "no están destinadas a convertir directamente datos de una revisión a otra."
CID-10 V2008 (DataSUS / CBCD, incluido)
© Organización Mundial de la Salud; traducción al portugués brasileño © CBCD / Faculdade de Saúde Pública da USP; archivos electrónicos publicados por DataSUS (Ministério da Saúde do Brasil). Permiso de DataSUS/CBCD: los desarrolladores pueden usar los archivos con el crédito correspondiente y sin cargo — este servidor los sirve gratuitamente con crédito en cada respuesta. No está bajo la licencia MIT de este proyecto.
SNOMED CT
El uso de SNOMED CT requiere una licencia de IHTSDO (SNOMED International). Las herramientas SNOMED en este servidor están deshabilitadas por defecto y solo las habilitan operadores con una licencia válida y una instancia Snowstorm autoalojada — consulte Configuración de SNOMED CT (avanzado).
- Los países miembros tienen licencias nacionales
- Licencias de afiliados disponibles para otros (Brasil no es un país miembro)
- Más información: https://www.snomed.org/get-snomed
LOINC
Este material contiene contenido de LOINC (http://loinc.org). LOINC es copyright © Regenstrief Institute, Inc. y el Comité de Nombres y Códigos de Identificadores de Observaciones Lógicas (LOINC) y está disponible sin costo bajo la licencia en http://loinc.org/license. LOINC® es una marca registrada en los Estados Unidos de Regenstrief Institute, Inc.
- Servido a través de la API gratuita de Tablas Clínicas de NLM; cada código viene con su nombre de visualización oficial
- Los términos con derechos de autor de terceros se sirven con su aviso transmitido textualmente
RxNorm
RxNorm es producido por la Biblioteca Nacional de Medicina de los Estados Unidos; las API de RxNav sirven contenido de RxNorm no propietario y de dominio público sin cargo.
Este producto utiliza datos disponibles públicamente de la Biblioteca Nacional de Medicina de los Estados Unidos (NLM), Institutos Nacionales de Salud, Departamento de Salud y Servicios Humanos; NLM no es responsable del producto y no respalda ni recomienda este ni ningún otro producto.
ATC (a través de NLM RxClass)
Clasificación ATC © Centro Colaborador de la OMS para la Metodología de Estadísticas de Medicamentos (https://atcddd.fhi.no/), recuperada a través de NLM RxClass y servida textualmente. Este servidor nunca redistribuye el índice ATC/DDD de WHOCC.
MeSH
MeSH es un trabajo del gobierno de los Estados Unidos servido bajo los Términos y Condiciones de NLM. Cortesía de la Biblioteca Nacional de Medicina de los Estados Unidos.
Límites de velocidad de la API
Este servidor implementa limitación de velocidad para respetar a los proveedores de API:
| API | Límite de velocidad |
|---|---|
| WHO ICD-11 | 5 solicitudes/segundo |
| NLM (LOINC, MeSH) | 10 solicitudes/segundo |
| RxNorm | 20 solicitudes/segundo |
| SNOMED CT (Snowstorm) | 10 solicitudes/segundo |
Desarrollo
Compilación desde el código fuente
git clone https://github.com/SidneyBissoli/medical-terminologies-mcp.git
cd medical-terminologies-mcp
npm install
npm run build
Ejecución local
npm start
Pruebas con MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js
Contribuciones
¡Las contribuciones son bienvenidas! No dude en enviar una Solicitud de Extracción (Pull Request).
- Haga un fork del repositorio
- Cree su rama de características (
git checkout -b feature/AmazingFeature) - Confirme sus cambios (
git commit -m 'Add some AmazingFeature') - Envíe a la rama (
git push origin feature/AmazingFeature) - Abra una Solicitud de Extracción
Autor
Sidney Bissoli
- GitHub: @SidneyBissoli
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENCIA para más detalles.
Nota: Aunque este software tiene licencia MIT, las terminologías médicas a las que se accede a través de él tienen sus propias licencias (consulte Licencias de Terminología arriba).
Agradecimientos
- OMS por la API de CIE-11
- Regenstrief Institute por LOINC
- Biblioteca Nacional de Medicina de los Estados Unidos por RxNorm y MeSH
- SNOMED International por SNOMED CT
- Anthropic por el Protocolo de Contexto de Modelo
Soporte
Si encuentra algún problema o tiene preguntas:
- Abra un problema en GitHub
- Consulte los problemas existentes para soluciones
Hecho con amor para la comunidad de informática médica