EUDAMED MCP について
EUDAMED MCPは、公開医療機器記録の検索と経済事業者の確認を行う読み取り専用MCPサーバーです。公開登録情報と未検証の適合文書を区別して追跡可能な証拠チェックリストを作成し、適合判定は行いません。
主な機能
- 01UDI記録の検索と正規化
- 02SRNによる経済事業者の確認
- 03企業名候補の検索
- 04コードとステータス値の変換
- 05機器の調査と証拠不足の提示
- 06検索元と取得時刻の記録
活用シーン
- 01Primary DIから機器記録を検索
- 02製品と製造者の登録主体の不一致を調査
- 03IFU、宣言書、証明書の確認項目を整理
MCP 対応
MCPサーバーは、EUDAMED Public APIの検索・調査向けに、5つの読み取り専用ツール、3つのワークフロープロンプト、5つの参照可能なリソースをクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| raw | boolean | いいえ | |
| exact | boolean | いいえ | 指定された各フィルターに対して、大文字と小文字を区別せず、前後の空白を除去して完全一致で照合します。 |
| limit | integer | いいえ | ローカル出力の上限であり、上流のページサイズではありません。 |
| basicUdi | any | いいえ | |
| language | string | いいえ | |
| primaryDi | any | いいえ | |
| reference | any | いいえ | |
| tradeName | string | いいえ | |
| deviceName | any | いいえ | |
| manufacturerSrn | string | いいえ |
詳細
独立した非公式の連携です。
EUDAMED MCP
AI アシスタントから欧州の医療機器記録を検索できます。
独立した非公式の連携 · 読み取り専用アクセス · テスト済みの公開エンドポイントでは API キー不要
欧州委員会の EUDAMED 公開 API 用の読み取り専用 Model Context Protocol サーバーです。UDI 記録の検索、経済事業者の確認、分類値やステータス値の解読ができ、公開記録と検証済みの適合性証拠との違いを保ちながら、機器を調査できます。
企業名、機器名、または UDI から始められます。該当する記録を探し、登録製造業者を特定して、出典へのリンクと明示的な不足項目を含む証拠チェックリストを作成できます。
5 つのツール · 3 つのガイド付きワークフロー · 5 つの読みやすいリソース
始める · リクエスト例 · 証拠の仕組み · EUDAMED 公式ポータル
便利なポイント
- 解釈より先に識別。 UDI の先頭のゼロを保持し、完全一致をローカルで適用して、複数の候補を表示したままにします。
- 実際の製造業者を特定。 提供された SRN が同じグループ内の別会社に属している場合があります。調査では機器の識別情報を独立して検索し、返された記録にある製造業者の SRN をたどります。
- 出典を追跡できる証拠。 結果には、正確なソースクエリ、元の取得日時、API バージョン、キャッシュ状態、ローカルの制限が含まれます。
- 不足項目を正直に表示。 欠けているフラグは不明のまま扱います。失敗したリクエストは失敗として扱います。IFU、適合宣言、証明書は、別途入手するまで未検証のままです。
- コンパクトなツール群。 5 つのツールで、検証済みの 3 つの API エンドポイントと、範囲を限定した調査ワークフローを利用できます。プロンプトはリソースとしても提供されるため、クライアントはスラッシュコマンドを実行せずに手順を読むことができます。
- デフォルトで保守的。 リクエストの直列化、回数に上限のある再試行、タイムアウト、レスポンスサイズ制限、有効期間の短いキャッシュ、組織に関するアクターデータのみを採用しています。
これは独立した連携であり、欧州委員会の公式製品ではありません。公開登録情報だけでは、製品の適合性を独立して立証できません。このサーバーは IFU や証明書を取得せず、適合/不適合の判定も行いません。
インストールと接続
Node.js 22 以降が必要です。MCP クライアントのサーバー設定に次のエントリを追加します。
{
"mcpServers": {
"eudamed": {
"command": "npx",
"args": ["-y", "@t4dhg/[email protected]"]
}
}
}
ソースからビルドするには、チェックアウトしたディレクトリで npm ci && npm run build を実行し、node に dist/cli.js の絶対パスを指定して設定します。
このサーバーは stdio を使用します。標準出力は MCP メッセージ専用です。認証情報や .env ファイルは不要です。オプションの設定はプロセス環境から読み込まれます。.env ファイルは自動的に読み込まれません。
プログラムから使用する場合は、パッケージから EudamedClient、investigate、または createServer をインポートします。ライブラリをインポートしても、トランスポートは開始されません。
import { EudamedClient, investigate } from '@t4dhg/mcp-eudamed';
const api = new EudamedClient();
const results = await api.devices({
primaryDi: 'YOUR_PRIMARY_UDI_DI',
exact: true,
});
const dossier = await investigate(api, {
manufacturerSrn: 'US-MF-000000001',
tradeName: 'YOUR_DEVICE_NAME',
});
次のリクエストを試す
この Primary UDI-DI に対応する公開 EUDAMED レコードを探してください。法的製造業者、認定代理人、リスククラス、および正確なソースクエリを示してください。
製造業者の SRN と製品名はありますが、製造業者の検索結果が空です。製品が別の法人名義で登録されているか確認してください。
この機器のエビデンスチェックリストを作成してください。EUDAMED に記載されている情報と、管理された IFU、適合宣言書、または証明書で確認する必要がある情報を分けてください。
ツール
| ツール | 目的 | 主な入力 |
|---|---|---|
eudamed_devices | UDI レコードを検索して正規化します。オプションで生の機器フィールドも含めます | primaryDi、basicUdi、manufacturerSrn、tradeName、deviceName、reference のうち少なくとも 1 つ。オプションで exact、limit、language、raw |
eudamed_actors | 組織フィールドのみを使用して、1 つの完全一致 SRN を検証します | actorId |
eudamed_discover_actors | 完全一致する法人名/略称の候補を、ポータルへのフォールバック付きで見つけます | name、オプションで country、role、limit |
eudamed_references | コードの翻訳を取得します。オプションでローカルに対象を絞り込みます | language、code、id、limit |
eudamed_investigate | 候補となる機器と事業者を特定し、フィールドをデコードしてエビデンスの不足を示します | 機器検索フィールド。language、maxDevices、maxManufacturers、maxRepresentatives、deadlineMs |
すべてのツールは、読み取り専用、非破壊、冪等、およびオープンワールドのアノテーションを宣言します。ツールエラーは isError: true を返します。検索ツールは JSON テキストと同等の structuredContent を提供します。調査ツールは、テキストコンテンツで簡潔なレポートを、structuredContent で完全なエビデンス(レポートも含む)を提供します。
機器を検索する
{
"primaryDi": "YOUR_PRIMARY_UDI_DI",
"exact": true,
"limit": 10,
"language": "en",
"raw": true
}
探索では exact の既定値は false です。true の場合、指定した各フィルターをローカルでトリミングし、大文字と小文字を区別せずに完全一致で比較します。上流で部分一致の名前検索が行われるとは想定しないでください。既知の識別子を正確に指定し、返されたエビデンスを確認してください。複数のフィルターはまとめて送信されます。観測された上流の動作は AND ですが、公開された契約上の保証ではありません。
機器ツールは、正規化された識別情報、事業者、デコード済みの値、三値フラグ、使用目的のステータス、未検証文書のチェックリストを返します。raw: true を設定すると、上流の追加の機器フィールドが保持されます。ライブラリの devices() メソッドは、常に検証済みの生の機器レコードを返します。
製造業者の不一致を調査する
{
"manufacturerSrn": "YOUR_SUPPLIED_SRN",
"tradeName": "YOUR_DEVICE_NAME",
"maxDevices": 10,
"maxManufacturers": 3,
"maxRepresentatives": 3
}
ワークフロー:
- まず Primary DI を照会し、次に Basic UDI を照会してから、提示された各名称/参照情報をそれぞれ独立して完全一致で検索します。古い名称によって、UDI の完全一致結果が抑制されることはありません。
- 提示された事業者と、その事業者について返されたデバイスポートフォリオを確認します。
- 空でない経路のうち最も有力なものを対象候補として使用し、提示された他のフィールドとの不一致を記録するとともに、代替経路の候補も保持します。対象候補から製造業者の SRN を読み取り、その事業者と範囲を限定したポートフォリオを調べます。
- 選択した証拠レコードに対する認定代理人を確認します。
- 参照値をデコードし、未確認の管理対象文書を一覧にします。
- 照会の出所、失敗、除外件数、上流データの網羅性が不明であることを返します。
targetEvidence には、最も有力な空でない識別経路から得られた対象候補のみが含まれます。portfolioEvidence には、他の製造業者レコードが含まれており、対象の証拠として扱ってはなりません。evidence は、対象の証拠のみを示す互換性エイリアスです。製造業者のみを対象とする調査には、対象の証拠はありません。
searches には、独立した各照会が保持されます。conflicts には、提示された情報と確認された情報の不一致が記録されます。alternativeCandidates には、他の検索経路で見つかった候補が保持されます。identityStatus は、識別子の一致、候補、曖昧さ、不一致、未検出、未解決、ポートフォリオのみの結果を区別します。複数のバージョンは別々の候補として保持され、サーバーが最新のものを自動的に選ぶことはありません。事業者の識別情報が不足している場合や、事業者の検索で一致する結果がなかった場合は、unresolved に表示されます。
status: "completed" は、実行が完了したことを意味するものであり、識別情報、文書、適合性が確立されたことを意味しません。partial、timed-out、cancelled では、収集した証拠とその限界が保持されます。簡潔なレポートには、対象の識別情報、デコードされたフィールド、証拠の不足、不一致、失敗、制限事項、次に必要な文書が記載されます。詳細なレコードは構造化出力で引き続き利用できます。
プロンプトとリソース
各プロンプトには、既知の識別子、名称、または調査に関する質問を含む必須の query 文字列を指定します。プロンプトは手順を提示するものであり、それ自体でデータを取得することはありません。
| プロンプト | ワークフロー |
|---|---|
investigate_device | デバイスの識別情報、実際の製造業者、代理人、証拠の不足を確認します |
manufacturer_portfolio | 事業者を確認し、範囲を限定した返却済みポートフォリオを調べます |
conformity_evidence | 未確認の主張を保持しながら、文書チェックリストを作成します |
読み取り可能なリソース:
eudamed://guides/searcheudamed://guides/evidenceeudamed://prompts/investigate_deviceeudamed://prompts/manufacturer_portfolioeudamed://prompts/conformity_evidence
証拠を理解する
| 出力 | 意味 |
|---|---|
sourceUrl、retrievedAt、apiVersion | クエリと観測の時刻です。キャッシュされた観測結果には元の時刻が保持されます |
returnedByApi | このレスポンスに含まれるレコード数であり、レジストリの総件数ではありません |
matched | ローカルで照合した後に残ったレコード数です |
returned、truncated | ローカルでの出力件数と、このレスポンスがローカルで上限に達したかどうかを示します |
coverage: "unknown" | レジストリの網羅性と個々のレコードの最新性は確認されていません |
decoded.FIELD | 元の数値 ID、翻訳されたラベル、解決済み/未解決のステータスです |
pagination | 取得したページ数、ソースページの URL、クエリで継続リンクをすべてたどったかどうかです |
flags | 不明または認識されない値は null、それ以外は true または false です |
intendedPurpose.status | public-record または missing です。どちらも管理された最新の IFU を確認するものではありません |
documents | 明示的に未確認の IFU、宣言書、証明書の証拠です。URL を捏造することはありません |
調査の failures | 失敗した手順です。検索が正常に完了し、結果が空だった場合とは区別されます |
検索結果が空であることは、そのクエリについての証拠です。デバイスが存在しない、または準拠していないことの証明にはなりません。ISO 13485 認証は品質マネジメントシステムに関するものであり、製品固有の文書の代わりにはなりません。証拠のワークフローを参照してください。
設定と上限
| 環境変数 | デフォルト | 範囲/用途 |
|---|---|---|
EUDAMED_BASE_URL | https://api.datalake.sante.service.ec.europa.eu/eudamed | HTTPS エンドポイント。認証情報、クエリ、フラグメントは含めません |
EUDAMED_API_VERSION | v1.0 | v1.0 などのバージョン文字列 |
EUDAMED_TIMEOUT_MS | 15000 | 1~120000。本文の読み取りを含む、各リクエスト試行のタイムアウト |
EUDAMED_MAX_PAGES | 10 | クエリあたり1~50ページ。合計レコード上限は10,000件 |
EUDAMED_MAX_RETRIES | 2 | 初回試行後の再試行回数。0~3回 |
EUDAMED_CACHE_TTL_MS | 60000 | 0~86400000。機器/関係者のレスポンスの TTL |
EUDAMED_REFERENCE_TTL_MS | 3600000 | 0~86400000。参照レスポンスの TTL |
EUDAMED_MAX_RESPONSE_BYTES | 10000000 | 1~50000000。ストリーミング本文の上限 |
リクエストは直列化されます。キャッシュには検証済みレスポンスが最大32件保持され、投影された関係者データのみが保存されます。参照データは、要求された言語内で CODE + ID を使って結合されます。リダイレクトは拒否されます。GET の再試行は、ネットワーク障害、タイムアウト、HTTP 429 および 500/502/503/504 に適用されます。Retry-After に従います。クールダウンが30秒を超える場合、早期に再試行せずリクエストを終了します。
機器の出力はデフォルトで20件(最大100件)、参照データは100件(最大500件)です。調査では、各識別情報クエリあたり最大10件、対象レコード10件、別個のポートフォリオコンテキストレコード10件、代替候補10件、検出された製造業者3件、代表者3人がデフォルトです。各グループの最大レコード数は20件、カテゴリごとの事業者数は最大5件です。代表者の検索対象は、対象レコード、または対象の識別情報が指定されていない場合はポートフォリオレコードです。HTTP アダプターは、合計レコード数が10,000件を超えるクエリを拒否し、ページ上限の範囲内で検証済みの継続リンクのみをたどります。MCP の出力上限は250 KBです。上限を超えた場合は、クエリを絞り込むか上限を下げてください。これらはローカルの安全策であり、上流のページネーションについて述べるものではありません。調査では複数のリクエストが順次実行され、再試行される場合があります。deadlineMs は、キュー待ち、再試行、本文の読み取りを含む調査全体の上限時間を設定します(デフォルト60000、最大300000)。MCP のキャンセルによって、キュー内のリクエスト、実行中のフェッチ、再試行の待機が停止します。ほかのリクエストは引き続き使用できます。このライブラリでは、別個のリクエストオプション引数として { signal } を受け付けます。
開発と検証
npm ci
npm run lint
npm run format:check
npm run typecheck
npm run test:coverage
npm run test:stdio
npm pack --dry-run
ユニットテストと MCP プロトコルテストは決定論的で、合成データを使用します。ビルド済みの stdio チェックでは、ライブネットワークにアクセスせずに、トランスポートの初期化、検出、リソース、検証を確認します。カバレッジの基準には、アダプター、調査、MCP 登録が含まれます。
ライブチェックはオプトイン方式です。
npm run test:live
EUDAMED_SMOKE_PRIMARY_DI=YOUR_KNOWN_UDI EUDAMED_SMOKE_ACTOR_ID=YOUR_KNOWN_SRN npm run test:live
最初のコマンドでは参照データを検証します。EUDAMED_SMOKE_LANGUAGE で参照データの言語を選択します(デフォルトは en)。EUDAMED_SMOKE_EXPECT_LEGISLATION では、デコードされた法令ラベルに 2017/746 などの既知の部分文字列が含まれることを任意でアサートできます。両方の識別子を指定すると、ライブの機器および関係者の検索も実行されます。ライブデータは変更される可能性があります。チェックに失敗した場合は調査が必要であり、フィクスチャが自動的に書き換えられることはありません。ペイロードと関係者の連絡先はログに記録されません。
CONTRIBUTING.md、API 契約に関する注記、SECURITY.md を参照してください。
API の対象範囲
実装済み:2026 年 10 月 14 日に稼働中のサービスで検証した、/udi、/actors、/reference への匿名の JSON GET リクエストです。DG SANTE API カタログが上流の参照元です。
未実装:証明書ポータルのスクレイピング、IFU のダウンロード、書き込み、レジストリの一括エクスポート、法的規則の評価です。ページネーションでは、ドキュメントに記載された nextLink の値を使用します。レート制限、実際の記録の鮮度、稼働時間に関する保証は未検証です。このパッケージが対象とするのは、提供された公開 API 連携の範囲であり、EUDAMED のすべてのモジュールではありません。
MIT ライセンスです。
企業の検索と完全な UDI 入力
企業名を指定して eudamed_discover_actors を呼び出します。法人名と略称をそれぞれ検索し、同一の組織情報は重複を除去しながら、異なる候補は保持します。候補の SRN を eudamed_investigate で使用する前に、国、役割、法人としての同一性を確認してください。企業のポートフォリオは、特定の医療機器に関するエビデンスとは別に扱います。
確認できた名前検索では、Data Lake は登録名との完全一致を必要とします。公開ポータルで企業が見つかる場合でも、短縮名では一致しないことがあります。部分一致で検索するには、ブラウザーで portalUrl を開き、返された SRN を eudamed_actors で確認してください。このサーバーがポータルを自動的に閲覧することはありません。対象範囲と情報源の詳細。
manufacturerSrn には、企業名ではなく US-MF-000000001 の形式(架空の例)が必要です。actorId には、経済事業者の SRN または 4 桁の指定機関 ID を指定できます。検証で確認するのは構文であり、登録の有無ではありません。
primaryDi には、有効な 14 桁の GTIN を含み、(01) で始まる括弧付きの GS1 UDI も指定できます。例:(01)00012345678905(10)TESTLOT。API に送信されるのは DI のみです。製造識別子は検索フィルターではありません。identifier には、元の入力、抽出された DI、認識された形式、入力が変更されたかどうかが保持されます。無効または曖昧な (01) フィールドは拒否されます。レガシー識別子を含む生の DI は文字列のまま扱われ、ゼロ埋めや型変換は行われません。これは DI の抽出であり、すべての UDI 製造フィールドの検証や、あらゆる HIBCC/ICCBBA/バーコードの解析を行うものではありません。GS1 アプリケーション識別子を参照してください。
インストールとワークフローの検証
npm run test:package は、実際の成果物をパッケージ化し、クリーンな一時プロジェクトにインストールして、ライブラリをインポートし、インストール済みの実行ファイルを MCP stdio 経由でテストします。依存関係の取得には npm レジストリへのアクセスが必要です。
定期的なコントラクトチェックと API 変更への対応については、メンテナンスを参照してください。
独立性とクレジット
EUDAMED MCP は、独立した非公式のオープンソースプロジェクトです。欧州委員会による開発、委託、推奨、サポートを受けておらず、欧州委員会とも提携していません。
ヘッダーには、EUDAMED ポータルが提供する欧州委員会のロゴと、その横に EUDAMED のラベルを配置しています。ロゴは引き続き各権利者の所有物であり、このプロジェクトの MIT ライセンスの対象ではありません。
EUDAMED は、欧州委員会の欧州医療機器データベースです。EUDAMED への言及は、このプロジェクトが連携する公開サービスを示すものであり、公式な地位や推奨を意味するものではありません。公式情報については、欧州委員会の EUDAMED ウェブサイトをご覧ください。
公開データベースの記録だけでは、医療機器の適合性を独立して立証できません。このソフトウェアは調査を支援するものであり、規制上の判断を行うものではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。