sih-br-mcp
sih-br-mcp is an MCP server for aggregate Brazilian SUS hospital admissions (SIH/DATASUS, 1992–2025) that answers questions inside AI assistants with auditable provenance.
Query hospitalizations by UF, year/month, CID chapter/group, sex, age, race, and CSAP status, grouped flexibly; returns hospitalizations, days, value paid, and deaths.
Get monthly or annual hospitalization time series and regional/UF rankings.
Analyze ICSAP/ambulatory care sensitive conditions: list the 19 Portaria 221/2008 groups, classify CID-10 codes, get counts/percentages, indicators, rankings, and comparative trends.
Calculate crude/specific hospitalization rates per 1k/10k/100k population by UF and year, using IBGE population denominators.
Reference tools: 22 ICD-10 chapters, available years with cube freshness, CID-9 era flags, race availability, currency, and population coverage.
Every response includes provenance, source URL, vintage, retrieval details, citation, license, and attribution; data comes from DATASUS via healthbr-data cubes/cache, not from individual records or SQL/FTP.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sih-br-mcp Compare ICSAP hospitalization rates between São Paulo and Rio de Janeiro in 2023."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DATASUS SIH/SUS — MCP Server de internações hospitalares (AIH) do Brasil, 1992–2025
Servidor MCP (Model Context Protocol) que responde perguntas sobre as internações
hospitalares do SUS — o SIH/SUS do DATASUS, AIH reduzida — dentro do assistente de
IA, sem TabNet, sem baixar .dbc do FTP e sem escrever SQL. Doze ferramentas sobre
34 anos (1992 a 2025, 420.103.883 internações): causas por capítulo e grupo da
CID-10 (CID-9 antes de 1998), séries mensais, ICSAP — internações por condições
sensíveis à atenção primária, lista brasileira — e taxas brutas, específicas ou
padronizadas por idade, por UF e por município. Cada estrato traz internações, dias de
permanência, valor pago pelo SUS e óbitos, com a proveniência da safra e a citação
da fonte em cada resposta.
In English. MCP server for Brazilian hospital admissions (DATASUS SIH/SUS, "AIH" records), 1992–2025: causes by ICD-10 chapter and group (ICD-9 before 1998), monthly series, ambulatory care sensitive conditions (ICSAP/ACSC, Brazilian list) and crude, age-specific or age-standardized rates by state and municipality — answered inside Claude, ChatGPT or any MCP client, with provenance and a citation in every answer. No FTP download, no DBC decoding, no SQL:
npx -y sih-br-mcp.
Perguntas que ele responde
Em linguagem comum, no cliente MCP: quem escolhe a ferramenta e os parâmetros é o assistente.
"Quantas internações por pneumonia houve no Espírito Santo em 2024, por faixa de idade?" (
get_hospitalizations)"A taxa de ICSAP de Roraima caiu entre 2010 e 2023?" (
get_icsap_indicators)"Compare a internação por 100 mil habitantes entre Norte e Sudeste em 2023, padronizada por idade." (
get_hospitalization_rates,compare_regions)"Quais condições sensíveis à atenção primária mais internam no meu município?" (
rank_csap_groups)"Série mensal de internações por dengue desde 1998." (
get_hospitalization_trends)"J18.9 é condição sensível à atenção primária?" (
classify_as_csap)
Related MCP server: mcp-cnes
Comparação com as alternativas
Quem trabalha com SIH/SUS em R ou Python já tem ferramentas consolidadas, e este
servidor não substitui nenhuma delas — ele ocupa um lugar diferente da cadeia:
responde a pergunta agregada no ponto onde ela é feita, dentro do assistente, sem
ETL e sem download de microdado. Detalhe, exemplos lado a lado e os números medidos
em docs/comparativo-alternativas.md.
Ferramenta | O que faz | Quando preferir |
sih-br-mcp (este) | Responde agregados de 34 anos direto no assistente de IA, com ICSAP, taxas padronizadas e proveniência por resposta | A pergunta é agregada (UF, município, ano, mês, CID, idade, sexo, raça, ICSAP) e a resposta tem de ser auditável |
microdatasus 3.0.0 (R, CRAN) | Baixa e processa microdados do DATASUS (SIH, SIM, SINASC, SIA, CNES, SINAN): trata o DBC e rotula as variáveis | Você precisa do registro individual da AIH, de variáveis fora dos cubos ou de outro sistema do DATASUS |
PySUS 2.11.2 (Python) | Ferramentas para os dados públicos de saúde brasileiros; lê DBC/DBF do FTP do DATASUS | Seu pipeline é Python e você quer ETL próprio sobre o microdado |
read.dbc 1.2.0 (R, CRAN) | Lê e descomprime o formato | Você já tem os arquivos e só precisa abri-los |
csapAIH (R, GitHub) | Classifica AIH em ICSAP pela lista brasileira (é a referência que este servidor confere) | A classificação é sobre o seu microdado, em R |
brpop 0.7.0 (R, CRAN) | Estimativas populacionais brasileiras por município, UF, sexo e faixa | Você calcula as próprias taxas e quer o denominador em R |
healthbR 0.4.0 (R, CRAN) | Irmão em R deste servidor: acessa dados públicos de saúde do Brasil pelo mesmo espelho Parquet | Você está em R e quer o dado numa |
Não use este servidor quando a pergunta exigir o registro individual da AIH,
variáveis que os cubos não carregam (procedimento realizado, CNES do estabelecimento,
caráter de atendimento, diagnóstico secundário) ou outro sistema do DATASUS (SIM,
SINASC, SIA, SINAN) — nesses casos o caminho é microdatasus, PySUS ou o espelho
Parquet do healthbr-data. O que os
cubos carregam por estrato está em
docs/tool-specifications.md: internações, dias de
permanência, valor pago (R$) e óbitos, por ano, mês, UF, município, capítulo e grupo
CID, sexo, idade, raça/cor e grupo ICSAP.
De onde vêm os dados
Este servidor é consumidor do canal público sih/cubos/ do projeto
healthbr-data:
Ministério da Saúde / DATASUS (RD<UF><AAMM>.dbc, FTP)
→ healthbr-data sih/rd/ (Parquet 1:1, manifesto com MD5 e data de download)
→ healthbr-data pipeline sih-cubos (scripts/pipeline/sih-cubos/build-aggregations.R)
→ https://data.sidneybissoli.com/sih/cubos/ (cubos + sidecar por ano + manifest.json + tables/)
→ este servidor (cache local sob demanda, SHA-256 conferido contra o manifesto)Até 08/09/2026 o builder dos cubos vivia aqui (scripts/build-aggregations.R,
rebuild-cubes.yml); desde então o produtor é o healthbr-data e este repositório
não gera nem publica cubo nenhum (CONTEXT.md, decisão 27). A receita completa está
em healthbr-data/scripts/pipeline/sih-cubos/README.md e no card
sih-cubos.
Cubos: baixados por ano, só os que a chamada pede, para
~/.cache/sih-br-mcp/cubos/(SIH_CACHE_DIR), com o sidecarsih_provenance_<ano>.jsonao lado.SIH_CUBES_BASE_URLaponta outro canal;SIH_CUBES_CACHE=offdesliga (smoke e golden usam).Rede: toda ida ao canal passa por
src/upstream.ts(fetch comum do portfólio,@sbissoli/mcp-upstream, desde a 1.1.0): User-Agent, 15 s por tentativa até os cabeçalhos, 2 retries em 429/5xx/rede com backoff, corpo em stream sob o prazo do arquivo; a política foi medida contra o canal (55 MB em 1,2 s) e está documentada no cabeçalho do módulo. O bloco de proveniência de cada resposta segue o contrato v1.3 (desde a 1.7.1): trazretrieval(quantas idas, tentativas e anomalias a chamada custou ao canal —nullquando a resposta veio do disco),revision(provisionalquando algum ano consultado ainda tem competências abertas,currentnos demais),derived+derivation_notenos blocos dos cubos enoticesquando há aviso (cubo atrás do espelho, frescor não verificado).Frescor:
src/freshness.tscompara o sidecar comsih/rd/manifest-summary.jsone avisa quando um cubo está atrás do espelho; quem reconstrói é o produtor (rebuild-sih-cubes.yml, toda terça e após cada manutenção do espelho).Pré-agregados (blocos
icsap_summary, desde a 0.14.0, ecausas_summary, desde a 0.15.0): atalhos DERIVADOS dos cubos publicados, no mesmo canal. O da ICSAP é um resumo de 276 KB mais os estratos por ano; o de causas é o grão A (sih_causas_resumo.parquet, 569 KB com os 34 anos:year × uf × cid_chapter × cid_revision × is_csap × exclusioncom internações, dias, valor e óbitos) mais o grão B por ano, que acrescenta sexo, faixa etária quinquenal e raça. Uma chamada que cabe no grão responde sem baixar cubo nenhum — "internações e gasto por ano desde 1992" custa 569 KB em vez de 1,25 GB. O roteamento é conservador: o que não cabe (mês, categoria CID de 3 dígitos, grupo CSAP, idade fora das faixas quinquenais) cai no cubo e sai exato. Cada ano só usa o pré-agregado se oderived_fromdo manifesto ainda bater com o SHA-256 do cubo publicado; rebuild sem nova derivação devolve aquele ano ao caminho lento, nunca ao número errado.Tabelas de classificação (
src/data/): cópias do contrato publicado emsih/cubos/tables/;npm run tables:checkconfere o SHA-256 contra o manifesto (roda no CI). Nunca edite aqui — a fonte é o produtor.População (
pop_uf.parquet,pop_uf_agregado.parquet,pop_municipios.parquet): desde a 0.12.0 vem do mesmo canal, assinada no blocopopulationdomanifest.json(produtor:build-population.R+build-sih-population.ymldo healthbr-data — IBGE, Projeção 2024 por UF; DATASUS POPBR/POPSVS por município). As ferramentas de taxa (get_hospitalization_rates,compare_icsap_trendscomrate_per_10k) eget_available_yearsbaixam os três arquivos para o cache na primeira chamada, com SHA-256 conferido; uma pasta de dados que já tenhapop_uf.parquettem precedência (fixture, build local). A proveniência da população responde com obuilt_atdo manifesto.
Uso
Pacote no npm: sih-br-mcp (Node 22+).
Ele não embarca dado nenhum — cubos, tabelas e população vêm do canal na primeira
chamada e ficam no cache local.
npx -y sih-br-mcp # stdioConfiguração num cliente MCP (Claude Desktop, Claude Code):
{ "mcpServers": { "sih": { "command": "npx", "args": ["-y", "sih-br-mcp"] } } }A partir do código-fonte:
npm install
npm run build
node dist/index.js # stdioVariáveis: SIH_DATA_DIR (pasta com cubos já prontos, em vez do cache),
SIH_CACHE_DIR, SIH_CUBES_BASE_URL, SIH_CUBES_CACHE=off,
SIH_FRESHNESS_CHECK=off.
Servidor remoto (Streamable HTTP)
As mesmas 12 ferramentas por HTTP, para conectores remotos (claude.ai):
npm run start:http # http://localhost:8080/mcp (GET /healthz para sondar)PORT e SIH_HTTP_HOST além das variáveis acima. Sem sessão: cada request
cria servidor e transporte novos, então qualquer instância atende qualquer
chamada. Em produção roda num Cloudflare Container (Dockerfile, população
pré-baixada na imagem) atrás do Worker de borda em worker/, que cuida de
domínio, rate limit, autenticação opcional e medição — desenho e custos em
docs/plan-004-servidor-remoto.md.
Verificação
npm ci && npm run build
npm test # vitest: decisão de rota (puro) + envelope e outputSchema das 12 (caso cheio e caso magro)
npm run smoke:stdio # superfície das ferramentas × baselines/surface-stdio.json
npm run smoke:http # mesma superfície e chamadas pelo transporte HTTP (dist/http.js)
npm run golden:tools # 12 ferramentas byte a byte × baselines/golden-tools.json (fixture 2023/RR)
npm run freshness:selftest # frescor offline sobre um trecho versionado do manifesto
npm run cache:selftest # cache local (download + SHA-256) contra um canal falso
npm run tables:check # tabelas de src/data × manifesto do canal
npm run equiv:summary # pré-agregados da ICSAP × caminho clássico, byte a byte
npm run equiv:series # roteamento para o cubo leve de séries
npm run equiv:causas # pré-agregados de causas (grão A e B) × cubo, byte a byteO CI (.github/workflows/ci.yml) roda tudo isso em Node 22 e 24. A fixture
tests/fixtures/sih/ é uma cópia real dos cubos de 2023/RR gerados pelo builder
(hoje no healthbr-data) — é o que torna medível qualquer bump.
A divisão de trabalho entre as duas famílias: os scripts em scripts/*.mjs
pinam VALORES (mudou um número, o baseline acusa); a suíte de tests/*.test.ts
afirma INVARIANTES (qual cubo responde a pergunta; toda resposta sai com
proveniência, com o texto igual à estrutura e obedecendo ao outputSchema que
o tools/list publica — validado com o mesmo validador do SDK), e por isso
republicar um cubo não a move. Cada ferramenta tem ali um caso CHEIO e um caso
MAGRO — a resposta com os campos opcionais ausentes, que o golden, sempre com
fixture cheia, não alcança — e o caminho de erro-mole ("ano sem dado") também
é validado. Os esquemas de saída estão em src/output-schemas.ts, escritos à
mão a partir das formas medidas, como os de entrada.
Impressão digital da superfície, conferível pelo registro
Cada release publica, na sua entrada do MCP Registry,
o sha256 da superfície que esta versão serve (initialize, ferramentas, resources, prompts) e
quais métodos respondem sem credencial. Mudar a superfície sem subir a versão reprova o build
(surface.lock.json); a impressão digital no registro deixa o cliente conferir o mesmo do lado
dele. Forma canônica e procedimento: SPEC.md do @sbissoli/mcp-surface
(em inglês). Para conferir por conta própria (Node 18+, sem dependência):
curl -sO https://raw.githubusercontent.com/SidneyBissoli/mcp-br-commons/main/packages/mcp-surface/exemplos/verify.mjs
node verify.mjs io.github.SidneyBissoli/sih-br-mcpQuem mantém: npm run surface:lock grava o bloco no server.json (mcp-surface registro),
o teste da trava reprova server.json defasado, e o publish.yml termina com
mcp-surface conferir-registro — a entrada desta versão no registro contra o endpoint no ar,
como um cliente, sem ler a trava. Ideia de dois leitores do artigo do replay no dev.to
(Mike Dabydeen e Valentina Koniukhova).
Documentação
CONTEXT.md— decisões arquiteturais numeradas (a 27 é a migração do produtor; a 29, o servidor remoto).docs/analise-001(janela de competências),analise-002(era CID-9, 1992–1997),analise-003(lista ICSAP em CID-9 derivada),plan-002(DuckDB Node Neo),plan-003(rebuild automático, hoje no healthbr-data),plan-004(servidor remoto HTTPS para o claude.ai),plan-005(série pré-agregada da ICSAP),plan-006(cubo de causas pré-agregado),tool-specifications.md.
Licença
MIT (LICENSE). Os dados são do Ministério da Saúde / DATASUS; a redistribuição em
Parquet e os cubos derivados são do healthbr-data (CC-BY-4.0).
Available Tools
12 toolsclassify_as_csapClassificar CID-10 como CSAPARead-onlyIdempotentInspect
Classifica um ou mais códigos CID-10 como CSAP ou não. Retorna o grupo CSAP correspondente se aplicável. Aceita as duas notações do mesmo código — J18.1 (OMS) e J181 (SIH) — com a mesma resposta. Código que NÃO é CID-10 não é classificado: volta com is_csap: null e error próprio, nunca false (que afirmaria que a condição existe e não é sensível). Só CID-10: os códigos CID-9 de 6 dígitos do SIH de 1992–1997 são classificados no build pela lista derivada (src/data/csap-groups-cid9.json), não por esta ferramenta.
Inputs: cid_codes (required). Returns: Cada código CID-10 informado classificado como sensível (com o grupo) ou não; `…
compare_icsap_trendsTendências comparativas de ICSAPARead-onlyIdempotentInspect
Análise temporal comparativa de ICSAP entre UFs ou grupos CSAP. Calcula tendências, variação anual e identifica melhores/piores desempenhos. Para percentage e count valem todos os anos do SIH (desde 1992); rate_per_10k exige população e aceita só os anos de get_available_years.population_years. Em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+) e uf é a UF do arquivo — ver as notes. Percentual no universo do pacote R csapAIH por padrão (universe): fora do numerador e do denominador as internações por procedimento obstétrico, parto e longa permanência.
Inputs: end_year (required), start_year (required), universe, indicator, +3 more. Returns: Séries anuais do indicador ICSAP por UF ou grupo CSAP, com tendência linear e m…
compare_regionsComparação entre UFs e regiõesARead-onlyIdempotentInspect
Compara internações entre UFs ou regiões do Brasil. Gera rankings e identifica variações regionais. Em 1992–1997 uf é a UF do arquivo (estabelecimento), não de residência — ver get_available_years.uf_basis e as notes.
Inputs: year, limit, metric, is_csap, +2 more. Returns: Ranking de UFs por internações ou óbitos; `error` quando nenhum ano pedido tem…
get_available_yearsAnos disponíveis e frescor dos cubosARead-onlyIdempotentInspect
Retorna os anos disponíveis nos dados do SIH-SUS carregados e o frescor dos cubos em relação ao espelho healthbr-data (freshness.status: current, stale, unknown, pending ou disabled; quando stale, lista por ano as partições reeditadas pelo MS, regeneradas, retiradas ou novas na janela). Por ano, o que muda entre as eras do SIH: race_available (raça/cor só de 2008), cid_revision (9 = CID-9 de 6 dígitos em 1992–1997, 10 = CID-10; 1997 tem as duas), icsap_list_revision (cid9-derivada, não oficial, em 1992–1997), uf_basis (arquivo em 1992–1997, residencia de 1998), municipality_available, currency e records_date_imputed.
Inputs: no named parameters. Returns: Anos com cubo local, o que cada ano carrega (revisão da CID, raça/cor, municípi…
get_hospitalization_ratesTaxas de internação por populaçãoARead-onlyIdempotentInspect
Calcula taxas de internação por população. A taxa sai em rate, na base declarada em rate_per (1000, 10000 ou 100000; default 100000). Denominador lido de dois arquivos, informados em get_available_years.population_years: projeções do IBGE por idade simples de 2000 em diante (pop_uf.parquet) e, de 1991 a 1999, população por faixa etária quinquenal somada dos municípios (pop_uf_agregado.parquet) — antes de 2000 o recorte por idade só vale nos limites das faixas (age_min múltiplo de 5, age_max terminado em 4 ou 9, ou 80+). A resposta diz qual arquivo serviu a cada ano (population_source) e avisa quando mistura os dois.
Inputs: uf, sex, year, age_max, +6 more. Returns: Taxa de internação por população (IBGE por UF), bruta ou específica; `error` qu…
get_hospitalizationsInternações do SUS com filtrosARead-onlyIdempotentInspect
Consulta dados de internações hospitalares do SUS com filtros flexíveis. Permite agregar por múltiplas dimensões (UF, CID, sexo, idade, raça, ano/mês). Raça/cor só existe de 2008 em diante: em 1998–2007 race é nulo (ver get_available_years.race_available). Série desde 1992: em 1992–1997 o diagnóstico é CID-9 decodificado por tabela (cid_group = categoria de 3 dígitos, cid_chapter = capítulo CID-10 equivalente; agrupar por cid_revision separa 9 e 10 — 1997 tem os dois), uf é a UF do ARQUIVO (estabelecimento), não de residência, e value é nominal na moeda da época — ver get_available_years (uf_basis, currency) e as notes da resposta. exclusion (agrupável) marca as internações fora do universo do % ICSAP do csapAIH (procedimento_obstetrico, parto, longa_permanencia; nula = dentro).
Inputs: uf, sex, race, year, +7 more. Returns: Internações do cubo de causas, agrupadas conforme `group_by`, com totais do rec…
get_hospitalization_trendsSéries temporais de internaçõesARead-onlyIdempotentInspect
Retorna séries temporais de internações (mensal ou anual). Útil para análise de tendências e sazonalidade. O ano e o mês são os da INTERNAÇÃO (DT_INTER), não a competência de faturamento; o ano mais recente cresce até a janela dele fechar (AIH faturada com atraso), e o DATASUS reedita arquivos de competências passadas — cada número é a versão do download do espelho. Série desde 1992; em 1992–1997 uf é a UF do arquivo (estabelecimento) e as internações sem data na fonte (1992-01..04 e 1993-01) entram no mês de faturamento — ver get_available_years e as notes.
Inputs: year_end (required), year_start (required), uf, cid_chapter, +1 more. Returns: Série temporal de internações, anual (`year`) ou mensal (`year_month`); `error`…
get_icsapInternações por condições sensíveis (ICSAP)ARead-onlyIdempotentInspect
Consulta internações por Condições Sensíveis à Atenção Primária (ICSAP). Permite filtros por grupo CSAP, UF, município, sexo, idade e raça. Raça/cor só existe de 2008 em diante: em 1998–2007 race é nulo (ver get_available_years.race_available). Série desde 1992: em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+), uf é a UF do arquivo e municipality_code é nulo — ver get_available_years (icsap_list_revision, uf_basis) e as notes. Percentual no universo do pacote R csapAIH por padrão (universe): fora do numerador e do denominador as internações por procedimento obstétrico, parto e longa permanência.
Inputs: uf, sex, race, year, +6 more. Returns: Internações por condições sensíveis à atenção primária, agrupadas conforme `gro…
get_icsap_indicatorsIndicadores de ICSAPARead-onlyIdempotentInspect
Calcula indicadores de ICSAP: percentual (ICSAP/Total×100). Métricas-chave para avaliar a Atenção Primária. Agrupar por raça só faz sentido de 2008 em diante: em 1998–2007 race é nulo (ver get_available_years.race_available). Em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+) e uf é a UF do arquivo — ver as notes. Percentual no universo do pacote R csapAIH por padrão (universe): fora do numerador e do denominador as internações por procedimento obstétrico, parto e longa permanência.
Inputs: uf, sex, year, age_max, +4 more. Returns: Percentual de ICSAP por estrato de `group_by`, com a fórmula e a nota do univer…
list_cid_chaptersCapítulos da CID-10ARead-onlyIdempotentInspect
Lista os 22 capítulos da CID-10 com seus códigos e faixas de diagnóstico. Os cubos de 1992–1997 (diagnóstico em CID-9) trazem cid_chapter como o capítulo CID-10 equivalente (mapa por categoria em src/data/cid9-chapters.json).
Inputs: no named parameters. Returns: Os 22 capítulos da CID-10 (versão 2019), com intervalo de códigos e nomes
list_csap_groupsGrupos CSAP (Portaria 221/2008)ARead-onlyIdempotentInspect
Lista os 19 grupos de Condições Sensíveis à Atenção Primária (CSAP) conforme Portaria MS/SAS 221/2008. Retorna código, nome e códigos CID-10 de cada grupo.
Inputs: group_code, include_cid_codes. Returns: Os 19 grupos CSAP (lista completa) ou um grupo só, quando `group_code` é inform…
rank_csap_groupsRanking dos grupos CSAPARead-onlyIdempotentInspect
Gera ranking dos 19 grupos CSAP por número de internações, dias de internação ou valor. Identifica principais causas evitáveis. Em 1992–1997 a ICSAP vem de lista CID-9 DERIVADA e não oficial (g03 e g05 não comparáveis com 1998+) e value é nominal na moeda da época — ver as notes. Universo do pacote R csapAIH por padrão (universe): fora as internações por procedimento obstétrico, parto e longa permanência.
Inputs: uf, sex, year, limit, +4 more. Returns: Os grupos CSAP ordenados pela métrica, com participação de cada um e concentraç…
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
The CSAP-vs-general split is mostly clear (get_icsap vs get_hospitalizations, get_icsap_indicators vs get_hospitalization_rates), but the analysis family overlaps heavily: compare_icsap_trends, compare_regions and get_hospitalization_trends all produce cross-UF/time comparisons, and rank_csap_groups largely duplicates a grouped get_icsap call. Descriptions are unusually detailed and do help, but an agent must read them carefully to pick the right comparison tool.
All 12 tools follow a consistent snake_case verb_noun pattern (get_, list_, compare_, rank_, classify_) with no case or style mixing. Names are predictable and readable, with the only variation being domain terminology (csap/icsap/hospitalization) rather than naming convention.
12 tools sits comfortably in the well-scoped range, covering query, aggregation, trends, rates, indicators, ranking, comparison, classification and metadata without obvious redundancy padding. Each tool corresponds to a recognizable analytical need for this dataset.
The surface covers the full analytical lifecycle for SIH-SUS/CSAP data: raw queries, aggregation, rates, indicators, trends, rankings, comparisons, CSAP classification and year/chapter/group metadata. Minor gaps remain — no geography lookup (UF/municipality codes and names) and no general CID-10 code description lookup beyond chapters, which agents will need for filter construction.
Maintenance
Related MCP Connectors
Banco Central do Brasil (Brazil's central bank) MCP. Keyless public APIs: SGS time series + Olinda…
HCUP Inpatient Stats — national hospitalization discharges, costs and outcomes by condition and…
Pay-per-call US healthcare data: hospital financials, prices, quality, exclusions, wages.
WHO GHO MCP — World Health Organization Global Health Observatory (free, no auth)
Related MCP Servers
- AlicenseAqualityFmaintenanceMCP server for Brazilian ICD-10 (CID-10) that enables search, lookup, hierarchy navigation, statistics, and validation of disease codes from official DATASUS data.67,399 npm1MIT
- AlicenseAqualityCmaintenanceMCP server for loading and querying public data from the Brazilian National Registry of Health Establishments (CNES). It enables natural language searches for health facilities by municipality, CNES code, or state, along with statistics and data loading.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural-language querying of Brazilian public health indicators from DataSUS microdata — mortality, dengue, hospitalizations, ICSAP, and births — through 41 tools covering consultation, analysis (peer-stratum comparison, dengue endemic channel, weekly bulletin), reliability warnings, and anomaly detection. It runs locally against the public API with anti-hallucination rules so every figure comes from a tool with its source cited.MIT
- AlicenseCqualityBmaintenanceEnables users to query Brazil's public healthcare data through read-only fixed tools for hospital and outpatient activity, facility capacity, geographic signals, mortality, and reviewed rare-disease billing views. It returns reviewed aggregate views, not patient records, and includes metadata and coverage checks to interpret scope and limitations.71MIT