Medical Terminologies MCP
Acesso unificado a terminologias médicas globais: ICD-11, SNOMED CT, LOINC, RxNorm, MeSH. 27 ferramentas para codificação médica, consulta de terminologia e mapeamentos de correspondência.
Documentação
Servidor MCP Medical Terminologies
Um servidor Model Context Protocol (MCP) que fornece acesso unificado às principais terminologias médicas globais:
- CID-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ções
- 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 CID-10 (DataSUS V2008, incluída)
Veja em ação
Pergunte ao seu assistente:
- "Qual é o código CID-11 para diabetes tipo 2?" →
icd11_search - "Mapeie o código CID-10 E11 para CID-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://stats, que 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, versão 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 os limites das APIs
- 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 perfeitamente com dados de prescrição do DataSUS |
| Analista de saúde pública (internacional) | icd11_search, icd11_lookup, icd11_chapters | CID-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 criar 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 CID-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 CID-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). O sinalizador --http da entrada Node foi removido 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— metadados de versão + 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 CID-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 CID 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 10 milhões de requisições (o nível gratuito cobre até 100 mil 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 para 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 em 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 (a CID-10 que o SUS brasileiro usa operacionalmente). - CID-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 CID-11 (5)
| Ferramenta | Descrição | Exemplo |
|---|---|---|
icd11_search | Pesquisar CID-11 por termo | query: "diabetes mellitus" |
icd11_lookup | Obter detalhes da entidade por código/URI | code: "5A11" |
icd11_hierarchy | Navegar relações pai/filho | code: "5A11" |
icd11_chapters | Listar todos os capítulos da CID-11 | - |
icd11_postcoordination | Obter eixos de pós-coordenação | code: "5A11" |
Ferramentas LOINC (4)
| Ferramenta | Descrição | Exemplo |
|---|---|---|
loinc_search | Pesquisar exames laboratoriais e observações | query: "glucose" |
loinc_details | Obter detalhes completos do código LOINC | loinc_num: "2339-0" |
loinc_answers | Obter lista de respostas para questionários | loinc_num: "44249-1" |
loinc_panels | Obter estrutura de painel/formulário | loinc_num: "24331-1" |
Ferramentas RxNorm (5)
| Ferramenta | Descrição | Exemplo |
|---|---|---|
rxnorm_search | Pesquisar medicamentos por nome | query: "metformin" |
rxnorm_concept | Obter detalhes do conceito de medicamento | rxcui: "6809" |
rxnorm_ingredients | Obter princípios ativos | rxcui: "6809" |
rxnorm_classes | Obter classes terapêuticas | rxcui: "6809" |
rxnorm_ndc | Mapear entre RxCUI e NDC | rxcui: "6809" |
Ferramentas MeSH (4)
| Ferramenta | Descrição | Exemplo |
|---|---|---|
mesh_search | Pesquisar descritores MeSH | query: "hypertension" |
mesh_descriptor | Obter detalhes do descritor | mesh_id: "D006973" |
mesh_tree | Obter localização na hierarquia | mesh_id: "D006973" |
mesh_qualifiers | Obter qualificadores permitidos | mesh_id: "D006973" |
Ferramentas SNOMED CT (5, desativadas por padrão)
Estas são registradas apenas quando ENABLE_SNOMED_TOOLS=true. Consulte Configuração do SNOMED CT (avançado).
| Ferramenta | Descrição | Exemplo |
|---|---|---|
snomed_search | Pesquisar conceitos por termo | query: "myocardial infarction" |
snomed_concept | Obter detalhes do conceito por SCTID | sctid: "22298006" |
snomed_hierarchy | Obter conceitos pai/filho | sctid: "22298006" |
snomed_descriptions | Obter todas as descrições | sctid: "22298006" |
snomed_ecl | Executar consultas ECL | ecl: "<< 73211009" |
Ferramentas de Inter-relacionamento (5 — map_snomed_to_icd10 requer SNOMED)
| Ferramenta | Descrição | Exemplo |
|---|---|---|
map_icd10_to_icd11 | Mapeamento autoritativo CID-10 → CID-11 via tabelas de transição da OMS; retorna código primário + capítulo + URIs e quaisquer alternativas documentadas pela OMS | icd10_code: "E11" |
map_snomed_to_icd10 | Orientação SNOMED CT → CID-10 (somente quando ENABLE_SNOMED_TOOLS=true) | sctid: "73211009" |
map_loinc_to_snomed | Orientação LOINC ↔ SNOMED | loinc_code: "2339-0" |
validate_codes | Validar em lote até 100 códigos em CID-11, LOINC, RxNorm, MeSH, ATC, CID-10 (e SNOMED quando habilitado); retorna válido/inválido por código + nome de exibição | codes: [{terminology:"icd11",code:"5A11"}, …] |
find_equivalent | Busca unificada classificada entre terminologias: match_score/rank calculados no servidor por candidato, além de groups entre terminologias de títulos lexicalmente idênticos; o ramo SNOMED é ignorado quando as ferramentas SNOMED estão desativadas | term: "diabetes" |
Ferramentas ATC (3)
Classificação Química Terapêutica Anatômica da OMS, servida via NLM RxClass (gratuito, sem autenticação). A base WHOCC em si exige assinatura paga, mas o RxClass encapsula os mesmos pares código/nome.
| Ferramenta | Descrição | Exemplo |
|---|---|---|
atc_classify | Nome do medicamento → código(s) ATC | drug_name: "metformin" |
atc_lookup | Código ATC (nível 1-4) → nome + tipo de nível | atc_code: "A10BA" |
atc_members | Classe ATC → medicamentos membros | atc_code: "A10BA" |
Ferramentas CID-10 (4)
Tradução brasileira em português da CID-10 (DataSUS V2008). Incluída como conjunto de dados estático — sem chamadas HTTP. O SUS brasileiro usa a CID-10 V2008 operacionalmente; para a CID-11 internacional (revisão atual da OMS), use as ferramentas CID-11 acima.
| Ferramenta | Descrição | Exemplo |
|---|---|---|
cid10_search | Busca de texto em português (insensível a diacríticos, E entre palavras; palavras cotidianas resolvidas para a redação da CID-10, e a resposta informa isso) | query: "câncer de mama" |
cid10_lookup | Código → nome oficial em português | code: "I21" ou "A00.1" |
cid10_chapters | Listar os 22 capítulos da CID-10 | - |
cid10_chapter | Detalhe do capítulo com grupos constituintes | num: 9 |
Pergunte com suas palavras, não as da CID-10. A CID-10 é redigida em português clínico, e cid10_search comparou suas palavras com o título do código como uma frase literal — então a palavra cotidiana não retornou nada. Medido nas 14.496 categorias e subcategorias do conjunto V2008 incluído (2026-09-16), corrigido desde 1.12.0: cada palavra deve corresponder (E), e a palavra cotidiana é expandida para a própria redação da CID-10 (src/clients/cid10-vocabulary.ts, apenas pares medidos) — a resposta informa isso em vocabulary_notes, e resultados zero vêm com uma saída.
| você pergunta | resultados antes | a CID-10 escreve | resultados |
|---|---|---|---|
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 |
O que o conjunto de dados V2008 não contém permanece fora e ainda retorna zero — covid (U07.1 é de 2020), zika — porque um alias para um código que não existe promete o que a fonte não possui. A mesma tabela alimenta o índice search do Deep Research.
Ferramentas de Versionamento (2)
Exibem qual versão de cada terminologia este servidor consulta hoje — útil ao executar validação em lote contra uma versão fixa ou ao investigar uma falha inesperada de busca após uma atualização upstream.
| Ferramenta | Descrição | Exemplo |
|---|---|---|
terminology_versions | Listar todas as 8 terminologias suportadas com versão atual, data de lançamento, editor, URL de origem e cadência de atualização | - |
terminology_diff | Relatar quais dados de diff estão disponíveis entre duas versões de uma terminologia (estatísticas reais entre revisões para CID-10 → CID-11; orientação caso contrário) | terminology: "icd10-icd11" |
ChatGPT Deep Research (2)
O contrato OpenAI Deep Research — as únicas duas ferramentas sem prefixo de terminologia (nomes fixados pela OpenAI). Consulte ChatGPT (Deep Research) acima.
| Ferramenta | Descrição | Exemplo |
|---|---|---|
search | Pesquisa o catálogo (CID-10, CID-11, LOINC, RxNorm, MeSH, versões de terminologias) e retorna { id, title, url } classificados por relevância | query: "myocardial infarction" |
fetch | Retorna o documento completo de um id de search ({ id, title, text, url, metadata }), renderizado pela ferramenta de consulta da terminologia | id: "cid10:I21.0" |
Exemplos de Saída
As amostras abaixo são a saída formatada real que as ferramentas produzem — o corpo de texto do CallToolResult. As ferramentas também retornam um objeto structuredContent correspondente ao outputSchema de cada ferramenta 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) reflete cada correspondência no índice Clinical Tables da NLM, não apenas a página retornada. Aumente max_results (máx. 50) para ver códigos canônicos como 2339-0 (Glucose [Massa/volume] no Sangue); a classificação de relevância da API coloca painéis e medições derivadas acima da glicose sanguínea simples em tamanhos de página pequenos.
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 um RxCUI que é em si um ingrediente (TTY=IN), a ferramenta retorna esse ingrediente mais cada conceito multi-ingrediente (TTY=MIN) que o inclui. Use isso para enumerar produtos combinados construídos em torno de uma substância.
mesh_descriptor — mesh_id: "D006973" (Hipertensão)
# 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.
A nota de escopo vem do conceito preferido do descritor, não do seu campo de anotação (que é uma nota voltada ao indexador). Os números de árvore são o caminho navegável na hierarquia controlada do MeSH — C14.907.489 coloca Hipertensão sob Doenças Cardiovasculares → Doenças Vasculares.
Fluxos de Trabalho Comuns
- Consulta CID-11:
icd11_searchcom um termo clínico → selecione o resultado →icd11_lookupcom o código para detalhes completos, ouicd11_hierarchypara percorrer pais/filhos. - Pipeline de medicamentos:
rxnorm_searchpara um nome de marca ou genérico →rxnorm_conceptpara o registro canônico →rxnorm_ingredientserxnorm_classespara análise downstream. - Estruturação entre terminologias:
find_equivalentcom um termo clínico pesquisa CID-11, LOINC, RxNorm, MeSH e (quando habilitado) SNOMED em uma única chamada. Use para iniciar mapeamentos; as ferramentasmap_*em pares os refinam. - CID-10 → CID-11 (busca de texto, não autoritativa):
map_icd10_to_icd11faz busca de texto honesta contra a CID-11 da OMS. Tabelas reais de transição da OMS são rastreadas em PROGRESS.md Fase 13.1.
Configuração do SNOMED CT (avançado)
As 5 ferramentas SNOMED (snomed_search, snomed_concept, snomed_hierarchy, snomed_descriptions, snomed_ecl) mais a ferramenta de inter-relacionamento dependente de SNOMED (map_snomed_to_icd10) estão desativadas por padrão. Com elas desativadas, o servidor registra 33 ferramentas em vez de 39; find_equivalent ainda funciona e ignora o ramo SNOMED com uma nota explicativa.
O motivo: a partir de 2026-05-08, o endpoint público Snowstorm da IHTSDO que este projeto historicamente chamava (https://browser.ihtsdotools.org/snowstorm/snomed-ct/...) retorna HTTP 410 Gone para todos os caminhos. Sem um backend funcional, registrar essas ferramentas expõe 6 ferramentas garantidamente quebradas a cada cliente.
Para habilitar as ferramentas SNOMED:
-
Confirme sua licença SNOMED CT. O uso de SNOMED CT exige uma licença da SNOMED International (IHTSDO). Residentes de países membros normalmente têm uma por meio do centro nacional de lançamento; não membros podem obter uma licença de Afiliado. Consulte https://www.snomed.org/snomed-ct/get-snomed.
-
Execute uma instância Snowstorm. A SNOMED International publica o Snowstorm como código aberto (IHTSDO/snowstorm) e como imagem Docker (
snomedinternational/snowstorm). Auto-hospedagem exige importar um arquivo de lançamento RF2 (fornecido a detentores de licença). -
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_URLdeve apontar para a base sob a qual o Snowstorm expõe seus/MAIN/conceptse endpoints relacionados.SNOMED_LANGUAGEaceita tagsAccept-Languagepadrão (ex.:pt,es,pt-BR,en;q=0.8) — o Snowstorm retorna termos localizados quando o ramo os possui e recorre ao inglês caso contrário. -
Reinicie o cliente MCP para que o servidor capture as variáveis de ambiente.
Se você definir ENABLE_SNOMED_TOOLS=true sem configurar um Snowstorm funcional, as ferramentas SNOMED serão registradas, mas toda chamada falhará na camada de rede.
Licenças de Terminologias
A licença MIT cobre o código do servidor e os metadados mantidos pelo servidor
apenas — não o conteúdo de terminologias servido por ele, e não
os dois conjuntos de dados incluídos (cid10.json, icd10-to-icd11.json), que
permanecem sob seus próprios termos. O aviso consolidado acompanha o
pacote como NOTICE.md; toda resposta de ferramenta carrega um
bloco de proveniência por fonte com a licença aplicável.
CID-11 (OMS)
O conteúdo da CID-11 é fornecido sob a licença Creative Commons Atribuição-SemDerivações 3.0 IGO (CC BY-ND 3.0 IGO), conforme os Termos de Uso e Contrato de Licença da CID-11.
- Citação obrigatória: "Classificação Internacional de Doenças, Décima Primeira Revisão (CID-11), Organização Mundial da Saúde (OMS) 2019 https://icd.who.int/browse11. Licenciada sob a licença Creative Commons Atribuição-SemDerivações 3.0 IGO (CC BY-ND 3.0 IGO)."
- Este servidor sempre fornece códigos e títulos da CID-11 juntamente com seus URIs, verbatim; rótulos não-ingleses são traduções oficiais da própria OMS (nunca traduzidos por máquina)
- A OMS pode encerrar a licença a qualquer momento mediante aviso (§4.7)
- O acesso à API requer registro em https://icd.who.int/icdapi
Tabelas de transição CID-10 → CID-11 da OMS (incluídas)
Conversão de formato (TSV → JSON, conteúdo inalterado) das tabelas que a OMS publica na versão CID-11. © Organização Mundial da Saúde, sob os Termos de Uso da CID-11 — não sob a licença MIT deste projeto. Orientação da OMS: as tabelas mostram correspondência entre revisões e "não se destinam a converter diretamente dados de uma revisão para outra."
CID-10 V2008 (DataSUS / CBCD, incluído)
© Organização Mundial da Saúde; tradução para o português brasileiro © CBCD / Faculdade de Saúde Pública da USP; arquivos eletrônicos publicados pelo DataSUS (Ministério da Saúde do Brasil). Permissão DataSUS/CBCD: desenvolvedores podem usar os arquivos com os devidos créditos e sem custo — este servidor os fornece gratuitamente com crédito em cada resposta. Não está sob a licença MIT deste projeto.
SNOMED CT
O uso de SNOMED CT requer uma licença da IHTSDO (SNOMED International). As ferramentas SNOMED neste servidor estão desabilitadas por padrão e só são ativadas por operadores com licença válida e uma instância Snowstorm auto-hospedada — consulte Configuração SNOMED CT (avançado).
- Países membros têm licenças nacionais
- Licenças de afiliados disponíveis para outros (o Brasil não é país membro)
- Mais informações: https://www.snomed.org/get-snomed
LOINC
Este material contém conteúdo de LOINC (http://loinc.org). LOINC é protegido por direitos autorais © Regenstrief Institute, Inc. e o Comitê de Nomes e Códigos de Identificadores de Observações Lógicas (LOINC) e está disponível sem custo sob a licença em http://loinc.org/license. LOINC® é uma marca registrada nos Estados Unidos do Regenstrief Institute, Inc.
- Fornecido via API gratuita de Tabelas Clínicas da NLM; cada código vem com seu nome de exibição oficial
- Termos com direitos autorais de terceiros são fornecidos com seu aviso transmitido verbatim
RxNorm
RxNorm é produzido pela Biblioteca Nacional de Medicina dos EUA; as APIs RxNav fornecem conteúdo RxNorm não proprietário, de domínio público, gratuitamente.
Este produto usa dados publicamente disponíveis da Biblioteca Nacional de Medicina dos EUA (NLM), Institutos Nacionais de Saúde, Departamento de Saúde e Serviços Humanos; a NLM não é responsável pelo produto e não endossa nem recomenda este ou qualquer outro produto.
ATC (via NLM RxClass)
Classificação ATC © Centro Colaborador da OMS para Metodologia de Estatísticas de Medicamentos (https://atcddd.fhi.no/), recuperada via NLM RxClass e fornecida verbatim. Este servidor nunca redistribui o índice ATC/DDD da WHOCC.
MeSH
MeSH é um trabalho do governo dos EUA fornecido sob os Termos e Condições da NLM. Cortesia da Biblioteca Nacional de Medicina dos EUA.
Limites de Taxa da API
Este servidor implementa limitação de taxa para respeitar os provedores de API:
| API | Limite de Taxa |
|---|---|
| OMS CID-11 | 5 solicitações/segundo |
| NLM (LOINC, MeSH) | 10 solicitações/segundo |
| RxNorm | 20 solicitações/segundo |
| SNOMED CT (Snowstorm) | 10 solicitações/segundo |
Desenvolvimento
Compilando a partir do código-fonte
git clone https://github.com/SidneyBissoli/medical-terminologies-mcp.git
cd medical-terminologies-mcp
npm install
npm run build
Executando localmente
npm start
Testando com o MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
- Faça um fork do repositório
- Crie sua branch de recurso (
git checkout -b feature/AmazingFeature) - Faça commit das suas alterações (
git commit -m 'Add some AmazingFeature') - Envie para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Autor
Sidney Bissoli
- GitHub: @SidneyBissoli
Licença
Este projeto é licenciado sob a Licença MIT — consulte o arquivo LICENSE para detalhes.
Nota: Embora este software seja licenciado sob MIT, as terminologias médicas acessadas por ele têm suas próprias licenças (consulte Licenças de Terminologias acima).
Agradecimentos
- OMS pela API da CID-11
- Regenstrief Institute pelo LOINC
- Biblioteca Nacional de Medicina dos EUA pelo RxNorm e MeSH
- SNOMED International pelo SNOMED CT
- Anthropic pelo Model Context Protocol
Suporte
Se você encontrar problemas ou tiver dúvidas:
- Abra uma issue no GitHub
- Verifique issues existentes para soluções
Feito com amor para a comunidade de informática médica