DATASUS SIH/SUS — Brazil Hospital Admissions (AIH) MCP について
このMCPサーバーは、1992~2025年のブラジルSUS入院記録(SIH/SUS、AIH)の集計データを提供します。医療研究者や分析担当者向けで、ICDの原因、ICSAP指標、地域別入院率を出典情報付きで照会できます。
主な機能
- 011992~2025年の入院集計
- 02ICD-10の原因と1998年以前のICD-9
- 03月次推移とICSAP指標
- 04地域別の粗率・年齢調整率
- 05入院数、在院日数、SUS支払額、死亡数
- 06回答ごとの出典情報と引用
活用シーン
- 01州別の入院率を比較
- 02診断別の月次入院推移を追跡
- 03自治体で多いICSAP原因を特定
- 04年齢別に入院、費用、死亡を確認
MCP 対応
MCPサーバーは、SIH/SUSの集計、推移、原因、ICSAP分類、入院率を照会する12種類のツールを公開します。stdioとStreamable HTTPに対応し、回答に出典情報を含めます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://sih.sidneybissoli.com/mcpclaude mcp add --transport http sidneybissoli-sih-br https://sih.sidneybissoli.com/mcp{"mcpServers":{"sidneybissoli-sih-br":{"type":"http","url":"https://sih.sidneybissoli.com/mcp"}}}Cursor で開く{"servers":{"sidneybissoli-sih-br":{"type":"http","url":"https://sih.sidneybissoli.com/mcp"}}}VS Code で開く{"mcpServers":{"sidneybissoli-sih-br":{"type":"http","url":"https://sih.sidneybissoli.com/mcp"}}}{"mcpServers":{"sidneybissoli-sih-br":{"serverUrl":"https://sih.sidneybissoli.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
12| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| group_code | string | いいえ | 特定グループのコード(例:'g01')。省略するとすべて返します。 |
| include_cid_codes | boolean | いいえ | true の場合、CID-10 コードの一覧を含めます(デフォルト:false) |
詳細
DATASUS SIH/SUS — ブラジルの入院(AIH)MCP サーバー、1992~2025年
SUS の入院に関する質問に回答する MCP サーバー(Model Context Protocol)です。DATASUS の SIH/SUS、AIH 簡易データを、TabNet を使わず、FTP から .dbc をダウンロードせず、SQL を書かずに、AI アシスタント内で利用できます。34年間(1992~2025年、420,103,883 件の入院)を対象とする12個のツールを備えています。ICD-10 の章およびグループ別の原因(1998年以前は ICD-9)、月次系列、プライマリケアで対応可能な疾患による入院(ICSAP)(ブラジルのリスト)、州および市町村別の粗率、年齢別率、年齢標準化率を調べられます。各層別データには入院数、入院日数、SUS による支払額、死亡数が含まれ、各回答にはデータ収集時期の来歴と出典の引用が付記されます。
英語での説明。 ブラジルの病院入院(DATASUS SIH/SUS、「AIH」レコード)を扱う MCP サーバーです。1992~2025年のデータを対象に、ICD-10 の章およびグループ別の原因(1998年以前は ICD-9)、月次系列、プライマリケアで対応可能な疾患(ICSAP/ACSC、ブラジルのリスト)、州および市町村別の粗率、年齢別率、年齢標準化率について、Claude、ChatGPT、その他の MCP クライアント内で回答します。すべての回答にデータの来歴と出典の引用が付いています。FTP からのダウンロードも、DBC のデコードも、SQL も不要です。
npx -y sih-br-mcp
回答できる質問
MCP クライアントで自然な言葉で質問できます。ツールとパラメーターはアシスタントが選択します。
- 「2024年にエスピリトサント州で肺炎による入院は何件ありましたか?年齢層別に教えてください。」(
get_hospitalizations) - 「ロライマ州の ICSAP 率は2010年から2023年にかけて低下しましたか?」(
get_icsap_indicators) - 「2023年の人口10万人当たり入院率を、年齢標準化して北部と南東部で比較してください。」(
get_hospitalization_rates、compare_regions) - 「私の市町村で、プライマリケアで対応可能な疾患のうち、入院が最も多いものは何ですか?」(
rank_csap_groups) - 「1998年以降のデング熱による入院の月次推移を教えてください。」(
get_hospitalization_trends) - 「J18.9 はプライマリケアで対応可能な疾患ですか?」(
classify_as_csap)
代替ツールとの比較
R や Python で SIH/SUS を扱っている方には、すでに実績のあるツールがあります。このサーバーはそのどれも置き換えるものではありません。クエリチェーンの中で異なる役割を担い、ETL やマイクロデータのダウンロードなしに、アシスタント内で質問された時点で集計結果を返します。詳細、並べて比較した例、測定値については、docs/comparativo-alternativas.mdをご覧ください。
| ツール | 機能 | 選ぶ場面 |
|---|---|---|
| sih-br-mcp(本ツール) | 34 年分の集計結果を AI アシスタントに直接返します。ICSAP、標準化率、回答ごとの出典情報にも対応しています | 質問が集計単位(州、自治体、年、月、CID、年齢、性別、人種、ICSAP)に関するもので、回答の監査可能性が必要な場合 |
| microdatasus 3.0.0(R、CRAN) | DATASUS のマイクロデータ(SIH、SIM、SINASC、SIA、CNES、SINAN)をダウンロードして処理します。DBC を扱い、変数にラベルを付けます | AIH の個別レコード、キューブに含まれない変数、または DATASUS の別のシステムが必要な場合 |
| PySUS 2.11.2(Python) | ブラジルの公開医療データを扱うツールです。DATASUS の FTP から DBC/DBF を読み込みます | Python のパイプラインを使用していて、マイクロデータを使った独自の ETL を行いたい場合 |
| read.dbc 1.2.0(R、CRAN) | 保健省の .dbc 形式を読み込み、展開します | ファイルをすでに持っていて、開くだけでよい場合 |
| csapAIH(R、GitHub) | ブラジルのリストに基づいて AIH を ICSAP に分類します(このサーバーが照合に使用する基準です) | R で自分のマイクロデータを分類する場合 |
| brpop 0.7.0(R、CRAN) | 自治体、州、性別、年齢層別のブラジルの人口推計を提供します | 独自の率を計算するため、R で分母となる人口データが必要な場合 |
| healthbR 0.4.0(R、CRAN) | 本サーバーの R 版です。同じ Parquet ミラーからブラジルの公開医療データにアクセスします | R を使用していて、分析を続けるためにデータを data.frame として取得したい場合 |
このサーバーを使わないでください。質問に AIH の個別レコード、キューブに含まれない変数(実施した処置、医療機関の CNES、受診の種別、二次診断)、または DATASUS の別のシステム(SIM、SINASC、SIA、SINAN)が必要な場合です。その場合は microdatasus、PySUS、または healthbr-data の Parquet ミラーを使用してください。各層のキューブに含まれるデータについては、docs/tool-specifications.mdをご覧ください。年、月、州、自治体、CID の章およびグループ、性別、年齢、人種/肌の色、ICSAP グループ別の入院件数、在院日数、支払額(R$)、死亡件数が含まれます。
データの取得元
このサーバーは、プロジェクト
healthbr-data の公開チャネル sih/cubos/ の利用者です。
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)
2026/09/08 までは、キューブのビルダーはこのリポジトリにありました(scripts/build-aggregations.R、
rebuild-cubes.yml)。それ以降は healthbr-data がデータの生成元となり、このリポジトリでは
キューブを生成も公開もしていません(CONTEXT.md、決定 27)。完全なレシピは
healthbr-data/scripts/pipeline/sih-cubos/README.md とカード
sih-cubos にあります。
- キューブ: 呼び出しで要求された年のデータだけをダウンロードし、
~/.cache/sih-br-mcp/cubos/(SIH_CACHE_DIR)に保存します。サイドカーsih_provenance_<ano>.jsonも同じ場所に保存されます。SIH_CUBES_BASE_URLは別のチャネルを 指定します。SIH_CUBES_CACHE=offにするとキャッシュが無効になります(smoke と golden で使用)。 - ネットワーク: チャネルへのすべてのリクエストは
src/upstream.ts(ポートフォリオ共通の fetch、@sbissoli/mcp-upstream、1.1.0 以降)を経由します。User-Agent、ヘッダーを受信するまでの 試行ごとのタイムアウト 15 秒、429/5xx/ネットワークエラー時の 2 回の再試行とバックオフ、 ファイルのタイムアウト内でのレスポンス本文のストリーム処理を行います。このポリシーはチャネル (55 MB を 1.2 秒)に対して測定され、モジュールのヘッダーに記載されています。各レスポンスの プロベナンスブロックは v1.3 の契約に準拠します(1.7.1 以降)。retrieval(呼び出しによって チャネルに発生したリクエスト数、試行回数、異常の数。レスポンスがディスクから返された場合はnull)、revision(参照した年のいずれかに未確定のコンピテンシー期間がある場合はprovisional、それ以外はcurrent)、キューブのブロック内のderivedとderivation_note、および警告がある場合のnotices(ミラーより古いキューブ、鮮度未確認)が含まれます。 - 鮮度:
src/freshness.tsはサイドカーとsih/rd/manifest-summary.jsonを比較し、キューブが ミラーより古い場合に警告します。再構築を行うのはデータの生成元です(rebuild-sih-cubes.yml。 毎週火曜日およびミラーのメンテナンス後に実行)。 - 事前集計(ブロック
icsap_summaryは 0.14.0 以降、causas_summaryは 0.15.0 以降): 公開済みキューブから派生した、同じチャネル内のショートカットです。ICSAP は 276 KB のサマリーと 年別の層別データ、原因別データは粒度 A(sih_causas_resumo.parquet。34 年分で 569 KB。 入院数、日数、費用、死亡数を含むyear × uf × cid_chapter × cid_revision × is_csap × exclusion) と、性別、5 年刻みの年齢層、人種を加えた粒度 B(年別)です。粒度に収まる呼び出しは、 キューブを一切ダウンロードせずに応答します。「1992 年以降の年別の入院数と費用」の場合、 1.25 GB ではなく 569 KB で済みます。ルーティングは保守的です。粒度に収まらない条件(月、 3 桁の CID カテゴリ、CSAP グループ、5 年刻みの年齢層に収まらない年齢)はキューブにフォール バックし、正確な値を返します。各年で事前集計を使用するのは、マニフェスト内のderived_fromが 公開済みキューブの SHA-256 と一致する場合に限られます。再派生を伴わない再構築では、その年は 低速経路に戻り、誤った数値を返すことはありません。 - 分類テーブル(
src/data/):公開契約sih/cubos/tables/のコピーです。npm run tables:checkでマニフェストに対する SHA-256 を検証します(CI で実行)。 ここでは編集しないでください。データの提供元は生成元です。 - 人口(
pop_uf.parquet、pop_uf_agregado.parquet、pop_municipios.parquet): 0.12.0 以降、同じチャネルから取得し、manifest.jsonのpopulationブロックに署名されています (生成元:healthbr-data のbuild-population.Rとbuild-sih-population.yml。IBGE、 Projeção 2024 の州別データ、DATASUS POPBR/POPSVS の市町村別データ)。レート関連ツール (get_hospitalization_rates、rate_per_10kを指定したcompare_icsap_trends)とget_available_yearsは、初回呼び出し時に 3 つのファイルを SHA-256 の検証後にキャッシュへ ダウンロードします。すでにpop_uf.parquetがあるデータフォルダーが優先されます (fixture、ローカルビルド)。人口データのプロベナンスでは、マニフェストのbuilt_atを返します。
使い方
npm パッケージ:sih-br-mcp(Node 22+)。
データは同梱されていません。キューブ、テーブル、人口データは初回呼び出し時にチャネルから取得され、ローカルキャッシュに保存されます。
npx -y sih-br-mcp # stdio
MCP クライアント(Claude Desktop、Claude Code)の設定:
{ "mcpServers": { "sih": { "command": "npx", "args": ["-y", "sih-br-mcp"] } } }
ソースコードから実行する場合:
npm install
npm run build
node dist/index.js # stdio
環境変数:SIH_DATA_DIR(キャッシュの代わりに、準備済みのキューブがあるフォルダーを指定)、
SIH_CACHE_DIR、SIH_CUBES_BASE_URL、SIH_CUBES_CACHE=off、
SIH_FRESHNESS_CHECK=off。
リモートサーバー(Streamable HTTP)
リモートコネクター(claude.ai)向けに、同じ12個のツールをHTTP経由で提供します。
npm run start:http # http://localhost:8080/mcp (GET /healthz para sondar)
上記の環境変数に加えて、PORT と SIH_HTTP_HOST を使用します。セッションはありません。各リクエストでサーバーとトランスポートが新しく作成されるため、どのインスタンスでもすべての呼び出しに対応できます。本番環境では Cloudflare Container(Dockerfile、人口データはイメージに事前ダウンロード済み)で実行し、worker/ のエッジ Worker の背後に配置します。エッジ Worker はドメイン、レート制限、任意の認証、計測を担当します。設計とコストについては
docs/plan-004-servidor-remoto.md を参照してください。
検証
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 byte
CI(.github/workflows/ci.yml)では、Node 22 と 24 でこれらすべてを実行します。fixture の
tests/fixtures/sih/ は、builder で生成された2023/RRの実際のキューブのコピーです(現在は healthbr-data にあります)。これにより、あらゆる変更の影響を測定できます。
2つのテスト群の役割分担は次のとおりです。scripts/*.mjs のスクリプトは値を固定します(数値が変わるとベースラインで検出します)。tests/*.test.ts のテストスイートは不変条件を検証します(質問に応じて適切なキューブが応答すること、すべての応答に出典情報が含まれること、テキストが構造と一致すること、tools/list が公開する outputSchema に準拠すること。SDK と同じバリデーターで検証します)。そのため、キューブを再公開してもテスト結果には影響しません。各ツールには充実ケースと最小ケースがあります。最小ケースでは、オプションフィールドがない応答を扱います。fixture が常に充実している golden では到達できないケースです。また、エラーを穏当に処理する経路(「データのない年」)も検証します。出力スキーマは src/output-schemas.ts にあり、入力スキーマと同様に、測定した形式に基づいて手書きされています。
レジストリで照合できるサーフェスのフィンガープリント
各リリースでは、MCP Registry のエントリーに、このバージョンが提供するサーフェス(initialize、ツール、リソース、プロンプト)の sha256 と、認証情報なしで応答するメソッドを公開します。バージョンを上げずにサーフェスを変更すると、ビルドは失敗します(surface.lock.json)。レジストリのフィンガープリントを使って、クライアント側でも同じ内容を照合できます。正規形式と手順については、@sbissoli/mcp-surface の SPEC.md を参照してください(英語)。自分で照合する場合(Node 18+、依存関係なし):
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-mcp
メンテナンス方法:npm run surface:lock はブロックを server.json に書き込み(mcp-surface registro)、ロックのテストは古くなった server.json があると失敗します。また、publish.yml は最後に mcp-surface conferir-registro を実行し、ロックを読み込まずに、クライアントと同じように、レジストリ上のこのバージョンのエントリーと稼働中のエンドポイントを照合します。このアイデアは、dev.to の replay に関する記事を執筆した2人の読者(Mike Dabydeen と Valentina Koniukhova)によるものです。
ドキュメント
CONTEXT.md— 番号付きのアーキテクチャ上の決定事項(27はプロデューサーの移行、29はリモートサーバー)。docs/analise-001(対象期間)、analise-002(CID-9 時代、1992–1997年)、analise-003(CID-9 から導出した ICSAP リスト)、plan-002(DuckDB Node Neo)、plan-003(自動再構築、現在は healthbr-data にあります)、plan-004(claude.ai 向け HTTPS リモートサーバー)、plan-005(事前集計済み ICSAP 系列)、plan-006(事前集計済み原因キューブ)、tool-specifications.md。
ライセンス
MIT(LICENSE)。データは保健省/DATASUS のものです。Parquet 形式での再配布と派生キューブは healthbr-data のもので(CC-BY-4.0)す。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。