ClinicMarketIQ Public Data について
ClinicMarketIQ Public Data は、米国の医療データセットを検索するステートレスで読み取り専用の MCP サービスです。カタログ、機械可読なメタデータ、JSON Schema、不変のダウンロード情報を提供し、データファイルは中継しません。
主な機能
- 01公開データセットカタログのページ取得
- 02ID、名称、公開元による検索
- 03メタデータと JSON Schema の取得
- 04ダウンロード URL、形式、チェックサムの取得
- 05SHA-256 ダイジェストの照合
活用シーン
- 01公開医療データセットの検索
- 02データセットの項目構造の確認
- 03不変ファイルの URL とサイズの取得
- 04入力された SHA-256 とメタデータの照合
MCP 対応
Streamable HTTP の `/mcp` で、データセット検索、メタデータとスキーマ取得、直接ダウンロードリンク、宣言された SHA-256 の照合に使う読み取り専用ツールを6つ公開します。データファイルの取得や中継は行いません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://clinicmarketiq-public-mcp.rotgar-fizkl.workers.dev/mcpclaude mcp add --transport http evgeniy-yudin-clinicmarketiq-public-data https://clinicmarketiq-public-mcp.rotgar-fizkl.workers.dev/mcp{"mcpServers":{"evgeniy-yudin-clinicmarketiq-public-data":{"type":"http","url":"https://clinicmarketiq-public-mcp.rotgar-fizkl.workers.dev/mcp"}}}Cursor で開く{"servers":{"evgeniy-yudin-clinicmarketiq-public-data":{"type":"http","url":"https://clinicmarketiq-public-mcp.rotgar-fizkl.workers.dev/mcp"}}}VS Code で開く{"mcpServers":{"evgeniy-yudin-clinicmarketiq-public-data":{"type":"http","url":"https://clinicmarketiq-public-mcp.rotgar-fizkl.workers.dev/mcp"}}}{"mcpServers":{"evgeniy-yudin-clinicmarketiq-public-data":{"serverUrl":"https://clinicmarketiq-public-mcp.rotgar-fizkl.workers.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | |
| offset | integer | いいえ |
詳細
ClinicMarketIQ 公開 MCP Worker
ClinicMarketIQ の公開データセットを見つけるための、最小構成のステートレスな読み取り専用リモート MCP サーバーです。/mcp で Streamable HTTP を公開し、/healthz ではプロセスのみのヘルスチェック応答を返します。
このディレクトリは、意図的に自己完結する構成になっています。レビュー済みのビルドは https://clinicmarketiq-public-mcp.rotgar-fizkl.workers.dev/mcp にデプロイされています。標準のセットアップページは https://clinicmarketiq.com/mcp/ です。外部 MCP Registry への公開状況は server.json で管理されています。
ツール
| ツール | 用途 |
|---|---|
list_datasets | 公開カタログの概要を簡潔な形式でページごとに取得します。 |
search_datasets | データセット ID、スラッグ、名前、公開元を検索します。 |
get_dataset_metadata | データセットの正式な公開用マシンインデックスを取得します。 |
get_schema | 不変のマニフェストをたどり、そこで宣言された JSON スキーマを返します。 |
get_download_url | 不変のアーティファクトの直接 URL、サイズ、形式、SHA-256 値を返します。ファイルのバイト列をプロキシすることはありません。 |
verify_checksum | 呼び出し元が指定した SHA-256 値を、正式なメタデータに宣言されたダイジェストと照合します。大きなアーティファクトを再ダウンロードしてハッシュを計算することはありません。 |
Worker は、リリースメタデータをサーバーバンドルにコピーするのではなく、https://clinicmarketiq.com から小さな正式な JSON ドキュメントをプロキシします。派生した URL はすべて、そのオリジンと許可リストに登録された公開パスに限定されます。MCP サーバーがデータセットのバイト列を取得することはありません。
ローカルでの検証
Node.js 22.18+ または 24.11+ が必要です(奇数番号の Node リリースは、固定された Vitest ツールチェーンでサポートされていません)。
npm install
npm run types
npm run check
npm test
npm run dry-run
npm run dev でローカルに起動し、MCP クライアントまたは MCP Inspector を http://localhost:8787/mcp に接続します。npm run dry-run は Worker をバンドルして検証しますが、デプロイはしません。
セキュリティと運用上の境界
- 6 つすべてのツールに、読み取り専用、非破壊的、べき等という注釈が付いています。
- サーバーは Cloudflare のステートレスな
createMcpHandlerを使用します。Durable Object、KV、D1、セッションストア、書き込み可能なバインディングはありません。 - 上流へのフェッチでは、固定のオリジンを使用し、リダイレクトを拒否し、JSON を必須とし、タイムアウトを8秒に設定し、上限付きのバッファーにストリーミングします。カタログ、インデックス、マニフェスト、スキーマの各ドキュメントには、それぞれ別のサイズ上限が設けられています。
- カタログのルート、リリース ID、データセット ID、スラッグ、マニフェスト URL、スキーマ名、ダウンロード URL、エンコーディング、SHA-256 値は、返却または参照する前に検証されます。
- MCP リクエストボディは上限64 KiBのバッファーにストリーミングされ、その上限を超えると拒否されます。
Content-Lengthがないチャンク転送リクエストも対象です。Cloudflare WAF に同等のボディサイズルールを設定し、Worker の CPU が消費される前に悪用を拒否する必要があります。 - ブラウザーの
OriginとエンドポイントのHostは MCP ハンドラーによって検証されます。カスタムドメインを追加する前に、allowedHostnames、allowedOriginHostnames、CORS オリジンを厳密に設定してください。認証なしで公開するルートに、ワイルドカードによるオリジン検証のバイパスを使用しないでください。 - 公開済みのメタデータを読み取る操作のみを公開しているため、認証は不要です。今後、ツールが非公開データやコストのかかる計算を扱う場合は、リリース前に OAuth/Cloudflare Access とツールごとの認可を追加してください。
- リクエストボディ、データセットクエリ、アーティファクト URL、認証トークンはログに記録されません。構造化エラーログには、メソッド、パス、長さを制限したエラーメッセージのみが含まれます。
レート制限
この Worker はステートレスであるため、分離された実行環境のメモリ内で、クライアントごとの信頼できるカウンターを実現できるかのようには扱いません。外部に登録する前に、正確な /mcp ルートに Cloudflare のレート制限ルールを適用してください(たとえば、OAuth がある場合は検証済みのクライアント ID を使用し、ない場合は保守的なバースト/時間枠と IP を使用します)。また、不正なリクエストやサイズ超過のリクエストに対する WAF ルールを追加してください。制限を引き上げる前に、429 の発生率、アップストリームエラー率、CPU 時間、サブリクエスト数を監視してください。
公開メタデータのオリジンでも、独自のキャッシュと不正利用対策を維持する必要があります。get_download_url をバイト列のプロキシとして使わないでください。クライアントは不変のアーティファクトを ClinicMarketIQ から直接ダウンロードする必要があります。これにより、CDN の制御とチェックサムの信頼性が保たれます。
デプロイと登録のゲート
このサーバーの新しいバージョンを外部向けに変更、再デプロイ、または登録する前に、次の手順を実施してください。
- クリーンなチェックアウトから
npm run types、npm run check、npm test、npm run dry-runを再実行します。 - 現在の
https://clinicmarketiq.com/catalog.jsonと、少なくとも1つのデータセットの機械可読インデックス、不変マニフェスト、スキーマ、ダウンロード URL が、期待されるコンテンツタイプとリリース ID を返すことを確認します。 - 最終的な Worker/カスタムドメインのホスト名を選び、MCP の Host/Origin ポリシーを正確に設定します。
- ルートレベルの WAF ルールとレート制限ルールを追加し、413/429 の動作をテストします。
- YMYL/プライバシー/権利について、独立したレビューを実施します。このサーバーはディスカバリー用のインフラであり、メタデータが臨床上の助言であること、すべての支払者を対象としていること、または第三者データの再利用を許可することを示唆してはなりません。
- 本番以外の環境にデプロイし、MCP Inspector で検証してから、外部クライアントにエンドポイントを登録するかどうかを決定します。
参考資料
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。