mcpField
D
Dietary Supplement Analysis (NIH data)

Dietary Supplement Analysis (NIH data)

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

Dietary Supplement Analysis (NIH data) について

健康・薬局エージェント向けのリモートサービスで、サプリメントの組み合わせによるビタミン・ミネラル摂取量を集計し、NIHの基準値や上限と比較します。NIH掲載の相互作用やハーブの安全情報、FDAの回収・有害事象も出典付きで示しますが、医療助言ではありません。

主な機能

  1. 01製品名・バーコード・NIH IDでラベル検索
  2. 02ビタミン・ミネラルの1日摂取量を集計
  3. 03NIHの基準値と上限に照合
  4. 04薬物相互作用とハーブの安全情報を確認
  5. 05FDAの回収と有害事象を検索
  6. 06出典付きの平易な要約を提示

活用シーン

  1. 01複数サプリメントの栄養素合計を確認
  2. 02服用中の薬とサプリメントの相互作用を確認
  3. 03製品追加による摂取量の変化を評価
  4. 04バーコードからラベルとFDA情報を検索

MCP 対応

MCPクライアントがサプリメント分析や製品検索を呼び出せるリモートMCPサーバーを提供します。

設定

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

エンドポイントhttps://agents.trackmysupplement.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 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

7
パラメーター型必須説明
agenumberいいえ年齢(年)。乳児は小数で指定できます:0.25 = 3 か月。0-5 か月と 6-11 か月の値は 1 歳未満に適用されます。
sexenumいいえmale | female
dietenumいいえ"typical" は、この年齢と性別における米国の食べ物・飲み物からの平均摂取量(NHANES)を加算し、総摂取量を推定します。with_typical_diet を参照してくださいnone | typical
langenumいいえ"es" を指定すると agent_summary がスペイン語で出力されます(英語のテキストは agent_summary_en に保持されます)。他のフィールドは英語のままですen | es
foodsarrayいいえ任意、最大 30 件:その人が 1 日に食べる食品。例:[{"query":"spinach cooked","amount":1,"unit":"cup"},{"query":"whole milk","grams":488}]。サプリメントの合計に加算され、nutrient_totals[].with_foods に含まれます(USDA SR28、オフライン)。diet "typical" の代わりに使用します。
detailenumいいえ"summary" は回答に必要な内容(agent_summary、フラグが付いた栄養素、suggestions、resolutions、候補の判定)のみを返します。20~40 KB ではなく約 1~3 KB ですsummary | full
productsarrayはい製品は 1~15 件。各項目は次のいずれかです:{"dsld_id"}、{"query"}(サーバー側で解決される製品名)、{"upc"}(バーコード)、またはカスタム製品 {"name","ingredients"}。いずれにも "servings_per_day" を追加できます。
candidatesarrayいいえ任意、最大 5 件:ユーザーが追加を検討している製品。各製品は組み合わせへの追加として candidate_results[] で評価され、nutrient_totals には含まれません。
conditionsarrayいいえNIH による用量の解釈に影響する状態:smoker(現在または過去の喫煙、またはアスベスト曝露:ベータカロテン)、kidney_disease(カリウム、マグネシウム、リン)、hemochromatosis(鉄、ビタミン C)、lab_test_soon(ビオチンが臨床検査に干渉)、cancer_treatment(抗酸化物質の用量)
life_stageenumいいえ妊娠または授乳(母乳育児)の基準値。sex が "female" で、年齢が 14~50 歳である必要がありますpregnancy | lactation
medicationsarrayいいえ本人が服用している薬剤。一般名または商品名("warfarin"、"Synthroid"、"metformin 500 mg")。NIH ODS ファクトシートに記載された薬物相互作用と照合しますが、網羅的ではありません。記録されることはありません。

詳細

栄養補助食品のラベルと栄養素摂取量の分析

「今のサプリメントの摂り方で問題ない?」と聞かれたとき、AI アシスタントはこのサービスを呼び出します。年齢と性別に加えて、製品名、バーコード、NIH ラベル ID など、一般的な呼び方で製品を指定してください。服用中の薬、持病、食事内容も任意で指定できます。各ラベルを NIH Dietary Supplement Label Database で検索し、すべての製品に含まれるビタミンとミネラルの1日分の合計を算出して、NIH の基準摂取量および上限値と比較します。また、NIH のファクトシートに記載された薬物相互作用、NIH が安全性に関する注意を示しているハーブ、FDA のリコールと有害事象報告も提示します。回答はすべて、アシスタントが伝えられる平易な要約(英語またはスペイン語)から始まり、各数値の出典は製品ラベルまたは NIH の情報源までたどれます。

このサービスは、Pocket Network Beta TestNet 上で有料サービス dietary-supplement-analysis として、また無料トライアル付きのリモート MCP サーバーとして稼働します。

ウェブサイトagents.trackmysupplement.com:主要なすべてのエージェントクライアント向けの接続ボタン、ライブデモ、料金、ステータスを掲載しています。エージェント向けには、llms.txt、agents.md、status.json を提供しています
お試しください審査員向け:1分で試す
Pocket NetworkBeta TestNet 上のサービス ID は dietary-supplement-analysis、リレーエンドポイントは https://pokt-beta.trackmysupplement.com です。Pocket のポータル受け入れルール9項目すべてに合格しており、有料リレーはオンチェーンで決済されています(記録)
MCP サーバーhttps://agents.trackmysupplement.com/mcp。 公式 MCP Registry および Smithery に掲載されています。mcp/README.md をご覧ください
精度手作業で検証した62件のケースすべてに合格しています(EVAL.md)
稼働中のバージョン/v1/version。すべてのリリースは CHANGELOG.md に記載されています
サプライヤーまたはゲートウェイの運用OPERATORS.md:各リリース向けにマルチアーキテクチャ対応イメージを公開しています

データソースはすべて公開されています。

  • ラベル: NIH Dietary Supplement Label Database(DSLD)。API v9 と、NIH の全データダウンロードの週次ミラー(214,782件のラベル)。
  • 基準値: Food and Nutrition Board の DRI。 NIH Office of Dietary Supplements のファクトシートで公開されている値を使用します。
  • 相互作用とハーブ: NIH ODS および NCCIH のファクトシート。薬の名称は NIH RxNorm を使用して正規化します。
  • リコールと有害事象: openFDA。
  • 食品: USDA SR28(FoodData Central「SR Legacy」)。米国の一般的な摂取量には What We Eat in America、NHANES 2017–March 2020 を使用します。

このサービスが提供しないもの: 医療上の助言や診断です。ラベルに記載された内容を報告し、合計値を公表されている基準値と比較して、NIH が公開する相互作用や安全性に関する記述を伝えます。相互作用の一覧は網羅的ではありません。また、注意情報がない場合も、安全が確認されたという意味ではなく、報告対象が見つからなかったことを示します。

審査員向け:1分で試す

サービス IDdietary-supplement-analysis(Pocket Network Beta TestNet、rpc_type: REST、リレーあたり500コンピュートユニット)
リレーエンドポイント(ステーク済みサプライヤー)https://pokt-beta.trackmysupplement.com。署名付きの Pocket リレーのみ受け付けます。
デモエンドポイント(直接接続、無料トライアル)https://agents.trackmysupplement.com。リレーレイヤーを介さない同じバックエンドなので、curl を使用できます。クライアントあたり、1分間に最大30件、1日あたり最大100回の呼び出しが可能です(詳細)。上限を超えると、"code":"RATE_LIMITED" と Retry-After ヘッダーを含む 429 を返します。
有料のエージェントは Pocket Network 経由でサービスを呼び出します。Beta で dietary-supplement-analysis 用にステークされたアプリケーションを使い、Pocket Network 経由に示すように pocket-ap でリレーします。以下のパスとリクエスト本文はどちらの方法でも同じです。デモエンドポイントではリレー層を省略するため、ステークせずに curl を使えます。

各例は、ユーザーが日々の習慣を自然な言葉で説明した後に、アシスタントが呼び出す方法を想定した1回の呼び出しです。jq -r .agent_summary でアシスタントが伝える回答を出力します。各例の下には、実際の回答を簡潔にしたものを示しています。

1. 「74歳で、クマディンを服用しています。Centrum Silver、フィッシュオイル、イチョウを摂っています。」

curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
  "age": 74, "sex": "female", "detail": "summary", "medications": ["Coumadin"],
  "products": [{"query": "Centrum Silver Women 50+"}, {"query": "Nature Made Fish Oil 1200 mg"}, {"query": "Ginkgo Biloba 120 mg"}]}' | jq -r .agent_summary

イチョウ(Nutricost Ginkgo Biloba 120 mg に含有):NCCIH:イチョウは、ワルファリンなどの抗凝固薬を服用している人の出血リスクを高める可能性があります。この組み合わせに含まれるビタミン K とクマディン:ビタミン K はワルファリンの作用を打ち消します。NIH は、深刻で危険を伴う可能性がある相互作用として説明しています。この組み合わせに含まれるビタミン E とクマディン:… この組み合わせに含まれる EPA/DHA とクマディン:高用量のフィッシュオイルは凝固時間を延長し、INR を上昇させる可能性があります … interactions.findings に相互作用の所見があと1件あります。

ブランド名からワルファリンが認識され、NIH のラベルデータベースで3つの製品が名称で見つかり、すべての警告に NIH または NCCIH のファクトシートが引用されています。

2. 「妊娠中です。妊婦用サプリメント、肌のためのビタミン A 25,000 IU、ストレス対策のアシュワガンダを摂っています。」

curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
  "age": 29, "sex": "female", "life_stage": "pregnancy", "detail": "summary",
  "products": [{"query": "Nature Made Prenatal Multi + DHA"}, {"query": "vitamin A 25000 IU"}, {"query": "ashwagandha root extract"}]}' | jq -r .agent_summary

ビタミン A:1日あたり 7500 mcg、UL は 3000 mcg(250%)です … UL は肝障害を防ぐための基準であり、妊娠中に摂取した場合は先天異常も防ぎます(既成ビタミン A のみ)。… ビタミン A 25000 IU を除くと、ビタミン A は 0 mcg になります。アシュワガンダ:… NCCIH:妊娠中および授乳中はアシュワガンダを避けてください。

3. 「62歳です。Centrum Silver、フィッシュオイル、マグネシウム、亜鉛を摂っています。ビタミン D 5000 を追加したほうがよいですか?」 "diet": "typical" の場合、食事からの摂取量も計算に含まれます。

curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
  "age": 62, "sex": "female", "diet": "typical",
  "products": [{"query": "Centrum Silver Women 50+"}, {"query": "Nature Made Ultra Fish Oil 1400"},
               {"query": "KAL Magnesium Glycinate 400"}, {"query": "Thompson Zinc 50 mg", "servings_per_day": 1}],
  "candidates": [{"query": "vitamin d3 5000 iu"}]}' | jq -r .agent_summary

亜鉛:1日あたり 65 mg、UL は 40 mg(163%)で、その大部分は Thompson Zinc 50 mg に由来します。UL は銅の状態の低下を防ぐための基準です … マグネシウム:1日あたり 500 mg、UL は 350 mg(143%)です … Thompson Zinc 50 mg を除くと、亜鉛は 15 mg(UL の 37.5%)になります。… Vitamin D3 5000 IU を追加すると、ビタミン D は上限を超えます(UL の 150%)。

回答では問題を解決するための変更が1つ提示され、what-if の回答ではユーザーが実際に尋ねた質問に答えます。

4. スペイン語で:「Centrum Silver と Caltrate を飲んでいます。ワルファリンとレボチロキシンを服用しています。」

curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
  "age": 68, "sex": "female", "lang": "es", "detail": "summary", "medications": ["warfarina", "levotiroxina"],
  "products": [{"query": "Centrum Silver Women 50+"}, {"query": "Caltrate 600+D3"}]}' | jq -r .agent_summary

この組み合わせに含まれるビタミン K とワルファリン:ビタミン K はワルファリンの作用を打ち消します … この組み合わせに含まれるカルシウムとレボチロキシン:… 炭酸カルシウムを服用してから4時間以内にレボチロキシンを服用しないでください。この組み合わせに含まれる鉄とレボチロキシン:…

**5. ボトルをスキャンする:**バーコードからラベルが見つかり、同じバーコードで FDA のリコール情報と有害事象報告も見つかります。

curl -s https://agents.trackmysupplement.com/v1/products/lookup -H 'Content-Type: application/json' -d '{"upc":"031604026974"}' | jq -r '.product.brand + " " + .product.name'
curl -s https://agents.trackmysupplement.com/v1/products/fda -H 'Content-Type: application/json' -d '{"upc":"031604026974"}' | jq -r .agent_summary

リコール対象の製品を確認するには、{"query":"Nature Made Vitamin D3 1000 IU"} を試してください。FDA では一致するリコールが4件掲載されています。

**6. エージェント間連携:**利用の多くは、人が入力することなく、より大きなタスクを実行する他のエージェントからのものになると想定されています。たとえば、薬局エージェントが新しい処方箋と登録済みのサプリメントを照合する、ショッピングエージェントが購入手続きの前にカートを確認する、ビジョンエージェントが写真から読み取ったラベルを渡す、コーチングエージェントが週次チェックを行う、服薬レビューエージェントがこのサービスと医薬品間相互作用サービスを組み合わせる、といった使い方です。examples/ には、5つすべてを1つのスクリプト(bash examples/agent-flows.sh)としてまとめた例と、GET /v1/tools からツールを読み込み、モデルに呼び出させる50行のアシスタント(agent_loop.py)があります。

その他の呼び出し:POST /v1/nutrients/reference(1つの栄養素の RDA と UL をオフラインで取得)、POST /v1/products/search(ラベルを検索)、POST /v1/interactions/check(サプリメントの組み合わせを指定せずに薬剤を確認)、およびエージェントフレームワーク向けの GET /v1/tools、GET /v1/guide、GET /openapi.json があります。すべて エンドポイント に記載されています。

Pocket Network 経由(有料リレー)

Beta TestNet で dietary-supplement-analysis 用にステークされたアプリケーションが必要です。Beta faucet からアドレスに資金を追加し、少なくとも 1,000 POKT をステークしてアプリケーションとして登録してください。次に pocket-ap をインストールし、このリポジトリのクライアント設定を使ってリレーします。

export POCKET_APP_PRIVATE_KEY=<your app key, 64 hex>   # pocketd keys export <name> --unarmored-hex --unsafe
pocket-ap call --config deploy/beta-stake/pocket-ap.yaml \
  --service dietary-supplement-analysis --rpc-type rest \
  -X POST --path /v1/stack/analyze \
  -d '{"age":34,"sex":"female","products":[{"name":"Custom magnesium","ingredients":[{"name":"magnesium","amount":250,"unit":"mg"}]}]}' -v
オンチェーン記録(Beta TestNet)
ステップTx ハッシュブロック
card/card.json のカードを使ってサービスを登録BC01B11F…7DD5722359
サプライヤーをステーク、60,000 POKT9CBCBAAF…51FA722747
テストアプリケーションをステーク、1,100 POKT6734D5F4…05EE722744
最初の有料リレーのクレーム(ブロック 722813 で精算)F3D81B3F…88EB722793
v0.12.6 で審査員の例 A をリレーしたクレーム。2026-10-11 に所有者の Mac から pocket-ap で送信(精算済み。アプリケーションのステークから 500 compute units を引き落とし)A9A5B384…3DA5724433

詳細とサーバーのセットアップについては、deploy/PHASE4_READINESS.md を参照してください。

Pocket Network にとっての意義

  • 何百万人もの人が抱える疑問です。 米国の成人の 60.2% が過去 30 日間に栄養補助食品を摂取し、38.7% が 2 種類以上を摂取しており、60 歳以上の成人の 75.9% が少なくとも 1 種類を摂取しています(CDC NCHS、2021–2023)。健康、薬局、食料品、フィットネス関連のアシスタントは、日々の習慣に問題がないかを尋ねられます。適切に回答するには、各ラベルに記載された正確な量と、その人に適用される NIH の上限値が必要ですが、モデルだけでは把握できません。
  • 繰り返し呼び出され、その多くはほかのエージェントから呼び出されます。 呼び出し 1 回が 1 リレー(500 compute units)です。薬局、買い物、コーチング、服薬レビューのエージェントは、新しい処方箋、カート、写真、週次チェックのたびに呼び出します。人が介在する必要はありません(例)。
  • Pocket 独自のヘルスサービスを補完します。 Pocket のカタログには医薬品関連サービス(fda、med-safety、clinical-trials)がありますが、サプリメントを扱うサービスはありません。これらの利用者の多くはサプリメントも摂取しています。処方箋についてこれらのサービスをすでに呼び出しているエージェントは、薬箱にあるそれ以外のものについて、このサービスを呼び出せます。
  • 無料トライアルから有料リレーにつながります。 MCP サーバーは公式 MCP Registry、Smithery、mcpservers.org に掲載されています。無料トライアル(接続ごとに 1 日 25 回のチェック)で利用者は試すことができ、上限に達したことを知らせるメッセージは、実際に大量利用するエージェントを Pocket のルートに誘導します。このルートには使用量の計測がありません。
  • サプライヤーを増やす準備ができています。 リリースごとにマルチアーキテクチャのイメージを公開しています。OPERATORS.md に従えば、約 5 分でサプライヤーをセットアップできます。また、レスポンスで 5xx を返さないため、ゲートウェイが不正な入力をサプライヤーの障害と誤認することはありません。
  • 検証済みです。 リリースごとに 62 件の手作業で検証したケースに合格しており(EVAL.md)、稼働中のサービスは、公開エンドポイントと Pocket ポータルの監査に対して 30 分間隔でテストされています。

エンドポイント

すべての入力は JSON リクエストボディから取得します。エラーを含むすべての応答は JSON オブジェクトです。

メソッドパス用途
GET/HEAD/サービスの識別情報
GET/v1/version{"service":"dietary-supplement-analysis","version":"0.15.1"}
GET/v1/health{"status":"ok"}
GET/openapi.jsonOpenAPI 3.1 仕様(openapi/openapi.json にもあります)
POST/mcpリモート MCP サーバー(Streamable HTTP、ステートレス):MCP クライアント向けの同じツール
GET/v1/provenanceコードのバージョン、git コミット、各データソースのエディション
GET/v1/tools関数呼び出し用のツール定義(name、description、JSON Schema の input_schema)
GET/v1/guideエージェント向けの使用ガイド(JSON 内の Markdown、llms.txt と同じテキスト)
POST/v1/stack/analyze1 回の呼び出しで、1~15 製品(名称、バーコード、ID、またはカスタム)について、栄養素ごとの合計、フラグ、修正案、what-if 候補を返します
POST/v1/interactions/check薬剤または疾患に対する NIH 掲載の栄養素相互作用(スタックは不要):{"medications":["Synthroid"],"nutrients":["calcium"]}
POST/v1/products/searchDSLD の製品を検索:{"query":"vitamin d3 5000","brand":"NOW","limit":5}。ラベルのバージョンは統合されます
POST/v1/products/lookupバーコードに対応するラベル:{"upc":"031604026974"}
POST/v1/products/fda1 製品の FDA リコールおよび有害事象報告(openFDA):{"query":"Nature Made D3 1000 IU"}、{"upc":...}、{"dsld_id":...}、または {"brand":...,"name":...}
POST/v1/products/get正規化されたラベル:{"dsld_id":12345} または {"dsld_ids":[...]}(最大 10 件)
POST/v1/nutrients/reference1 つの栄養素の RDA/EAR/AI/UL と UL の根拠:{"nutrient":"vitamin d","age":34,"sex":"female"}(オフライン)
POST/v1/toolMCP 形式のディスパッチャー:{"tool":"stack_analyze","arguments":{...}}
POST /v1/stack/analyze
{
  "age": 34,
  "sex": "female",
  "products": [
    { "query": "Centrum Silver Women 50+" },
    { "upc": "031604026974", "servings_per_day": 1 },
    { "dsld_id": 67890 },
    { "name": "Homemade magnesium", "ingredients": [ { "name": "magnesium glycinate", "amount": 200, "unit": "mg", "nutrient_basis": "elemental" } ] }
  ],
  "medications": [ "warfarin", "Synthroid 50 mcg" ],
  "conditions": [ "smoker" ],
  "candidates": [ { "query": "vitamin d3 5000 iu" } ]
}
  • 製品(1~15件)は、製品名(brandを任意で指定したquery)、バーコード(upc)、DSLD ID、または成分を明示したカスタム製品を指定できます。カスタム成分にはform(たとえば"folic acid"や"d-alpha tocopherol")を指定でき、その場合はIUとDFEの換算が適用されます。

  • 名前とバーコードはサーバー側で照合されます。名前は、ブランド名と製品名に含まれる単語の割合を基にDSLDの検索結果と照合します。同じ製品のラベルのバージョンは統合され、現在販売中の最新のものが使用されます。resolutions[]には、一致した項目ごとにconfidence(high:すべての単語が1つの製品に一致、medium:すべての単語が一致したが他の製品にも一致した、または大半の単語が一致、low:60%未満)と最大3件の代替候補が記録されます。特定できない製品は報告(PRODUCT_NOT_RESOLVED)され、対象から除外されます。特定できた製品が1つもない場合に限り、呼び出しは404で失敗します。

  • **diet: "typical"**を指定すると、年齢と性別に応じた、食品と飲料からの米国の平均的な1日の摂取量(What We Eat in America、NHANES 2017~2020年3月)が加算され、比較結果がwith_typical_dietにも表示されます。食品がULに算入されるのは、そのULが食品を対象としている場合のみです。総摂取量のULではすべての食品、葉酸では食品由来の葉酸、ビタミンAではレチノール、ビタミンEでは添加ビタミンEが対象となり、マグネシウムは対象外です。2歳未満、妊娠中、授乳中には適用されません。

  • medications(最大30件。ユーザーが入力した一般名またはブランド名)は、46の薬剤クラスと照合され、NIH Office of Dietary Supplementsのファクトシートに記載された55件の薬物相互作用と照合されます(data/interactions.json)。リストにない名前は、サービスがアクセスできる場合、NIH RxNorm(RxNav)を使って有効成分名に正規化されます。一致判定は単語全体を対象とし、あいまい一致は行いません。interactions.findings[]には、各相互作用の種類(supplement_changes_drug、drug_lowers_nutrient、drug_raises_nutrient、additive_risk、two_way)、NIHが示す場合は服用タイミングに関する助言、ファクトシート、および対象製品を示すin_stackが含まれます。スタック内の相互作用は先に表示され、agent_summaryの冒頭にも記載されます。このリストは網羅的ではありません(INTERACTIONS_PARTIAL)。薬剤名がログに記録されることはありません。

  • 植物成分。 アシュワガンダ、カバ、セントジョーンズワート、イチョウ、緑茶エキス、ウコン/クルクミン、ブラックコホシュ、ガルシニア・カンボジア、紅麹、ゴールデンシール、ベルベリン、ヨヒンベ、エフェドラ、バレリアン、エキナセア、ニンニク、朝鮮人参、ノコギリヤシ、マリアアザミ、甘草根、ビターオレンジ、フェヌグリーク、シナモン、クレアチンなど、NIHが安全性に関する注意喚起を示しているハーブその他の非栄養成分(現在24種)は、NCCIHまたはODSの記述、妊娠に関する記述、およびNIHが摂取量を示している場合はその用量チェック(クレアチンは1日5 g超および25 g、EGCGは1日843 mg、バレリアンは1日600 mg超)とともにbotanicals[]に報告されます。照合はDSLDの成分グループ、または植物部位や製剤を示す語を除いた完全一致名で行われます(「Ashwagandha Root Extract」はアシュワガンダに一致します)。部分文字列による照合は行いません。「ginseng」だけの場合(アメリカ人参かシベリア人参か判別できないため)、「cassia」だけの場合(別の植物属を指す可能性があるため)、およびDGL甘草は照合されません(data/botanicals.json)。medicationsを指定すると、NIHが示す植物成分と薬剤の組み合わせ(セントジョーンズワートと避妊薬、ワルファリンまたはSSRI、イチョウと抗凝固薬、カバまたはバレリアンと鎮静薬、紅麹とスタチン、ゴールデンシールとメトホルミン、ニンニクと抗凝固薬、朝鮮人参またはシナモンと糖尿病治療薬、甘草とコルチコステロイド)が相互作用の検出結果になります。

  • conditions:smoker(現在または過去の喫煙者、またはアスベスト曝露:1日20 mgからのベータカロテン。ベータカロテンとして表示されたビタミンAも算入)、kidney_disease(カリウム、マグネシウム、リン)、hemochromatosis(鉄、ビタミンCは500 mgから)、lab_test_soon(ビオチンは1 mgから甲状腺、トロポニンなどの検査結果に影響)、cancer_treatment(高用量のビタミンCとビタミンE)。

  • foods(最大30件)には、その人が1日に食べる食品を指定します。例:{"query": "spinach cooked", "amount": 1, "unit": "cup"}、{"query": "whole milk", "grams": 488}、{"ndb_number": "11458", "grams": 180}。USDA SR28の8,789品目の食品(FoodData Centralの「SR Legacy」)とオフラインで照合されます。照合では単語全体とUSDAの標準的な分量が使用され、栄養素の合計にあるnutrient_totals[].with_foodsへサプリメントの量と合わせて加算されます。食品からのみ摂取される栄養素はfoods.totalsで確認できます。食品がULに算入されるのは、そのULが食品を対象としている場合のみです。詳細はdietを参照してください。USDAが分析していない食品中の栄養素は、ゼロと仮定せず一覧表示されます。SR28に含まれる値の桁が大きく外れているマンガンのデータ3件は除外され、その旨が報告されます。foodsとdiet: "typical"は併用せず、どちらか一方を指定してください。

  • **timing**には、スタックに該当するNIHの服用タイミングに関する記述が記載されます。それぞれ対象製品とファクトシートが示されます。対象となるのは、カルシウムを500 mg以下に分けて摂取すること、炭酸カルシウムを食事と一緒に摂取すること、カルシウムサプリメントと鉄サプリメントを分けて摂取すること、25 mg以上の鉄を亜鉛と別に摂取すること、高用量の鉄を食事と一緒に摂取すること、ビタミンDを脂肪を含む食品と一緒に摂取すること、緑茶エキスを食事と一緒に摂取すること、およびスタック内で相互作用する薬剤との服用間隔です。最初の項目はagent_summaryにも表示されます。

  • **lang: "es"**を指定すると、agent_summaryがスペイン語で出力され、英語のテキストはagent_summary_enに保持されます。概要に表示される可能性があるNIHの文言には、すべてレビュー済みのスペイン語訳があります(data/i18n-es.json)。その他のフィールドは英語のままです。薬剤名は、スペイン語名(warfarina、levotiroxina、omeprazol)またはスペインおよびラテンアメリカのブランド名(Sintrom、Eutirox)で指定でき、アクセント記号の有無は問いません。

  • **detail: "summary"**を指定すると、エージェントの回答に必要な情報(agent_summary、flaggedに含まれる栄養素、suggestions、resolutions、候補の判定、data_gap_codes、provenance)のみが返されます。通常は20~40 KBではなく、1~3 KBです。

  • 候補製品(最大5件)は、ユーザーが検討している製品です。それぞれがスタックに追加する製品として評価され、candidate_results[]に表示されます。合計には算入されません。

  • servings_per_dayの既定値は、ラベルに記載された1日の最大摂取量です。ラベルに記載がない場合は1です。各既定値はassumptionsに記載されます。

  • ageとsexは任意です。指定しない場合は合計量と重複のみが表示され、基準値との比較は行われません。

  • life_stage("pregnancy"または"lactation"、女性、14~50歳)を指定すると、妊娠中または授乳中の基準値に切り替わります。"pregnant": trueおよび"breastfeeding": trueも使用できます。乳児の場合は、年齢を年単位の小数で指定してください(0.25は3か月)。0~6か月および7~12か月の基準値が適用されます。 レスポンスには、次の順で含まれます:profile、summary、agent_summary、resolutions(名前またはバーコードが指定された場合)、assumptions、suggestions、candidate_results(候補が指定された場合)、botanicals(スタックにNIHシグナルを持つものが含まれる場合)、interactions(薬または疾患が指定された場合)、nutrient_totals、overlaps、unrecognized_ingredients、data_gaps、products、sources、disclaimer。

  • agent_summary は、以下の数値から決定論的に生成される、エージェントがそのまま伝えられる2~5文の平易な文章です。

  • suggestions には、ULを超える各栄養素について、単一製品の変更(reduce_servings または remove_product)を最大3件記載します。変更後の量、その変更だけで栄養素がUL以下になるかどうか(resolves)、同時に解消される他のUL超過栄養素、および製品を削除した場合に減少する他の栄養素を示します。これは算術上の情報であり、助言ではありません。

  • candidate_results には、各候補のverdict(adds_above_ul、increases_above_ul、adds_near_ul、no_new_flags)、新たなフラグ、および変更前後の合計値を記載します。

各栄養素の合計には次の項目が含まれます:

フィールド意味
daily_total製品全体の合計。栄養素の標準単位(mcg RAE、mcg DFE、mg、mcg)で表示
completeラベルの行を一部カウントできなかった場合はfalse(data_gapsを参照)。この場合、合計値は下限値です
referenceプロファイルに対応するRDA、EAR、AI、UL。ul_scope、ul_note、ul_basis(ULが防ぐ対象。たとえば、亜鉛の場合は「銅の状態の低下」)を含みます
amount_toward_ulULの適用対象となる量。葉酸では葉酸酸のみ、ビタミンAでは既成ビタミンAのみです
percent_of_ul、percent_of_rda、percent_of_ai各基準値に対する割合。ULの対象部分が一部しかわからず、かつULをすでに超えていない場合、percent_of_ulは表示されません
coverageこれらのサプリメントだけで摂取できるRDA(またはAI)の割合です。参考情報です。通常、食事から多くを摂取するため、充足率が低くても不足を意味しません
flagsabove_ul(UL超過)またはnear_ul(ULの90~100%)。フラグがない場合は、報告事項がないことを示すものであり、スタックに対する評価ではありません
severityhigh(ULの2倍以上)、moderate(UL超過)、low(ULに近い)、またはnull
contributions各製品のラベル記載量、換算後の量、1日あたりの摂取回数、1日あたりの量
with_typical_diet"diet": "typical"の場合、米国の平均的な食品摂取量を加えたfood、estimated_total、amount_toward_ul、percent_of_ul、coverage、flags
エラー
{ "error": { "code": "INVALID_INPUT", "message": "products: ...", "retryable": false, "field": "products" } }
コードステータス発生する場合
INVALID_INPUT400入力形式が不正、または許容範囲外
NOT_FOUND404不明なDSLD ID、栄養素、または経路
UNSUPPORTED42214~50歳以外の妊娠または授乳
UPSTREAM_UNAVAILABLE424DSLDに接続できず、キャッシュにもデータがない場合(retryable: true)
INTERNAL_ERROR422予期しないエラー。Pocketゲートウェイは5xxをサプライヤーの障害として扱うため、4xxとして返されます
データ不足コード
コード意味
BLEND_UNQUANTIFIED独自ブレンドに各成分が記載されていますが、それぞれの量は示されていません。ブレンドの重量は各成分に配分されません
QUANTITY_MISSING認識された栄養素の項目に量が記載されていません
UNIT_NOT_CONVERTIBLE単位を一意に換算できません。たとえば、形態が不明なビタミン A の IU などです
COMPOUND_WEIGHTその量は元素としてのミネラル量ではなく、化合物の重量である可能性があります
AMBIGUOUS_BASIS化合物名を含むカスタム成分に nutrient_basis が指定されていません
UL_PARTIALUL は特定の形態(葉酸、既成ビタミン A)のみに適用され、一部の形態が指定されていません
PROFILE_MISSING年齢と性別が指定されていないため、基準値との比較はできません
PRODUCT_NOT_RESOLVED製品名またはバーコードを DSLD のラベルと照合できなかったため、集計されません
DATA_SUSPECTNIH のラベル記録に矛盾があるようですが、量は集計されます。失敗したテストは check に示されます。duplicate_row(EPA が DHA として入力されている場合のように、同じ見出しの下に同じ成分が 2 回記載されている)、nested_exceeds_parent(項目の合計が、それらの合計として記載された量を超えている)、percent_dv_mismatch(印刷された %DV が、現在と 2016 年以前の両方の 1 日摂取基準値に基づく量と矛盾している)、implausible_amount(成人の UL の最高値の 50 倍を超えている。通常は mg と mcg の入力間違い)
INTERACTIONS_NOT_ASSESSEDmedications が指定されていないため、薬との相互作用は確認されていません。サプリメント同士の相互作用は評価されません
INTERACTIONS_PARTIAL薬は確認されましたが、NIH ODS のファクトシートに記載された相互作用のみが対象です。この一覧は網羅的ではありません
FOOD_NOT_RESOLVEDfoods 内の食品が USDA SR28 の食品に一致せず、集計されません
FOOD_PORTION_UNKNOWNUSDA に、その食品の指定単位に対応する分量がありません。記載されている分量は foods.items[].portions にあります(グラム数を指定してください)
FDA_UNAVAILABLE/v1/products/fda のみ:リコールまたは有害事象について openFDA に接続できませんでした。それ以外の回答は有効です
MEDICATION_NOT_RECOGNIZED薬名が NIH のファクトシートの相互作用リスト内のクラスと一致しなかったため(直接一致または RxNorm 経由)、確認は行われていません

数値の算出方法

精度は、手作業で確認した62件のケースと照合して検証しています。詳細は EVAL.md をご覧ください。

  • DSLDラベルの読み取り:
    • DSLDでは、ビタミンAが単にmcgまたはmgとして記載されていることがよくあります。ラベルの%DVが900 mcg RAEの1日摂取基準値と一致する場合に限り、mcg RAEとして読み取ります。
    • DSLDで単位が省略されている場合(たとえば「6 NP」)、ラベルの%DVがFDAの1日摂取基準値と一致する場合に限り単位を推定します。一致しなければデータの欠落として扱います。
    • 栄養素の下位にネストされた行は、その栄養素を形態別に内訳表示しています(葉酸800 mcg DFE=葉酸480 mcg)。これらはULの正確な対象部分を示すものであり、二重に計上することはありません。
    • 形態別の割合(「40% as beta-carotene」など)が明記され、合計が100%になる場合は、IU換算を正確に振り分けます。100%に満たない場合、残りは形態不明として扱います。
    • ガンマおよびデルタトコフェロール、トコトリエノールはビタミンEとして計上しません。
  • 成分と栄養素の照合では、次の順に照合します。DSLDのingredientGroup、UNIIコード、完全一致する同義語、いずれか1つの栄養素だけに属する完全一致の形態名です。部分一致やあいまい一致は行わないため、「Vitamin B」が「Vitamin B12」に一致することはありません。それ以外はすべてunrecognized_ingredientsに分類されます。
  • 単位換算は、結果が一意に定まる場合に限って行います。
    • ビタミンD:1 mcg=40 IU。
    • ビタミンE:天然型は1 IUあたり0.67 mg、合成型は1 IUあたり0.45 mgです。形態不明の場合はデータの欠落として扱います。
    • ビタミンA:レチノール(1 IUあたり0.3 mcg RAE)またはサプリメント由来のベータカロテン(1 IUあたり0.3 mcg RAE)の場合に限り、IUを換算します。
    • 葉酸:葉酸のmcgに1.7を掛けるとmcg DFEになります。
    • %DVはラベルの表記どおりに表示し、合計には使用しません。
  • ULの適用範囲は栄養素ごとに記録され、応答内で説明されます。
    • マグネシウム:サプリメントおよび医薬品のみ。
    • 葉酸:葉酸のみ。
    • ビタミンA:前形成型のみ。
    • ナイアシンおよびビタミンE:サプリメントからの摂取のみ。
    • それ以外はすべて総摂取量に対するULです。これらの栄養素について、サプリメントの合計値がUL未満でも、総摂取量がUL未満であることを示すわけではありません。その旨はassumptionsに記載されます。
  • 参照データはdata/source/manual.jsonにあります。scripts/build-nutrients.tsは、このデータと、存在する場合はSuppleTrackerのglobal_compoundsエクスポートから、data/nutrients.jsonを生成します。ビルド時には、単位、情報源、年齢範囲、同義語の衝突を検証します。DRIを含む26種類のビタミンおよびミネラルに加え、認識対象ではあるものの参照値がないEPA、DHA、メラトニン、CoQ10、ベータカロテンを収録しています。

ローカルでの実行

npm ci
npm run dev                   # http://localhost:8080 (live DSLD)
DSLD_FIXTURES_DIR=test/fixtures/dsld npm run dev   # offline, synthetic fixture labels 900001-900005
npm run check                 # data + OpenAPI freshness, lint, typecheck, tests
docker compose up --build     # container on 127.0.0.1:8080
環境変数デフォルト用途
PORT / HOST8080 / 0.0.0.0リッスンアドレス
DSLD_API_KEYなしapi.data.gov キー。X-Api-Key として DSLD に送信されます(NIH の上限が 1 時間あたり 1,000 リクエストから 10,000 リクエストに引き上げられます)
OPENFDA_API_KEYなしopenFDA 用の同じ api.data.gov キー
OPENFDA / RXNORMオンoff にすると、openFDA または RxNorm への呼び出しが停止します(その場合、医薬品の照合には data/interactions.json にある名前のみが使用されます)
FREE_TIER_HOSTSなし無料トライアルの利用枠が適用されるホスト名(デモでは agents.trackmysupplement.com を使用します)。Pocket リレーなど、その他のホストからのリクエストは利用状況の計測対象になりません。FREE_TIER_PER_SESSION、FREE_TIER_PER_IP、FREE_TIER_PER_IP_MCP、FREE_TIER_GLOBAL で利用枠を変更できます
DSLD_BASE_URLhttps://api.ods.od.nih.gov/dsld/v9DSLD API のベース URL
DSLD_PREWARM_IDSなし起動時にキャッシュするラベル ID(カンマ区切り)
DSLD_STORE_PATHコンテナー内では /data/dsld.sqlite、それ以外では無効永続ラベルストア(SQLite)。取得したラベルはすべて保存されます。NIH に接続できない場合は、ラベル、バーコード、検索結果をこのストアから返します。空にすると無効になります
DSLD_WARM1ストアが有効な場合、バックグラウンドジョブが 1 秒あたり約 1 件のリクエストで人気商品を取得し、ストアに保存します(クエリは data/warm-queries.json にあります)。0 にすると無効になります
DSLD_FIXTURES_DIRなしローカルの label-<id>.json ファイルから DSLD を提供します(開発時のみ。test/fixtures/dsld/real には実際のラベルが 12 件含まれています)
UPSTREAM_BUDGET_MS8000424 を返すまでに、1 つのリクエストが DSLD への応答待ちに費やせる合計時間
LOG_LEVELinfoログに記録されるのはメソッド、パス、ステータス、所要時間のみで、リクエストボディは記録されません

制限

  • 1 回の analyze 呼び出しにつき最大 15 製品、5 件の候補、get 呼び出しにつき 10 件の ID、検索結果は 10 件までです。
  • NIH の DSLD 全件ダウンロード(214,782 件のラベル)がミラーされています。ラベルストアに保存され、NIH が新しいデータを公開するたびに毎週更新されます。ミラー内のラベルとバーコードは NIH に問い合わせずに応答します。名前検索にはライブ API(api.data.gov キーが必要)を使用し、ミラーをフォールバックとして利用します。NIH がレート制限した場合は、10 分間、自動的にミラーへ切り替わります。ミラーのバージョンは GET /v1/provenance で確認できます。
  • DSLD への呼び出しは同時に最大 4 件まで実行され、それぞれ 6 s の期限と、リクエストごとに 8 s の予算が設定されています。ラベルはメモリ内に 7 日間、検索結果は 24 時間キャッシュされ、ラベルは永続的なラベルストアにも保存されます(30 日後に更新)。DSLD が停止している場合は、古いコピーとラベルストアで応答します。ストアからの検索結果では "search_source": "local" と表示されます。ライブの DSLD と比較した場合、コールド状態で 15 製品を分析すると 1.5 s、ウォーム状態では 17 ms です。
  • Pocket ゲートウェイがエラーシグナルとして扱うテキスト(「timeout」、「block not found」など)は、応答内で \u エスケープされます。デコードすると同じ文字列になります。
  • 生後から 120 歳までの年齢、および妊娠・授乳(14~50 歳)に対応しています。カフェインは FDA のガイダンス(健康な成人は 1 日 400 mg、妊娠中は 200 mg 未満)と照合され、ナトリウムは 2019 Chronic Disease Risk Reduction Intake(2,300 mg)と照合されます。どちらも DRI UL ではなく、その旨は ul_note に記載されます。
  • 公開デモエンドポイントは無料トライアルです。 クライアントごとに 1 分あたり 30 件のリクエストが許可され、さらに毎日 00:00 UTC にリセットされるクォータがあります。
    • MCP 接続ごとに 25 回のツール呼び出し(接続ごとに固有の Mcp-Session-Id が割り当てられます)、1 分あたり最大 20 回;
    • IP アドレスごとに REST 呼び出し 100 回;
    • IP アドレスごとに MCP 呼び出し 1,000 回(claude.ai などのホスト型クライアントは同じ送信元アドレスを共有します);
    • 合計 5,000 回の無料呼び出し。 検出(GET ルート、initialize、tools/list)は無料です。結果の品質が低下することはありません。REST 応答には X-Free-Tier-Remaining、X-Free-Tier-Limit、X-Free-Tier-Reset ヘッダーが含まれ、MCP の結果には同じ情報が _meta.free_tier に含まれます。クォータを超過すると、REST は 429 RATE_LIMITED を返し、MCP はクォータのリセット時刻と有料の Pocket ルートへの切り替え方法を示す、読みやすいツール結果を返します。
    • カウンターはソルト付きハッシュで、2 日間保持されます。
    • Pocket Network 経由のリレーは課金対象になりません。

免責事項、利用規約、ライセンス

情報提供のみを目的とするもので、医療上の助言ではありません。 本サービスは、サプリメントのラベルに記載された内容と、その合計値を NIH および FDA が公表する基準値、相互作用、安全性に関する記述と比較した結果を報告します。診断や治療の推奨ではなく、医師や薬剤師に代わるものでもありません。また、あらゆる疾患の診断、治療、治癒、予防を目的とするものではありません。ラベルや公開データには誤りや古い情報が含まれる場合があり、相互作用リストは NIH が挙げているもののみを対象とするため、警告がないからといって安全が保証されるわけではありません。サプリメントや薬の使用を開始、中止、変更する前に、医療専門家に相談してください。緊急時は、米国では 911 または Poison Control(1-800-222-1222)に電話してください。すべての応答には、この内容が disclaimer フィールドと agent_summary の最後の文に含まれており、結果を中継するアプリやエージェントはこれを伝えることに同意するものとします。

ホスト型サービスの利用には、利用規約が適用されます。NIH、FDA、USDA は本サービスを推奨していません。また、ブランド名は製品の識別のみに使用しています。

コードは MIT License に基づいています。DSLD、ODS、NCCIH、RxNorm、openFDA、USDA から提供されるデータは、米国政府の著作物であり、パブリックドメインに属します。data/ にある編集済みの相互作用ファイルおよびハーブファイルには、出典である NIH の情報源が記載されています。

コメント

MCP は初めてですか?

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

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