fdarecords について
fdarecordsは、薬のラベルや申請記録の検索、医療機器の申請と分類の追跡に使うopenFDA APIクライアントです。研究者や開発者向けに7つのツールを提供し、該当なしと一時的なエラーを区別します。シグナル検索は未検証の実験機能です。
主な機能
- 01薬のラベルと項目を検索
- 02薬の申請記録と番号を照会
- 03申請番号から医療機器記録を検索
- 04医療機器の製品コードを分類
- 05医療機器申請の情報を検証
- 06ラベルから実世界エビデンスのシグナルを検索
活用シーン
- 01薬のラベルから適応情報を検索
- 02薬名から申請番号を特定
- 03医療機器の申請と規制クラスを追跡
- 04人による確認が必要なシグナルを抽出
MCP 対応
MCPクライアント向けに、薬のラベル、申請記録、医療機器の申請と分類を検索する7つのopenFDAツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | 返す結果の最大数(任意)。 |
| query | string | はい | 検索クエリのテキスト。 |
| section | string | いいえ | この呼び出しで使用するセクション。 |
詳細
fdarecords
ポータルをあちこち探し回らずにFDAの記録を確認できます。fdarecordsはopenFDA API向けの小規模なクライアントで、繰り返し必要になる2種類の検索に対応します。薬剤情報の検索――ラベルのテキスト、製品の基になったDrugs@FDA申請、名称から申請番号を特定する検索――と、医療機器の申請番号から規制上のクラスをたどる検索です。
7つのツールが処理を担います。そのうち3つについては、元のプロジェクトで得られた知見をあらかじめ知っておくと便利です。De Novo(DEN)番号は、openFDAにDe Novo専用のエンドポイントがないため、510(k)エンドポイントのk_numberフィールドに登録されています。HDE(H)番号はopenFDAには存在しないため、H番号の検索では、そうであると明示したうえでnullが返されます。また、検証チェーンでは、H番号に対して引き続きクラスIIIが返されますが、これはデータではなく規制上の推定としてラベル付けされています。
1つは判断を下すためではなく、調査を支援するツールです。
screen_for_rwe_signalsは、薬剤のラベルからリアルワールドエビデンスに関する用語を検索し、見つかったものを返します。実験段階であり、検証されていません。ヒットは、確定した知見ではなく、人が確認する候補として扱ってください。
設定
OPENFDA_API_KEY(任意) — openFDA APIキーです。設定すると、api_keyクエリパラメーターとして送信され、より高いレート制限が適用されます。キーは必須ではなく、どのツールもキーなしで動作します。OPENFDA_BASE_URL(任意) — APIのベースURLです。デフォルトはhttps://api.fda.govです。
結果の仕様
すべてのツールは同じルールに従います。検索結果がない場合の扱いに関わるため、明確に記載します。
- 一致する結果がないクエリは、JSONテキスト
nullを返します。HTTP 404と、結果リストが空のHTTP 200の両方が対象です。 - 一時的な障害――タイムアウト、接続エラー、429、5xx――が発生した場合は、バックオフを挟んで2回再試行します。それでも失敗する場合、ツールは
openfda transient failure: ...を送出します。一時的な障害が検索結果なしとして報告されることはありません。そのため、nullは常に「該当なし」を意味し、「問い合わせできなかった」という意味にはなりません。 - それ以外の拒否されたリクエスト(別の4xx)が発生した場合は、直ちに
openfda request error: HTTP <status>を送出します。 - 引数が不正な場合、リクエストを送信する前にエラーになります。エラーは
<arg> must be a non-empty string、またはlimit must be an integer between 1 and 100です。
単一レコードを返すツールは、一致する最初のレコードをJSONで返します。ラベルを返す2つのツールは、上流のレスポンス本文を受信したとおりに返します。
ツール
search_drug_label—queryでSPLラベルのテキストを検索します。section(indications_and_usageなどのSPLフィールド名)を指定すると、そのセクションに検索対象を限定できます。limitは任意で、デフォルトは10です。lookup_drugsfda_application—application_number(NDA、BLA、ANDAの番号に対応)に該当するDrugs@FDAの記録を返します。resolve_drug_to_application—ブランド名またはジェネリック名のnameから、その名称で登録された申請番号を検索し、重複のない文字列を並べ替えたJSON配列として返します。screen_for_rwe_signals— 上述の実験的な検索を実行します。任意のqueryを指定すると、固定のシグナルセットに検索語を1つ追加できます。limitは任意で、デフォルトは10です。lookup_device_submission—submission_numberに該当する医療機器の記録を返します。K番号とDEN番号は510(k)エンドポイントで検索し、P番号はPMAエンドポイントで検索します。H番号はopenFDAに存在しないためnullを返し、それ以外は認識できないプレフィックスとして拒否されます。classify_device_product_code—product_codeに対応する医療機器のクラスと専門分野を返します。validate_device_application— 1回の呼び出しで一連の情報を取得します。submission_numberから製品コードを経由して、device_class、medical_specialty、device_nameを返し、クラスの情報源を示すdevice_class_sourceも含みます。H番号は、推定であることを示す結果を返して処理を終了します。製品コードがない記録には、"device_class": nullを追加して返します。
エンドポイントの出典
GET /drug/label.json は、openFDA
API インデックスに記載されているパスです。残りのパスは、それぞれのエンドポイントファミリーについて同じドキュメント化された
パターンに従っており、固定されたものではなく、パターンから導出したものとして示しています。
GET /drug/drugsfda.json— パターンから導出GET /device/510k.json— パターンから導出GET /device/pma.json— パターンから導出GET /device/classification.json— パターンから導出
次の3つの動作は、このクライアント向けに組み合わせたものであり、コード内でもそのように示しています。resolve_drug_to_application がブランド名と
一般名のクエリをどのように統合するか、screen_for_rwe_signals が検索するシグナル用語のセット、および
validate_device_application が2つのレコードからどのような形式を構成するかです。
CLI
各ツールは、1つの JSON 引数文字列を受け取るサブコマンドです。
npx @reneturcios/fdarecords search_drug_label '{"query":"aspirin"}'
npx @reneturcios/fdarecords search_drug_label '{"query":"chest pain","section":"indications_and_usage","limit":25}'
npx @reneturcios/fdarecords lookup_drugsfda_application '{"application_number":"NDA021457"}'
npx @reneturcios/fdarecords resolve_drug_to_application '{"name":"Tylenol"}'
npx @reneturcios/fdarecords screen_for_rwe_signals '{"query":"diabetes"}'
npx @reneturcios/fdarecords lookup_device_submission '{"submission_number":"K123456"}'
npx @reneturcios/fdarecords classify_device_product_code '{"product_code":"ABC"}'
npx @reneturcios/fdarecords validate_device_application '{"submission_number":"H123456"}'
npx @reneturcios/fdarecords --version
出力はツールの結果テキスト(null、レコード、配列、または上流のレスポンス本文)です。終了コードは、成功時が 0、
実行時エラー(検証エラーや上流の失敗を含む)時が 1、使用方法のエラー時が 2 です。
MCP サーバー
npx -y @reneturcios/fdarecords mcp
MCP クライアントの設定:
{
"mcpServers": {
"fdarecords": {
"command": "npx",
"args": ["-y", "@reneturcios/fdarecords", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/fdarecords
docker run --rm ghcr.io/cloudcorprecords/fdarecords lookup_device_submission '{"submission_number":"DEN200001"}'
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。