mcpField
M
Medical Terminologies MCP

Medical Terminologies MCP

リモート
medical.sidneybissoli.comヘルスケア161 日前に更新
リポジトリ公式サイト

Medical Terminologies MCP について

Medical Terminologies MCPは、研究者、公衆衛生アナリスト、臨床情報学の開発者、教育者向けに、主要な医学用語体系への統一アクセスを提供します。ICD-11、LOINC、RxNorm、MeSH、ATC、ブラジルのCID-10に対応し、用語間検索やマッピング、出典情報を扱います。臨床判断支援を目的とはしていません。

主な機能

  1. 016種類の医学用語体系の検索
  2. 02用語体系をまたぐ検索とコード対応
  3. 03結果への出典・引用情報の付与
  4. 04キャッシュとレート制限
  5. 05MCPプロンプトとリソースの提供
  6. 06stdioとStreamable HTTPへの対応

活用シーン

  1. 01疾患分類コードと階層の確認
  2. 02検査・観察項目の用語検索
  3. 03標準化された医薬品名の検索
  4. 04用語マッピングの版と出典の記録

MCP 対応

MCPクライアントに、用語の検索・参照・マッピングおよび参考情報向けの33個のツール、3つのプロンプト、4つのリソースを提供します。stdioまたはStreamable HTTPで接続できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://medical.sidneybissoli.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npmmedical-terminologies-mcp2.4.0

ツール

33
パラメーター型必須説明
querystringはい検索テキスト(疾患名、症状、キーワード)
languageenumいいえ言語コード(デフォルト:en)。公式訳が存在する場合は、ソースの公式訳を返します(例:公式ポルトガル語は 'pt')。コンテンツが機械翻訳されることはありません。en | es | pt | fr | de | it | zh | ja | ar | ru
max_resultsintegerいいえ結果の最大数(1~100)。デフォルト:25

詳細

Medical Terminologies MCP サーバー

npm version npm downloads node MCP Registry LobeHub smithery badge Glama MCP server Available on CodeGuilds GitHub stars GitHub Sponsors tool calls MCP License: MIT

主要な世界の医療用語集に統合的にアクセスできる Model Context Protocol(MCP)サーバーです。

  • ICD-11 - 疾病及び関連保健問題の国際統計分類(WHO)
  • LOINC - 臨床検査項目とコードの論理名称識別子
  • RxNorm - 臨床用医薬品の標準化名称(NIH)
  • MeSH - 医学主題見出し(NLM)
  • ATC - 解剖治療化学分類(WHO協力センター、NLM RxClass経由で提供)
  • CID-10 - ICD-10のブラジルポルトガル語訳(DataSUS V2008、同梱)

🇧🇷 ポルトガル語で読む

動作例

アシスタントに質問してみましょう。

  • 「2型糖尿病のICD-11コードは何ですか?」 → icd11_search
  • 「ICD-10コードE11をICD-11に対応付けてください。」 → map_icd10_to_icd11
  • 「LOINC 2339-0は何を測定しますか?」 → loinc_details
  • 「急性心筋梗塞のCID-10コードは何ですか?」 → cid10_search

回答は信頼できる情報源(WHO、NLM、NIH、DataSUS)から取得されます。学習データに基づく推測ではなく、実際のコードと対応関係を提供します。

機能

  • 33 個のツール:用語ツール 31 個と、ChatGPT Deep Research 用の search/fetch
  • ツール呼び出しを名前付きワークフロー(find-medical-code、drug-info、cid10-portuguese-lookup)にまとめて実行する MCP プロンプト 3 個 — クライアントでは、ワンクリックで実行できるユーザーアクションとして表示されます
  • プロセス内の参照コンテンツ用の MCP リソース 4 個(info://server、info://cid10/chapters、info://licenses、info://stats)— ミリ秒未満で読み取れます(ただし info://stats は、ホストされたエンドポイント上の StatsCounter Durable Object への往復が発生します)
  • 1 つのサーバーで複数の用語体系をサポート
  • 用語体系をまたいだマッピングと検索
  • すべてのレスポンスに来歴情報を付与(v1.8.0 以降):成功した各ツールの結果には、機械可読な来歴情報ブロック(ソース、正規 URL、データの時点、実際の取得日時(キャッシュヒット時は元の取得日時を維持)、すぐに使える引用情報、ライセンス)が含まれます。これは structuredContent.provenance と attribution に格納され、com.sidneybissoli.medical/* の下の _meta にも反映されます。テキストのみのクライアント向けには、簡潔なテキストフッターも付加されます。複数のソースに由来するレスポンス(find_equivalent、validate_codes)にはソースごとに 1 つのブロックが含まれ、サーバーが算出したランキング項目には派生データであることが示されます
  • パフォーマンスを向上させる組み込みキャッシュ
  • API の制限を遵守するレート制限
  • 豊富な書式設定による詳細なレスポンス
  • 2 種類のトランスポート:stdio(デフォルト。Claude Desktop、IDE クライアント向け)と Streamable HTTP(ホストされた Cloudflare Worker の https://medical.sidneybissoli.com/mcp、または worker/ の独自インスタンス)

📖 記事(ポルトガル語): CID-10、CID-11、およびSUSのデータを扱う人にとっての変化 — V2008 の構造を数値で示し、WHO の移行表が示すものと示さないもの、ソースによって異なるライセンスについて解説します。サイトでもポルトガル語と英語で公開されています:sidneybissoli.com。

対象ユーザー

このサーバーは、臨床ケアの意思決定ツールではありません。臨床医は、専門のアシスタント(UpToDate AI、OpenEvidence、EHR 統合ツール)を利用できます。主な対象ユーザーは、信頼できる用語データへのプログラムからのアクセスを必要とする研究者、公衆衛生アナリスト、医療情報学の開発者、教育者です。

対象ユーザーまず使うツール理由
生物医学研究者/書誌情報の専門家mesh_search、mesh_descriptor、mesh_treeMeSH は PubMed の索引用語集です。ツリー番号を使うと、統制された階層をプログラムからたどれます
公衆衛生アナリスト(ブラジル/SUS)cid10_search、cid10_chapters、atc_classifyCID-10 V2008 はブラジルの運用標準です。ATC は DataSUS の処方データと円滑に組み合わせられます
公衆衛生アナリスト(国際)icd11_search、icd11_lookup、icd11_chaptersWHO の ICD-11 は現在の国際改訂版です。章と階層により、パイプラインでの分類に対応できます
医療情報学の開発者loinc_search、loinc_details、find_equivalent検査・観察データの相互運用には LOINC を、マッピングの新規作成には用語体系をまたいだ検索を活用できます
教育者/カリキュラム作成者mesh_descriptor、icd11_lookup、rxnorm_search信頼できる定義、ツリー番号、薬剤の用語タイプを、自分で確認できる演習にそのまま取り入れられます

このサーバーの用途ではないこと — およびマシン外に送信されるデータ

  • 臨床判断支援を目的としたものではありません。 公式ソースが公開している情報を取得します。診断、治療の推奨、投与量の提案は行いません。
  • オフラインでの実行を想定していません。 ICD-11、LOINC、RxNorm、MeSH、ATC は、公開されている WHO および NLM の API をリアルタイムで呼び出して応答します。送信するすべてのクエリ文字列は、これらのサービスに転送されます。 実行前に用語リストから個人を特定できる情報を取り除いてください。患者名、自由記述のメモ、レコード識別子は含めないでください。2 つのデータセットは同梱されており、ネットワーク呼び出しなしでプロセス内で応答します。CID-10(DataSUS V2008)と WHO ICD-10 → ICD-11 移行テーブル(map_icd10_to_icd11)です。
  • ホストされたエンドポイントでは認証情報は不要です。 https://medical.sidneybissoli.com/mcp には WHO の認証情報が設定されています。WHO_CLIENT_ID/WHO_CLIENT_SECRET が必要なのは、自分でサーバーを実行する場合のみで、対象も 5 つの ICD-11 ツールに限られます。
  • SNOMED CT は提供していません。 2.0.0 で廃止されました。公開されている Snowstorm ホストがなく、SNOMED のコンテンツには国ごとのライセンスが必要で、デフォルトで無効なツールが、このサーバーを掲載するすべてのカタログを混乱させていたためです。SNOMED CT(2.0.0 で廃止)を参照してください。
  • OMOP 形式ではありません。 結果には OMOP の concept_id ではなく、ソース独自のコードが含まれます。また、concept_ancestor による探索には対応していません。出力を OMOP CDM と結合する必要がある場合は、OMOP の語彙サービスを使用してください。このサーバーは一般的な用語作業にご利用ください。
  • 検索は意味的ではなく、語句に基づきます。 find_equivalent と *_search ツールは意味ではなく単語に一致します(埋め込み表現は使用しません)。
  • 大量のバッチ処理は、上流のレート制限に合わせて調整されます(API のレート制限を参照)。異なる用語が数千件ある場合、数分から数十分かかります。

再現性:どのバージョンが応答したか

クロスウォークやコード化されたデータセットは、語彙のバージョンを明示して初めて意味を持ちます。これを記録するものが 2 つあります。

  • terminology_versions には、各用語体系のクエリ対象リリースが一覧表示されます。バッチ処理の開始時に呼び出し、出力を結果と一緒に保管してください。ICD-11 のリリースは 固定 されています(デフォルトは 2026-01、WHO_ICD11_RELEASE_ID で上書き可能)。そのため、変更しない限りセルフホストでの実行を再現できます。

  • すべての応答に含まれる来歴ブロック(structuredContent.provenance)には、retrieved_at(実際の取得時刻。キャッシュヒットの場合は元の取得時刻が保持されます)、ソース URL、引用、ライセンスが含まれます。data_vintage フィールドには、ソースがバージョンを公開している場合にそのバージョンが含まれます。

    ソース各応答の data_vintage
    ICD-11固定された WHO リリース(例:2026-01)
    ICD-10 → ICD-11 テーブル同梱された WHO リリース(例:2025-01)
    CID-10V2008
    LOINC、RxNorm、MeSH、ATCnull。これらの API は応答ごとのリリースを示さないため。代わりに terminology_versions と retrieved_at を記録してください

最小限のバッチログは、開始時の terminology_versions の呼び出し 1 回と、各結果の provenance(ソース、data_vintage、retrieved_at)です。

ホストされたインスタンスを試す(インストール不要)

公開されている Cloudflare Workers のデプロイ先は次のとおりです。

https://medical.sidneybissoli.com/mcp

MCP Inspector または Streamable HTTP 対応の MCP クライアントから接続します。

npx @modelcontextprotocol/inspector --transport streamable-http \
  --server-url https://medical.sidneybissoli.com/mcp

または、Smithery 経由で同じエンドポイントをゲートウェイ経由でプロキシする方法でインストールできます。

npx -y smithery mcp add sidneybissoli/medical-terminologies-mcp

ホストされたインスタンスには WHO の認証情報が設定されているため、手元で設定しなくても 33 個すべてのツールを利用できます。独自にデプロイする場合(例:社内ネットワーク、別の地域、カスタムの WHO 認証情報)は、以下のインストールおよびCloudflare Workers でのホスティングのセクションを参照してください。

インストール

グローバルインストール(推奨)
npm install -g medical-terminologies-mcp
ローカルインストール
npm install medical-terminologies-mcp

設定

Claude Desktop

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"
      }
    }
  }
}
環境変数
変数必須説明
WHO_CLIENT_IDはい¹WHO ICD API クライアント ID
WHO_CLIENT_SECRETはい¹WHO ICD API クライアントシークレット
WHO_ICD11_RELEASE_IDいいえ照会する ICD-11 リリース(例:2025-01、2026-01)。デフォルトは 2026-01 です。
LOG_LEVELいいえpino のログレベル(debug、info、warn、error、fatal)。デフォルトは info です。

¹ ICD-11 ツールで必要です。認証情報は https://icd.who.int/icdapi で取得できます。

LOINC、RxNorm、MeSH、ATC、CID-10 には設定は必要ありません。

HTTP トランスポート(ホスト型)

サーバーはデフォルトで stdio 経由で実行されます。これは Claude Desktop や IDE クライアントが想定する方式です。Streamable HTTP トランスポートは、worker/ にある Cloudflare Worker(メンテナーの Fase 0 ホスティングテンプレートのインスタンス)によって提供されます。Node エントリの --http フラグは v1.6.0 で削除されました。ローカル HTTP エンドポイントが必要な場合は、Worker をローカルで実行してください。

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

ホスト型エンドポイント(本番環境、ローカル環境のいずれも同様):

  • POST /mcp — Streamable HTTP 経由の JSON-RPC(MCP プロトコル)。ステートレスモードのため、各リクエストは独立しています。
  • GET /health — { status, name, version, tool_count, uptime_s } を返す稼働状況プローブ。
  • GET /status — バージョンとデプロイメタデータ。GET /metrics — ツールごとの使用状況の集計。
  • GET /stats と GET /stats/badge — 公開ツール呼び出しカウンター(2026-05-13 以降)と、その shields.io バッジ。
  • GET /.well-known/mcp/server-card.json — レジストリスキャナー用の静的サーバーカード。
  • CORS は制限なし(*)のため、ブラウザクライアント(MCP Inspector の Web UI など)が直接接続できます。
ChatGPT(Deep Research)

ChatGPT の Deep Research(Company Knowledge、および Responses API を介したリサーチワークフローも含む)が使用する MCP サーバーは、search と fetch のみを公開するものに限られます。このサーバーは用語ツールに加えて、これらも公開しています。キーは不要です。コネクターをホスト型エンドポイントに指定してください。

https://medical.sidneybissoli.com/mcp

search は、同梱された CID-10(カテゴリー、サブカテゴリー、章)、用語バージョンのレコード、ICD-11、LOINC、RxNorm、MeSH へのライブファンアウト(find_equivalent と同じファンアウト。エラーになったソースはスキップ)を対象にクエリをランキングし、{ id, title, url } を返します。fetch は、用語独自の検索ツール(cid10_lookup、icd11_lookup、loinc_details、rxnorm_concept、mesh_descriptor、terminology_versions)を使ってドキュメントを読みやすい Markdown として表示し、正規の公開ページ(WHO ICD ブラウザー、loinc.org、RxNav、MeSH Browser)を示します。これは ChatGPT が引用する情報です。どちらのツールにも、他のすべてのツールと同じ出典情報ブロックが含まれます。search では、find_equivalent と同様に、応答したソースごとに 1 つのブロックが含まれます。ChatGPT の開発者モード(Settings → Security and login → Developer mode)では、どのツールも呼び出せます。データには引き続き用語ツールを使用してください。

Cloudflare Workers でホスト(プライマリ)

本番環境のデプロイ先は worker/ にある Cloudflare Worker です。設定は worker/wrangler.jsonc、CI デプロイは .github/workflows/deploy-worker.yml にあり、main へのプッシュごとに自動実行されます。

独自のインスタンスをデプロイするには:

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

注:worker/wrangler.jsonc にはメンテナーの account_id とカスタムドメインのルートが指定されています。独自にデプロイする場合は、両方を削除または置き換えてください。

Workers を使う理由:エッジでコールドスタートが発生せず、月額 5 ドルで 1,000 万リクエスト(無料枠は 1 日あたり最大 10 万リクエスト)に対応し、サイズ調整や再起動が必要な VM もありません。このテンプレートには、IP ごとのレート制限と使用状況統計用の Durable Object が含まれています。上流向けのキャッシュとレートリミッターは isolate ごとに設定されています(PROGRESS.md の Phase 11.9 Stage 2 では KV/DO へのアップグレードを追跡しています)。

Smithery への登録

Worker の稼働後、URL を Smithery に登録します。

  1. https://smithery.ai にアクセスし、Publish → MCP(または https://smithery.ai/new)を選択します。
  2. URL の登録方法を選択します(Smithery は 2024 年にコンテナホスティングを非推奨にしました。現在サポートされているのは URL 方式です)。
  3. https://<your-worker>.workers.dev/mcp を貼り付けます。Smithery のゲートウェイが準拠状況をスキャンし、トラフィックをプロキシします。

利用可能なツール(33)

公式ポルトガル語(pt-BR)コンテンツ

サーバーは用語コンテンツを機械翻訳しません。ただし、公式翻訳を公開しているソースがいくつかあり、ツールから利用できます。

  • CID-10 はもともとポルトガル語です:cid10_search / cid10_lookup / cid10_chapter(s) は、DataSUS V2008 データセット(ブラジルの SUS が実務で使用している CID-10)を提供します。
  • 公式ポルトガル語の ICD-11:icd11_search / icd11_lookup に language: "pt" を渡すと、WHO 公式の pt-BR 線形化ラベルを検索して取得できます。
  • MeSH:mesh_search / mesh_descriptor に language: "pt" を渡すと、NLM の公式翻訳が存在する場合に、それを取得できます。

エントリーに公式翻訳がない場合は、ソース言語で返されます。機械翻訳が返されることはありません。

ICD-11 ツール(5)
ツール説明例
icd11_search用語から ICD-11 を検索しますquery: "diabetes mellitus"
icd11_lookupコード/URI からエンティティの詳細を取得しますcode: "5A11"
icd11_hierarchy親子関係をたどりますcode: "5A11"
icd11_chaptersICD-11 の全章を一覧表示します-
icd11_postcoordinationポストコーディネーションの軸を取得しますcode: "5A11"
LOINC ツール(4)
ツール説明例
loinc_search検査項目や観察項目を検索しますquery: "glucose"
loinc_detailsLOINC コードの詳細を取得しますloinc_num: "2339-0"
loinc_answers質問票項目の回答リストを返します:LA コード、テキスト、順序、スコア(PHQ-9 項目:0-3)。リストのないコードでは空になり、不明なコードでは「見つかりません」と返しますloinc_num: "44250-9"
loinc_panelsパネル/フォームの構造を返します:フォーム内の順序に沿った構成項目loinc_num: "44249-1"
RxNorm ツール(5)
ツール説明例
rxnorm_search医薬品を名称で検索しますquery: "metformin"
rxnorm_concept医薬品概念の詳細を取得しますrxcui: "6809"
rxnorm_ingredients有効成分を取得しますrxcui: "6809"
rxnorm_classes治療薬クラスを取得しますrxcui: "6809"
rxnorm_ndcRxCUI と NDC の対応を取得しますrxcui: "6809"
MeSH ツール(4)
ツール説明例
mesh_searchMeSH ディスクリプターを検索しますquery: "hypertension"
mesh_descriptorディスクリプターの詳細を取得しますmesh_id: "D006973"
mesh_treeツリー階層内の位置を取得しますmesh_id: "D006973"
mesh_qualifiers使用可能な修飾語を取得しますmesh_id: "D006973"
クロスウォークツール(4)
ツール説明例
map_icd10_to_icd11同梱の WHO 移行テーブルを使用した、信頼性の高い ICD-10 → ICD-11 対応付けです。主要コード、章、URI、および WHO が記録した代替候補を返しますicd10_code: "E11"
validate_codesICD-11、LOINC、RxNorm、MeSH、ATC、CID-10 のコードを最大 50 件一括検証します。コードごとの有効/無効と表示名を返しますcodes: [{terminology:"icd11",code:"5A11"}, …]
find_equivalent用語体系を横断する、順位付けされた統合検索です。候補ごとにサーバーが算出した match_score/rank と、字句的に同一のタイトルをまとめた用語体系横断の groups を返しますterm: "diabetes"
harmonize_termsフリーテキスト用語を最大 50 件、一括で標準コードに対応付けます:診断 → ICD-11、医薬品 → RxNorm(+ATC クラス)、検査 → LOINC。用語ごとに、match_score と match_type(exact/strong/needs_review)を含む順位付けされた候補と、ソースごとの来歴ブロックを返します。validate_codes の用語を先に指定する方式の対応ツールですterms: [{term:"type 2 diabetes",domain:"diagnosis"}, {term:"metformin",domain:"drug"}]
ATC ツール(3)

NLM RxClass を通じて提供される、WHO の解剖治療化学分類です(無料、認証不要)。WHOCC の基本サービス自体は有料サブスクリプションが必要ですが、RxClass では同じコードと名称の組み合わせを利用できます。

ツール説明例
atc_classify医薬品名 → ATC コード(複数の場合あり)drug_name: "metformin"
atc_lookupATC コード(レベル 1~4)→ 名称とレベルの種類atc_code: "A10BA"
atc_membersATC 分類 → 該当する医薬品atc_code: "A10BA"
CID-10 ツール(4)

ブラジルポルトガル語に翻訳された ICD-10(DataSUS V2008)です。静的データセットとして同梱されているため、HTTP 呼び出しはありません。ブラジルの SUS では CID-10 V2008 が運用上使用されています。国際版の ICD-11(WHO の現行改訂版)については、上記の ICD-11 ツールをお使いください。

ツール説明例
cid10_searchポルトガル語のテキスト検索(発音区別符号を無視し、単語間は AND 検索。日常語は CID-10 の表記に置き換えられ、その旨がレスポンスに示されます)query: "câncer de mama"
cid10_lookupコード → 公式ポルトガル語名称code: "I21" または "A00.1"
cid10_chaptersCID-10 の 22 章を一覧表示-
cid10_chapter章の詳細と、その章を構成するグループnum: 9

CID-10 の表記ではなく、ご自身の言葉で検索してください。 CID-10 は臨床ポルトガル語で記述されています。cid10_search は、入力された語句をコードの名称に含まれる完全一致のフレーズとして検索していたため、日常語では何も見つかりませんでした。バンドルされた V2008 データセットの 14,496 のカテゴリーとサブカテゴリーで測定した結果(2026-09-16)、この動作は 1.12.0 以降固定されています。すべての単語が一致する必要があり(AND)、日常語は CID-10 独自の用語に置き換えられます(src/clients/cid10-vocabulary.ts、測定した組み合わせのみ)。そのことは vocabulary_notes に示され、検索結果が 0 件の場合は代替手段も案内されます。

検索語変更前の件数CID-10 の表記件数
câncer、câncer de mama0悪性新生物(乳房)497、12
ataque cardíaco0心筋梗塞42
AVC0脳血管発作11
pressão alta0高血圧44
dor de cabeça0頭痛10
suicídio0自傷167
atropelamento0歩行者の外傷97
aids0HIV による疾患45
pedra nos rins、convulsão、tabagismo、maconha、crack、obeso、cachorro0結石、けいれん、喫煙、カンナビノイド、コカイン、肥満、犬によるもの19、41、17、12、13、6、11

V2008 データセットに含まれていないものは対象外のままで、検索結果も 0 件になります。たとえば covid(U07.1 は 2020 年のコード)や zika が該当します。存在しないコードの別名を用意すると、元データにない情報があるかのように誤解させてしまうためです。同じテーブルは、Deep Research の search インデックスにも使用されます。

バージョン管理ツール(2)

このサーバーが現在参照している各用語体系のバージョンを確認できます。固定されたリリースに対する一括検証や、上流の更新後に予期しない検索漏れが発生した場合の調査に役立ちます。

ツール説明例
terminology_versionsサポート対象の 8 つの用語体系について、現在のバージョン、リリース日、発行元、ソース URL、更新頻度を一覧表示-
terminology_diff用語体系の 2 つのバージョン間で利用できる差分データを報告(ICD-10 → ICD-11 の実際の改訂間統計、それ以外は案内を表示)terminology: "icd10-icd11"
ChatGPT Deep Research(2)

OpenAI Deep Research の仕様に準拠したツールです。用語体系のプレフィックスが付かない唯一の 2 つのツールです(名称は OpenAI により固定)。上記の ChatGPT(Deep Research) を参照してください。

ツール説明例
searchカタログ(CID-10、ICD-11、LOINC、RxNorm、MeSH、用語体系のバージョン)を検索し、関連度順に { id, title, url } を返しますquery: "myocardial infarction"
fetchsearch で取得した ID の完全なドキュメント({ id, title, text, url, metadata })を返します。用語体系の検索ツールによってレンダリングされますid: "cid10:I21.0"

出力例

以下のサンプルは、ツールが実際に生成するフォーマット済み出力、つまり CallToolResult のテキスト本文です。ツールは、プログラムから利用するために、各ツールの outputSchema に一致する structuredContent オブジェクトも返します。

loinc_search — query: "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)は、返されたページだけでなく、NLM Clinical Tables インデックス内のすべての一致件数を示します。max_results(最大50)を増やすと、2339-0(血液中のグルコース[質量/体積])などの標準コードを確認できます。API の関連性ランキングでは、ページサイズが小さい場合、単純な血糖値よりもパネルや派生測定値が上位になります。

rxnorm_ingredients — rxcui: "6809"(メトホルミン)
# 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 |

RxCUI がそれ自体で成分(TTY=IN)を表す場合、このツールはその成分と、それを含むすべての複数成分(TTY=MIN)コンセプトを返します。これを使うと、ある物質を基にした配合剤を一覧できます。

mesh_descriptor — mesh_id: "D006973"(高血圧)
# 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.

スコープノートは、アノテーションフィールド(インデクサー向けの注記)ではなく、ディスクリプターの優先コンセプトから取得されます。ツリー番号は MeSH の統制階層をたどるためのパスです。C14.907.489 は、高血圧が心血管疾患 → 血管疾患の下位に位置することを示します。

よくあるワークフロー

  • ICD-11 の検索: 臨床用語で icd11_search を実行 → 結果を選択 → コードを指定して icd11_lookup を実行し詳細を確認するか、icd11_hierarchy で親項目/子項目をたどります。
  • 医薬品の処理パイプライン: ブランド名または一般名で rxnorm_search を実行 → 正規レコードを rxnorm_concept で取得 → 下流分析用に rxnorm_ingredients と rxnorm_classes を実行します。
  • 自由記述用語の列を調和させる: 最初に一度 terminology_versions を実行 → 最大50件ずつ harmonize_terms を実行(各用語にドメインを指定) → exact は採用し、strong はスポットチェックし、needs_review は担当者に回します → クロスウォークとともに各行の provenance を保持します。検体と特性を含めて検査用語を記述します(「glucose serum」など)。単独の「glucose」では、千を超える LOINC コードが一致します。
  • 用語体系横断の足場作り: 臨床用語を指定して find_equivalent を実行すると、ICD-11、LOINC、RxNorm、MeSH を1回の呼び出しで検索できます。マッピングの初期作成に使用し、ペア単位の map_* ツールで精緻化します。
  • ICD-10 → ICD-11(正式なマッピング): map_icd10_to_icd11 は、同梱された WHO の移行テーブルを読み込みます。主要な ICD-11 コードと、WHO が文書化した代替コードが返されます。ICD-10 カテゴリーがテーブルにない場合は null が返されます(推測は行いません)。

SNOMED CT(2.0.0 で廃止)

1.18.x までは、このサーバーには5つの SNOMED CT ツール(snomed_search、snomed_concept、snomed_hierarchy、snomed_descriptions、snomed_ecl)に加え、map_snomed_to_icd10 が含まれていました。これらはすべてデフォルトで無効で、ENABLE_SNOMED_TOOLS の背後にありました。また、map_loinc_to_snomed(ガイダンスのみ)も含まれていました。バージョン2.0.0では、この7つすべて、Snowstorm クライアント、フラグが削除されました。また、find_equivalent、validate_codes、terminology_versions、terminology_diff で snomed は有効な値として受け付けられなくなりました(指定すると、有効な値を列挙した検証エラーが返されます)。

理由:ツールが使用していた公開 IHTSDO Snowstorm ホストは、2026-05 以降 HTTP 410 を返しています。SNOMED CT コンテンツにはユーザーの国によって異なるライセンスが必要です。利用実績はゼロであり、用語体系が中途半端に存在していたことで、このサーバーを紹介するサードパーティのカタログがことごとく誤解を招いていました。

SNOMED CT が必要な場合:pacharanero/sct は、独自にライセンスを取得したリリースをローカルで提供します。また、FHIR 用語サーバー(tx.fhir.org(公開 HL7 テストサーバー)や CSIRO Ontoserver など)は、独自の SNOMED ライセンスのもとで $lookup/$expand を提供します。

用語ライセンス

MIT ライセンスの適用対象はサーバーコードとサーバーが管理するメタデータのみです。サーバーを通じて提供される用語コンテンツや、同梱されている 2 つのデータセット(cid10.json、icd10-to-icd11.json)には適用されず、それぞれ独自の条件に従います。ライセンスに関する統合通知はパッケージに NOTICE.md として同梱されています。各ツールの応答には、適用されるライセンスを記載したソースごとの出典情報ブロックが含まれます。

ICD-11(WHO)

ICD-11 のコンテンツは、ICD-11 利用規約およびライセンス契約に基づき、クリエイティブ・コモンズ 表示—改変禁止 3.0 IGO ライセンス(CC BY-ND 3.0 IGO)で提供されています。

  • 必須の引用表記:"International Classification of Diseases, Eleventh Revision (ICD-11), World Health Organization (WHO) 2019 https://icd.who.int/browse11. Licensed under the Creative Commons Attribution-NoDerivatives 3.0 IGO licence (CC BY-ND 3.0 IGO)."
  • このサーバーは、ICD-11 のコードとタイトルを URI とともに常に原文どおりに提供します。英語以外のラベルは WHO が作成した公式翻訳であり、機械翻訳ではありません。
  • WHO は通知により、いつでもライセンスを終了できます(§4.7)。
  • API にアクセスするには、https://icd.who.int/icdapi での登録が必要です。
WHO ICD-10 → ICD-11 移行テーブル(同梱)

WHO が ICD-11 リリース内で公開しているテーブルを形式変換(TSV → JSON、内容は変更なし)したものです。© World Health Organization。ICD-11 利用規約に基づき、本プロジェクトの MIT ライセンスの対象ではありません。WHO のガイダンスによると、これらのテーブルは改訂版間の対応関係を示すものであり、"are not intended for directly converting data from one revision to the other."

CID-10 V2008(DataSUS / CBCD、同梱)

© World Health Organization。ブラジルポルトガル語訳 © CBCD / Faculdade de Saúde Pública da USP。電子ファイルは DataSUS(Ministério da Saúde do Brasil)により公開されています。DataSUS/CBCD の許可により、開発者は適切なクレジットを表記し、無料でファイルを使用できます。このサーバーは、各応答にクレジットを記載して無料で提供しています。本プロジェクトの MIT ライセンスの対象ではありません。

LOINC

この資料には LOINC(http://loinc.org)のコンテンツが含まれています。LOINC の著作権は © Regenstrief Institute, Inc. および Logical Observation Identifiers Names and Codes (LOINC) Committee に帰属し、http://loinc.org/license のライセンスに基づいて無料で利用できます。LOINC® は Regenstrief Institute, Inc. の米国における登録商標です。

  • 無料の NLM Clinical Tables API を通じて提供されます。すべてのコードには公式表示名が付属します。
  • 第三者が著作権を有する用語は、その通知を原文のまま引き継いで提供されます。
RxNorm

RxNorm は米国国立医学図書館(U.S. National Library of Medicine)が作成しています。RxNav API では、非独占的なパブリックドメインの RxNorm コンテンツを無料で提供しています。

この製品は、米国国立医学図書館(NLM)、国立衛生研究所、保健福祉省が公開しているデータを使用しています。NLM は本製品に責任を負わず、本製品またはその他の製品を推奨するものではありません。

ATC(NLM RxClass 経由)

ATC 分類 © WHO Collaborating Centre for Drug Statistics Methodology(https://atcddd.fhi.no/)。NLM RxClass 経由で取得し、原文のまま提供しています。このサーバーは WHOCC の ATC/DDD インデックスを再配布することはありません。

MeSH

MeSH は米国政府の著作物であり、NLM の利用規約に基づいて無料で提供されています。上記の NLM の記述(RxNorm)は、この提供経路にも適用されます。

レジストリから確認できるサーフェスフィンガープリント

各リリースでは、MCP Registry のエントリーで、このバージョンが提供するサーフェス(initialize、ツール、リソース、プロンプト)の sha256 と、認証情報なしで応答するメソッドを公開しています。バージョンを上げずにサーフェスを変更するとビルドが失敗します。レジストリのフィンガープリントを使えば、クライアント側でも同じ内容を確認できます。正規形式と手順については、@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/medical-terminologies-mcp

API レート制限

このサーバーは、API プロバイダーに配慮してレート制限を実施しています。

APIレート制限
WHO ICD-115 リクエスト/秒
NLM(LOINC、MeSH)10 リクエスト/秒
RxNorm20 リクエスト/秒

開発

ソースからビルドする
git clone https://github.com/SidneyBissoli/medical-terminologies-mcp.git
cd medical-terminologies-mcp
npm install
npm run build
ローカルで実行する
npm start
MCP Inspector でテストする
npx @modelcontextprotocol/inspector node dist/index.js

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

  1. リポジトリをフォークします
  2. 機能ブランチを作成します(git checkout -b feature/AmazingFeature)
  3. 変更をコミットします(git commit -m 'Add some AmazingFeature')
  4. ブランチにプッシュします(git push origin feature/AmazingFeature)
  5. プルリクエストを作成します

作者

Sidney da Silva Pereira Bissoli

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルをご覧ください。

注:このソフトウェアは MIT ライセンスですが、これを通じてアクセスする医療用語にはそれぞれ独自のライセンスがあります(上記の用語ライセンスをご覧ください)。

謝辞

サポート

問題が発生した場合やご質問がある場合:

  • GitHub で issue を作成してください
  • 解決策について、既存の issue を確認してください

医療情報学コミュニティへの愛を込めて

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。