目的、比較軸、条件をAIへ伝える。
食品データを、AIとの会話へ
AIの答えは、根拠データの品質で変わります。フードサーチMCPは、精度と根拠を追求した食品データをAIとの会話に組み込み、検索・比較・分析を支えます。

MCPとは、AIと食品データをつなぐ共通規格。
あなたは普段どおり日本語で依頼します。AIが目的に合うツール(tool)と引数を選び、フードサーチMCPがIMD食品データベースを検索します。構造化された結果をAIが表や説明としてまとめます。
「正しいAI」は、
正しい根拠から。
AIは、根拠となるデータが誤っていれば、一見もっともらしくても、誤った答えを返すことがあります。フードサーチMCPは、正確性を追求して作成・監査されたIMD食品データをAIへ直接渡し、AIの弱点の一つである「根拠データの不確かさ」を補います。
商品・外食・一般料理を、OIDと栄養値、素材等で照会。
AIが値を比較し、表・図・説明にまとめます。再確認できる識別子も残します。
AIの根拠を強くする
一般知識や断片的なWeb情報だけに頼らず、同じ構造で管理された食品データに接続し、回答の出発点を明確にします。
表示にない栄養素まで
商品等に表示された栄養値に加え、独自レシピと日本食品標準成分表をもとに算出した、根拠のある理論値を活用できます。
専門技術を会話で活用する
API操作、データ整形、栄養項目の対応付けをMCPとAIが仲立ちします。IT×栄養のW領域を熟知していなくても調査を始められます。
パッケージに
ない栄養素が
なぜ分かる?
市販商品や外食では、主要な栄養成分だけが表示され、詳細項目は公開されないことが多くあります。IMDは、表示値と商品・画像等の情報を手がかりに、専属管理栄養士らが監修する独自レシピを構築します。日本食品標準成分表に準拠した食材と量で調理をデジタルに再現し、表示値との差が極力小さくなるよう調整したうえで、日本食品標準成分表に基づく栄養計算により、未表示項目を理論値として算出します。

表示されている項目は、その公式表示値を収録します。
独自レシピと標準成分表を根拠にした理論値(推論値)です。直接の実測値とは区別します。
MCPで実際に取得できる項目は、tool、公開版/トライアル/APIキー版、契約scopeにより異なります。商品改定後の最新表示や、医療上の最終判断は別途確認してください。 IMDの算出方法を見る ↗
専門家しか扱えなかったデータを、思いついた瞬間に。
専用API/フードブラウザの出力から分析
- API仕様、項目名、出力形式を理解
- 必要なデータを抽出・整形して再計算
- ITと栄養、両方の知識が必要
普段のことばから検索・比較・評価
- AIが目的に合うツール(tool)と引数を選択
- 商品・料理・新商品を同じ会話で横断
- 24時間365日、対応クライアントならスマホからも相談
「高たんぱく×小容量」など独自の切り口で候補群を調査。
発売日、メーカー、登録量、栄養値を同じ軸でそろえる。
競合の分布や市場の空白を、検索結果から仮説化。
表だけでなく図、イラスト、Webページ、動画等の素材として展開。
MCPの役割は、根拠となる構造化データを届けること。 グラフ、イラスト、Webページ、動画等への変換可否と品質は、接続するAIクライアントの機能・利用条件に依存します。サービス稼働条件やSLAも利用契約に従います。

40万件超の料理や商品情報を
ひとつの会話でシームレスに
基盤はIMD食品データベース。市販商品だけでなく、外食メニューや家庭で食べる一般料理まで、同じOIDと構造で検索できます。
FOから始まる全26桁で、食材・一般料理・郷土料理・商品・外食・アルコール飲料を重複なく一意に識別します。知りたい目的から、使い方を選ぶ。
まず公開版でお試しください。栄養値による絞り込み、詳細素材、複数比較が必要になったら、APIキー版をご利用ください。できる範囲と注意点を目的ごとに分けました。
食事・ダイエット
商品名や料理名から候補を探し、重量あたりのエネルギー、たんぱく質、脂質、炭水化物、食物繊維、食塩相当量を並べます。
- 公開版で候補検索と主要栄養値を確認
- APIキー版は栄養条件をデータベース検索時に適用
健康管理
食塩相当量や食物繊維など、目的に関係する項目を候補間で比較。商品と一般料理を同じ会話で調べられます。
- 重量と比較条件をそろえて確認
- 診断・治療・摂取可否の判定には使わない
食品・健康アプリ開発
標準MCP SDKまたはJSON-RPCで組み込み。OIDを安定した識別子として扱い、structuredContentをUIや分析処理へ渡せます。
- Node.js/Python接続例を掲載
- 429とrequest_idを設計に含める
既存サービス・食品ビジネス
食事記録、健康支援、商品情報サービスなどの検索基盤として、更新される食品データをAPI経由で利用できます。利用量、必要項目、商用条件に合わせて設計します。
- 料金は料金プランをご覧ください。SLA、再配布、保存可否は個別条件
- IMD直接APIと本MCPの契約は別に確認
食品メーカー・マーケティング・研究
商品企画のアイデアを普段のことばで調査へ。プロテインバーや大豆ミート等のテーマ、新商品、メーカー、栄養条件を横断し、ニッチ市場の候補や競合の位置づけを同じ形式で検討できます。
- 検索順位や件数だけを市場シェアとは解釈しない
- query、条件、OID、fetched_atを残して仮説を検証
卸売原価指数を参考軸に並べる
APIキー版では、料理・商品の卸売原価指数(食材構成を公的市場の卸売価格で按分合算した相対指数)を実行日基準で取得し、低い順・高い順の候補検索、複数OIDの比較、直近約4週間の変動確認に利用できます。
- 公的市場の卸売価格だけを参照し、市場取引のない時期は最終取引値を継続参照
- 絶対額ではなく時間軸の変動を見る参考指数。製造原価・売上原価・販売価格・利益を示す値ではない
数値での絞り込みについて: 公開版のsearch_foodsは従来どおり名称・キーワード検索です。APIキー版のsearch_foods_advancedなら、stuff_e(エネルギー)の上限を200にするなど、任意の契約栄養項目を上流データベース検索時に絞り込めます。名称を指定しない栄養母集団検索など一部機能は追加契約が必要です。
「知りたい」を、5つの方向から。
AIは日本語のdescriptionと型付きschemaを読み、目的に合うツール(tool)を選びます。公開版は基本4ツール、即時発行トライアルは最大12ツール、通常のAPIキー版はscopeに応じて最大12ツール(token利用状況のget_token_usageを含む)です。

名前から探す
キーワード、AND/OR、最近の商品、ページングで候補を発見。
01条件で絞る
栄養上限・下限、メーカー、カテゴリ、食材、新商品を検索時に適用。
02中身を読み解く
OIDから概要、追加栄養項目、分量の多い順に上位3件までの主要食材へ。必要なときは上位3食材の目安分量(丸めた値)も取得できます。
03食材から遡る
食材を含む商品・料理を、さらに栄養・メーカー条件で逆引き。
04比べて分析する
複数食品の栄養と、全食材の有無から得た食材差分を比較。
05全12 toolsを、目的と利用条件で一覧に。
公開版の4 toolsはトライアルとAPIキー版にも含まれます。自動発行トライアルでは最大12 tools、通常のAPIキー版ではscopeに応じて最大12 tools(食品11 tools+token利用状況のget_token_usage)が表示されます。追加契約が必要なtoolは、一覧に見えても現在は実行できません。
4+12=16種類ではありません。 公開版の4 toolsはAPIキー版の12 toolsに含まれるため、重複なしの全種類は12です。トライアルはAPIキー版と同じ最大12 toolsを当日中だけ表示し、1応答は最大5食品です。get_token_usageはscopeにかかわらずトライアル・APIキー版に常に表示され、tokenも日次回数も消費しません。
AIが各ツール(tool)の日本語descriptionと入力schemaを読み、目的に合うツールを自動で選びます。通常はツール名を覚える必要はありません。
「木綿豆腐を探して、候補を比べて」再現性を高めたい場合は、使いたいツールをそのまま指定できます。利用中の接続先とscopeで表示されるツールだけを呼び出せます。
「compare_foodsを使って3件を比較して」tools/listで利用可能な一覧を取得し、tools/callのparams.nameに正確なツール名を設定します。
{ "name": "search_foods", "arguments": {…} }「フードサーチ」とsearch_foodsの違い
「フードサーチMCP」はサービス全体の名称、search_foodsはその入口となる食品名・キーワード検索toolです。名前の接頭辞は、search_が検索、get_が1件の取得、compare_が比較を表します。

| # | tool | 何ができるか | 利用条件 | 必要scope | 詳細 |
|---|---|---|---|---|---|
| 01 | 名称・キーワード、AND/OR、最新商品を含む条件で食品候補を検索 | 公開/無償トライアルAPIキー | food:search | ||
| 02 | OIDから名称、よみ、メーカー、カテゴリ、発売日、重量、主要7栄養項目を取得 | 公開/無償トライアルAPIキー | food:search | ||
| 03 | 食材名から食品成分表に対応する食材候補を検索 | 公開/無償トライアルAPIキー | food:search | ||
| 04 | 入力途中の語から食品検索語の候補を取得 | 公開/無償トライアルAPIキー | food:search | ||
| 05 | OIDから詳細情報、指定した栄養項目、分量の多い順に上位3件までの主要食材を取得。指定時は上位3食材(水を除く)の丸めた目安分量と、公式表示値の項目名も返す。正確な分量・配合比は非開示 | トライアルAPIキー | food:detail | ||
| 06 | 複数OIDの栄養値・卸売原価指数と全食材を比較。食材差分は各食品で重量順上位3件のみ、重量・割合は比較対象外。指定時は各食品の上位3食材の目安分量と公式表示値の項目名も付加 | トライアルAPIキー | food:recipe | ||
| 07 | 複数の検索語を一括検索し、同じ形式でまとめて取得 | トライアルAPIキー | food:batch | ||
| 08 | 栄養名、卸売原価指数、味覚、色、発売期間、メーカー、カテゴリ、食材等を組み合わせて検索・並べ替え。公式表示値だけでの並べ替えにも対応 | トライアルAPIキー | food:advanced | ||
| 09 | 食品名・OID・構成マッチ抽象名の候補から、似た料理・類似品・類似商品を人気順で検索。人気度の数値は非開示 | トライアルAPIキー | food:advanced | ||
| 10 | 食材を含む食品を、栄養・卸売原価指数・味覚・色等の追加条件とともに逆引き。公式表示値だけでの並べ替えにも対応 | トライアルAPIキー | food:advanced | ||
| 11 | 名称なしで栄養範囲から検索するtool。別途契約が必要で利用不可 | トライアルAPIキー | food:advancedDB-API追加契約必須 | ||
| 12 | このキーの契約プラン、キーの状態、課金状態、いま使える残りtoken、今週・今月のtoken上限・補充分・消費・残量・リセット日時、本日の呼び出し回数と残りを取得。tokenも日次回数も消費せず、停止中でも実行可 | トライアルAPIキー | scope不要token従量制限の確認用 |
tool名または「詳細」を選択: 基本的な呼び出し例、全MCP引数と内部APIパラメータの対応、MCPの最終レスポンス、内部APIへのリクエスト、取得結果、高度な複合条件例を、折りたたみや途中省略なしで表示します。
追加契約対象: search_foods_by_nutrient_rangeは別契約が必要で、現在は実行できません。呼び出すと内部APIへ送信せず、ADDITIONAL_CONTRACT_REQUIREDを返します。
FOから始まる全26桁で、食材・食品・商品を同じ空間で識別します。一般料理・郷土料理、コンビニ商品・加工品、外食、アルコール飲料まで重複や使い回しなく一意に扱える、日本で唯一のIMD識別子です。検索で得たOIDを詳細・比較toolへ引き継げます。まずは公開版 高度な検索はトライアル 継続利用はAPIキー版
3つの利用条件に対してMCP URLは2つです。トライアルと通常APIキーは同じ認証付きURLを使い、キーの種別・scope・上限によって機能が変わります。
公開版
NO AUTHhttps://mcp.fdb.software/mcp/food/public- 名称検索・食品概要・食材候補・検索語候補
- 4 tools、名称・食材検索は1回最大10件
- 名称・食材検索は先頭50件の範囲のみ参照
- フェアなご利用環境を維持するため「適応型fair-use制御」を実装
- MCPの呼び出し回数、検索語・OID、ページ走査、要求候補数等を総合的に検知し、一時的に遮断することがあります
- 制限時はHTTP
429とRetry-After、X-Foodsearch-Fair-Useを返します - IPアドレスだけでは遮断しません。対話的な試用向けで、自動収集・網羅取得には利用できません
トライアル/APIキー版
OAUTH / BEARERhttps://mcp.fdb.software/mcp/food- ChatGPTはOAuth 2.1、対応クライアントは固定Bearerでも接続
- 即時発行トライアルは当日10 tool呼び出し、1応答最大5食品、最大12 tools
- 通常APIキーは付与scopeに応じて最大12 tools、検索最大500件
- キー単位でRPMとJST日次上限を適用
- 全食材構成と正確な分量・重さ・配合比は、どちらのキーでも公開しません(指定時だけ、上位3食材の丸めた目安分量を返します)
「〇〇 kcal以下」「糖質 〇 g以下」を検索条件に
トライアルまたはAPIキー版のfood:advanced scopeでは、AIが日本語descriptionを読んで自然文を型付き引数へ変換します。栄養上限・下限、メーカー、カテゴリ、食材、新商品、卸売原価指数による並べ替え等を指定できます。「カルシウムが多い」のような依頼はrank_by_nutrientへ日本語名を指定でき、現在公開中の識別子と単位をMCPが解決します。「最近」はrecent_days=365を基準にできます。英語で依頼された場合は、AIへ食品の検索語を自然な日本語へ変換し、結果には英語名i18n_name_enも要求して日本語名との整合性を確認するようMCPが案内します。自動発行トライアルは1応答最大5食品です。公開版の4 toolsと制限は変更しません。

nutrient_filters[].maximumのようなネストした引数にも日本語descriptionを付けています。実通信で確認した呼び出し例
同じ条件で上流へ20件を要求し、返った全件のstuff_eが200以下であることを自動試験しました。自動発行トライアルは1回最大5件のため、limitは5以下にします。
{
"name": "search_foods_advanced",
"arguments": {
"query": "牛丼",
"match": "and",
"limit": 20,
"include_new": "or",
"nutrient_filters": [
{ "nutrient_code": "stuff_e", "maximum": 200 }
],
"sort": { "field_code": "stuff_e", "direction": "asc" },
"response_fields": ["name", "objectid", "stuff_e"]
}
}{
"query": "牛丼",
"returned_count": 20,
"filters_applied_upstream": true,
"foods": [
{ "objectid": "FO…", "name": "…", …,
"fields": { "name": "…", "objectid": "FO…", "stuff_e": 38 } },
{ "objectid": "FO…", "name": "…", …,
"fields": { "name": "…", "objectid": "FO…", "stuff_e": 43 } }
],
"request_id": "…"
}{
"name": "search_foods_advanced",
"arguments": {
"query": "コンビニ パスタ",
"match": "and",
"recent_days": 365,
"rank_by_cost": { "direction": "asc" },
"limit": 10
}
}{
"returned_count": 10,
"foods": [{
"objectid": "FO…",
"name": "…",
"fields": { "wholesale_cost_index": 396.4 }
}],
"cost_ranking": {
"identifier": "wholesale_cost_index",
"unit": "指数",
"absolute_value": false,
"direction": "asc"
},
"cost_processing": {
"as_of": "2026-09-22",
"calculation_basis": "recipe_ingredients_public_wholesale_market_price_sum"
}
}卸売原価指数を使うときの重要な注意: 卸売原価指数は、食品の食材構成を分解し、各食材の公的市場の卸売価格を分量で按分して合算した相対指数を、実行日基準で内部APIがその都度算出したものです。公的市場の卸売価格だけを参照し、市場で取引のない時期(夏の食材の冬季など)は最終取引値を継続参照します。絶対額ではなく、時間軸での値の上下(変動の大きさ)を見るための商品価格変動の参考情報であり、調理、人件費、商品企画・製造、移動・物流、販売、広報・広告、返品、廃棄等のコストは含まず、現実の製造原価、売上原価、販売価格、利益を示すものではありません。指数がない候補は、指数順のランキングから除外します。旧identifier materialcost(原価)は2.12.0で廃止しました。
カスタム検索、類似料理・類似商品検索、食品詳細、主要食材、高度食材逆引き、検索語候補。栄養・味覚・色・発売期間・メーカー・カテゴリ・食材条件、卸売原価指数による並べ替えを型付きで指定できます。
search_foods_by_nutrient_rangeはDB-API追加契約が必要です。現在は内部APIへ送信せず明示的な契約エラーを返します。
コンビニ商品がJANへ対応していない運用条件のため、JAN endpointとJAN関連返却項目はMCPから除外します。
get_token_usageはscopeなしで常に使えます。既存APIキーへ新scopeを自動付与せず、管理画面で用途を確認して追加します。IMD食品検索API仕様 ↗似た料理を探し、味覚と色でも絞り込む
トライアルまたはAPIキー版のfood:advancedでは、構成マッチ食品OIDを共通の基準として「似た料理」「類似品」「類似商品」「同じような食品」を検索できます。味覚は相対的な強さ、色は主色と補助色、発売日は明示した期間で組み合わせられます。
用語: 構成マッチ食品名(noename_broadcat)、構成マッチ食品OID(noeoid_broadcat)、構成マッチ抽象名(noeobj_broadcat)に統一しています。レスポンスのparent_menu等の技術キーは既存クライアントとの互換性のため維持します。
食品・商品名から
queryで候補を検索し、選んだ食品の構成マッチ食品OIDと構成マッチ抽象名を解決してから類似候補を取得します。複数語のAND/ORにも対応します。
「シングルモルトに似た商品を10件」
find_similar_foods(query="シングルモルト")明確なOIDから
既知のOIDを詳細情報へ照会し、構成マッチ食品OIDと構成マッチ抽象名を解決します。名称の同名候補を選ぶ必要がなく、再現性の高い指定方法です。
「このOIDと同じような食品を探して」
find_similar_foods(objectid="FO…")構成マッチ抽象名から
parent_keywordで構成マッチ食品の候補を直接検索します。応答のresolution_candidatesを確認し、意図に合う番号をsource_result_indexで選びます。
「牛丼に似た感じで、卵と鶏を使った丼料理」
parent_keyword="丼" → 候補から親子丼を選択{
"name": "find_similar_foods",
"arguments": {
"query": "シングルモルト",
"source_result_index": 0,
"start": 0,
"limit": 10,
"exclude_source": true
}
}{
"source": {"objectid":"FO…","name":"…","yomi":"…"},
"parent_menu": {"objectid":"FO…","name":"ウイスキー"},
"similarity_basis": "same_parent_menu",
"ordering": {"type":"popularity_desc","score_disclosed":false},
"foods": [{"objectid":"FO…","name":"…"}],
"request_id": "…"
}味覚はv2(taste2_)に統一 「比率」は特徴を持つ食材が構成全体に占める割合、「乗算」は該当食材の分量を基にした相対比較用の指標です。辛味の比率順はtaste2_ratio_SPICY、分量に基づく順はtaste2_multiply_SPICYを選びます。各項目のdescriptionを確認し、同じidentifier同士で比較してください。比率と乗算のポイントは同じ尺度で比較しません。データは順次更新中のため、未更新・欠損を0や旧版の値で補完しません。ポイント値や、食材ごとの正確な分量・配合比は提供しません。
辛い順・甘みが強い順
taste2_から始まる味覚identifierをtaste_filtersとtaste_sortへ指定します。0はその味覚なし、正数は強さの相対比較に使いますが、ポイント値自体はMCPから返しません。
「2026年6月以降発売の牛丼を、辛い順に5品」
release_date_from + taste_sort主色・補助色で探す
colorcodeは最大3色の#ffffff形式です。1番目が主色、2・3番目が補助色、3色同一は単色です。primaryまたはanyで照合範囲を選びます。
「赤を主色とする牛丼関連商品」
color_filter.match="primary"フィルターの実行位置
栄養・味覚はexstuff_idN等で内部検索時に適用します。色と発売期間は色項目の存在を上流で絞った後、最大500候補をMCP内で厳密照合します。
味覚値・人気度は検索に使っても数値を公開しません
point_values_disclosed=false{
"name": "search_foods_advanced",
"arguments": {
"query": "牛丼",
"limit": 5,
"include_new": "or",
"release_date_from": "2026-06-01",
"taste_filters": [{
"nutrient_code": "taste2_ratio_SPICY",
"existence": "present"
}],
"taste_sort": {
"field_code": "taste2_ratio_SPICY",
"direction": "desc"
}
}
}{
"name": "search_foods_advanced",
"arguments": {
"query": "牛丼",
"limit": 10,
"color_filter": {
"colors": ["#d74734"],
"match": "primary",
"mode": "include"
}
}
}AIへの伝え方: ツール名を指定しなくても「似た料理」「類似品」「同じような食品」「辛い順」「赤を主色に」のように目的を話せば、AIはdescriptionとschemaから該当ツール・引数を選びます。名称からの類似と、食材条件による逆引きを組み合わせる場合は、find_similar_foodsとfind_foods_by_ingredient_advancedを順に使います。
3ステップで、AIに食品検索を追加。
公開版をChatGPT WorkとGeminiから使う手順です。Claudeやその他のMCPクライアントは手順02の補足を参照してください。フードサーチMCPのAPIキーやユーザー登録は必要ありません。
サーバーを追加
ChatGPTはDeveloper mode、GeminiはConnected AppsまたはCLIを開きます。
URLを登録
公開版のHTTPS URLを設定。Authorizationや資格情報は空欄です。
検索して確認
search_foodsを呼び、食品結果とrequest_idを確認します。
フードサーチ(公開版)Streamable HTTPhttps://mcp.fdb.software/mcp/food/publicなし / No credentialsサーバー追加画面を開く
まず、カスタムMCPを登録できる画面へ移動します。
- Settingsを開く
- Security and loginを選択
- Developer modeをオン
- ChatGPT Pluginsでプラスボタン
Developer modeはアカウントやワークスペースのポリシーにより表示されない場合があります。
- PCでgemini.google.comを開く
- Settings & help → Connected Apps
- 必要ならPersonal Intelligenceを経由
- Custom apps for Spark → Add a custom app
現在は米国・18歳以上・個人Googleアカウント・英語・Keep Activityオン・Spark利用資格が必要です。仕事/学校アカウントは対象外です。
公開版URLを登録する
末尾の/mcp/food/publicまで入力し、認証情報は追加しません。
- 表示名と説明を入力
- Connectionに公開版URLを入力
- Createを選択
- 検出された4 toolsを確認
- MCP server URLを貼り付け
- Advanced featuresへ資格情報を入れない
- Nextを選び画面案内に従う
- 接続アプリと4 toolsを確認
公開版は認証なしです。OAuth Client ID、APIキー、Authorization headerは不要です。
Gemini Sparkが表示されない場合 — Gemini CLIで登録
Gemini CLIはStreamable HTTPのリモートMCPに対応します。次のコマンドはユーザー設定へ公開版を追加します。フードサーチMCPのAPIキーは不要です。
gemini mcp add --scope user --transport http \
food-search-public \
https://mcp.fdb.software/mcp/food/public
gemini mcp list
# ✓ food-search-public: ... (http) - ConnectedClaude・その他のMCPクライアントで登録
Claude(claude.ai・Claudeデスクトップ)は、設定の「コネクタ」から「カスタムコネクタを追加」を選び、名前にフードサーチ(公開版)、URLにhttps://mcp.fdb.software/mcp/food/publicを入力します。認証情報は入力しません(カスタムコネクタを追加できるかはClaudeのプランや組織の設定によります)。Claude Codeは次のコマンドで追加できます。その他のクライアントは、Streamable HTTPのリモートMCPとして同じURLを登録してください。
claude mcp add --transport http food-search-public \
https://mcp.fdb.software/mcp/food/public
claude mcp list「パン」を検索して確認する
@で接続先を明示し、tool、引数、戻り値を順に確認します。
- Personal Pluginsで作成したプラグインをインストール
- ホーム上部をChat → Workへ切替
- 新規Workチャットで
@から選択 - 食品結果とrequest_idを確認
- 新しいSparkチャットを開く
@で接続したアプリを選択- 検索条件と表示項目を具体的に依頼
- 食品結果とrequest_idを確認
秘密値や不要な個人情報を依頼文へ含めないでください。Geminiから接続アプリへ情報が共有される可能性があります。
画面の裏側で送られるJSONと、戻り値
通常のChatGPT/Gemini画面では隠されていますが、両クライアントはtool名と引数をJSON-RPCへ変換し、サーバーの構造化結果を会話や表へ整形します。
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search_foods",
"arguments": {
"query": "パン",
"match": "and",
"start": 0,
"limit": 2,
"include_new": true
}
}
}event: message
data: {
"result": {
"content": [{
"type": "text",
"text": "2件の食品候補を取得しました。\\n\\nMCP結果(JSON):\\n{...食品データ...}"
}],
"structuredContent": {
"query": "パン",
"returned_count": 2,
"foods": [{
"objectid": "FOa5e8edd24951f5074dc2c750",
"name": "つぶあんぱん(セブンイレブン)",
"manufacturer": "セブンイレブン",
"release_date": "2026-08-11",
"specified_nutrition": {
"energy_kcal": 249,
"protein_g": 6.6,
"fat_g": 3.9,
"salt_equivalent_g": 0.4
}
}],
"cache": "miss",
"request_id":
"86e1b6ca-a25a-4b47-a1b6-20f53857375c"
}
},
"jsonrpc": "2.0",
"id": 3
}APIキーを入手できたら高度な食品検索へ
公開版の3ステップに続き、発行済みAPIキーを安全に設定する方法です。ChatGPT WorkはOAuth 2.1の接続画面、固定ヘッダー対応クライアントはAuthorizationヘッダーを使います。利用できるtoolはscopeに応じて最大12(token利用状況のget_token_usageを含む)です。
ChatGPTへ固定キーを渡さず、フードサーチの認可画面でAPIキーを確認して、1時間有効なOAuthアクセストークンへ交換します。更新用トークンは最大30日間有効で、更新のたびにローテーションされるため、通常は自動更新されます。元のAPIキーが先に期限切れになる場合は、その時点までです。
現在利用可能通常はMCP URLを登録すると、GeminiがDynamic Client Registration(DCR)で自身を自動登録します。クライアントID/シークレットの手入力を求められた場合は、フードサーチ管理者が別途発行したOAuthクライアント資格情報を使います。APIキーを代用しません。
現在利用可能--headerを使い、APIキー版URLへ接続できます。以下に秘密値を履歴へ残しにくい登録例を示します。
Claude(claude.ai・デスクトップ・Claude Code)はhttps://mcp.fdb.software/mcp/foodを登録すると、フードサーチの認可画面が開きます(Client ID Metadata Document/動的クライアント登録)。APIキーはその画面だけへ入力します。Claude Codeはclaude mcp add --transport http food-search https://mcp.fdb.software/mcp/foodで追加し、/mcpから認証します。固定ヘッダーに対応するクライアントはAuthorization: Bearerでも接続できます。
フードサーチ(APIキー版)Streamable HTTPhttps://mcp.fdb.software/mcp/foodChatGPT: OAuth 2.1 / 直接接続: BearerChatGPTの会話欄、URL、名前、説明、スクリーンショット、Git、問い合わせ本文には貼りません。完全なキーは発行時だけ表示されます。漏えいが疑われる場合は、管理者へ停止・再発行を依頼してください。
発行内容を確認する
キーを入力する前に、利用者情報と利用条件を確認します。
発行時に一度だけ表示。安全な保管先へ保存。
food:advancedなど、用途に必要なscopeを確認。
開始日・終了日と、期限切れ前の更新方法を確認。
課金中・課金期間切れ・未課金のどれかを確認。
契約状態別の上限と、必要ならRPM設定を確認。
接続後のtools/listには、そのキーのscopeで許可されたtoolだけが表示されます。最大12 toolが常に出るという意味ではありません。追加契約対象のsearch_foods_by_nutrient_rangeは表示されても現在は実行できません。
クライアントに認証を設定する
APIキーを会話に貼り付けず、対応する認証経路に設定します。
- 認証付きMCPとして上記URLを登録し、Connectを選ぶ
- 開いたフードサーチ認可画面だけに、発行済みAPIキーを入力する
- 表示されたscopeと接続先名を確認し、接続を許可するを選ぶ(接続元が要求した範囲のうち、入力したキーに付与されている範囲だけが許可されます)
- ChatGPTへ戻ったら、
tools/list相当の検出結果で利用可能なtoolを確認する
OAuth 2.1連携を提供中: 認可コード+PKCE(S256)、Client ID Metadata Document(CIMD。ChatGPT等が優先利用)と動的クライアント登録、1時間のアクセストークン、ローテーション式の更新トークンに対応します。APIキー本体はChatGPTへ送信されません。
OpenAI公式の認証仕様を確認 ↗https://mcp.fdb.software/mcp/foodAuthorizationBearer ••••••••••••••••Spark Webでは、まずMCP URLだけでDCRによる自動登録を試します。OAuth Client ID/Client Secretの手入力を求められた場合は、フードサーチ管理者から発行されたOAuthクライアント資格情報を入力します。フードサーチAPIキーは、接続後に表示されるフードサーチ認可画面だけへ入力してください。固定Authorizationヘッダー方式が明示される場合やGemini CLIではBearer接続も利用できます。
read -rsp "Food Search API key: " FOODSEARCH_MCP_API_KEY
printf '\n'
gemini mcp add --scope user --transport http \
--header "Authorization: Bearer $FOODSEARCH_MCP_API_KEY" \
food-search-key \
https://mcp.fdb.software/mcp/food
unset FOODSEARCH_MCP_API_KEY
gemini mcp listコマンド履歴にキー本体を直接書かない例です。登録後は展開されたヘッダーが~/.gemini/settings.jsonへ保存されるため、このファイルを共有せず、所有者だけが読める状態を維持してください。
高度検索を呼び、権限と結果を確認する
ChatGPT Work、Gemini CLI、または対応クライアントから、scopeが必要なtoolを1件試します。
APIキー版のsearch_foods_advancedで、最近のコンビニ商品のうちカルシウムが多いものを上位10品。名称・OID・メーカー・発売日・重量・カルシウムを表にして。
確認するポイント
tools/listで目的のtoolが見え、実行結果に食品候補とrequest_idが含まれれば接続成功です。
search_foodsget_food_detailcompare_foodssearch_foods_advanced…scopeに応じ最大12scope外のtoolはtools/listに表示されず、呼ぶとJSON-RPCエラー「Tool … not found」になります。HTTP 403は返りません。
Authorization: Bearer <YOUR_FOOD_SEARCH_API_KEY>
{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": {
"name": "search_foods_advanced",
"arguments": {
"query": "コンビニ",
"limit": 10,
"rank_by_nutrient": {
"nutrient": "カルシウム",
"direction": "desc"
},
"recent_days": 365
}
}
}同じキーでも、管理者がscope、期限、課金状態、有効スイッチ、上限を変更すると利用可能なtoolや応答が変わります。問い合わせ時はキー本体ではなく、キー名・key ID・発生時刻・request_idを伝えてください。
ツール名を知らなくても、目的を話せばいい。
曖昧なときはAND/OR、最近の商品を含むか、件数を添えると安定します。英語で依頼した場合も、AIは日本語の食品検索語と英語名を組み合わせて確認できます(英語名i18n_name_enの取得はトライアル・APIキー版)。
「冷製 パスタ」をAND検索し、最近の商品も含めて上位10件を表にして。
search_foodsこのOIDの概要を取得し、主要栄養値を読みやすくまとめて。
get_food_summary「有塩バター」の食材候補を探し、食品成分表に対応するか示して。
search_ingredients最近発売されたコンビニのパスタで、卸売原価指数が低い順に10商品を教えて。
search_foods_advanced / APIキー検索結果を、比較・整理・説明に生かす
MCPがデータベースから構造化データを取得し、AIが目的に沿って表、差分、要約にまとめます。単に食品名を見つけるだけでなく、同じ条件にそろえて考えるところまでを一つの会話で進められます。

同じ食品名の候補を比べる
名称検索で候補のOIDを取得し、比較toolで差がある栄養値・重量・素材を揃えます。
「木綿豆腐を3件探し、重量とエネルギー、たんぱく質の差を比較して」
- 名称検索
- OIDで比較
- 差の表
search_foods → compare_foods200 kcal以下から選ぶ
栄養上限をデータベース検索時に適用し、取得した候補をAIが少ない順の表と短い所見へ整えます。
「牛丼を200 kcal以下に限定し、重量とkcalを少ない順で5件」
- kcal上限で検索
- 少ない順
- 表+所見
search_foods_advanced → AIによる表・要約材料を起点に料理を探す
食材OIDを確定してから、その食材を含む料理を栄養やメーカー等の条件と組み合わせて逆引きします。
「玉ねぎを含む料理から、食塩相当量の条件に合う候補を探して」
- 食材OID確定
- 条件つき逆引き
- 候補一覧
search_ingredients → find_foods_by_ingredient_advanced似た食品の中身の違いを読む
全食材の有無を内部で比較し、違いがあった場合は各食品の差分食材を内部重量順で上位3件だけ提示します。差分の判定に食材の重量・割合は使いません。
「この3食品を栄養値と食材差分で比較し、違いを説明して」
- 全食材の有無
- 差分3件まで
- 違いの説明
compare_foods複数テーマを同じ形式へ
複数の独立した検索を一括実行し、AIがメーカー・発売日・栄養値を共通の列へ正規化します。
「豆腐、納豆、豆乳を各5件検索し、比較できる一つの表にして」
- 一括検索
- 列をそろえる
- 横断表
batch_search_foods → AIによる横断表独自の掛け合わせで市場を探る
名称、栄養範囲、メーカー、カテゴリを組み合わせ、狭いテーマの候補群と分布を調べます。
「高たんぱく×200 kcal以下の商品を探し、容量帯とメーカー別に整理して」
- 複合条件
- 分布を見る
- 仮説メモ
search_foods_advanced → AIによる分布・仮説新商品と既存商品を並べる
本日登録された候補を含め、発売日・登録量・栄養値を既存候補と同じ軸でそろえます。
「最近の大豆系商品を含め、既存候補との差が分かる企画メモにして」
- 新商品を含む
- 同じ軸で比較
- 企画メモ
search_foods_advanced / include_new → compare_foods分析を伝わる形に変える
MCPの根拠データをもとに、対応AIクライアントが図、イラスト、Webページ、動画用の構成として展開します。
「比較結果を経営会議向けの図解Webページと、30秒動画の構成案にして」
- 根拠データ
- Web/図
- 動画構成
MCP structuredContent → AI client output最近の商品を卸売原価指数で並べる
名称・発売期間で候補を絞り、卸売原価指数が算出できる食品を低い順または高い順に並べます。複数OIDならcompare_foodsでも指数差を、get_food_detailなら直近約4週間の日次推移を確認できます。指数は絶対額ではありません。
「最近発売されたコンビニのパスタで卸売原価指数が低い順に10商品」
- 候補を絞る
- 指数で並べる
- 推移・順位
search_foods_advanced / rank_by_cost公式表示値だけで並べ、推定値と分けて示す
official_values_only=trueを指定すると、並べ替えに使う栄養項目が商品の公式栄養成分表示の値である食品だけで順位を付けます。推定値の候補は、include_value_sources=trueで返るofficial_value_fieldsに含まれない値(IMDの推定値)として、別枠で示せます。
「コンビニのサラダチキンを、たんぱく質の公式表示値だけで多い順に。推定値は別に示して」
- 公式値で限定
- 多い順に並べる
- 公式/推定を分けた表
search_foods_advanced / official_values_only + include_value_sources主な食材の目安分量で中身をつかむ
include_ingredient_amounts=trueを指定すると、分量の多い順に上位3食材(水を除く)へ、食品1単位あたりの目安分量approx_amount_gが付きます。値は知的財産保護のため丸めた目安(1 g未満はそのまま・10 g未満は2 g刻み・100 g未満は10 g刻み・それ以上は50 g刻み)で、実際の分量とは刻み幅程度前後します。1食材につき標準20 token(1食品最大60 token)を追加で消費するため、必要なときだけ使います。
「このビーフシチューの主な食材を、目安の分量つきで上位3つ」
- 食品を特定
- 上位3食材+目安量
- 中身の説明
get_food_detail / include_ingredient_amounts明示的に比較toolを呼ぶJSON
開発者は検索で得たOIDをcompare_foodsへ渡します。AIクライアントからは同じ内容を自然文でも指定できます。
{
"name": "compare_foods",
"arguments": {
"objectids": [
"FOd5c4d1bb498bc09e0c0be3ce",
"FO96d3ab925e781b3718f92cb7",
"FOe6ad21704a442a3c1a6498ea"
]
}
}AIへ任せる場合の具体的な会話
次のように目的と比較条件を一度に伝えると、AIは利用可能なtoolから検索と比較を組み立てます。
木綿豆腐を3件検索してください。
候補のOIDを使って比較し、
・重量
・エネルギー
・たんぱく質
・脂質
の差が分かる表にしてください。
最後に、比較単位が異なる場合の注意も添えてください。想定するtool連携:search_foodsで候補を確定 → compare_foodsで構造化差分を取得 → AIが根拠値を保った表と説明を作成。
分析結果の扱い: compare_foodsは全食材のOID有無を内部で比較し、違いがある場合は各食品について内部重量順の上位3食材だけを提示します。差分の判定に食材の重量・割合は使いません。分量の目安が必要なときだけinclude_ingredient_amounts=trueを指定すると、各食品の上位3食材(水を除く)に丸めた目安分量が付きます。卸売原価指数は食材構成を公的市場の卸売価格で按分合算した相対指数で、絶対額ではなく、調理、人件費、企画・製造、物流、販売、広報・広告、返品、廃棄等を含む現実のコストではありません。
製造・流通様向け特集
食品メーカーの商品企画、流通・食材の商品企画・営業の皆さまへ。いつものAIに聞くだけで、表・グラフ・資料の下書きまでできる様子を、10の活用事例と図解でご紹介します。
- 1こう聞く
- 2AIが調べる
- 3できあがり
食品メーカー 商品企画ご担当者様へ社内プレゼンの材料が、会話でそろう5つの事例を見る
流通・食材 商品企画・営業ご担当者様へ社内の検討にも、取引先への提案にも5つの事例を見る
フードブラウザをお使いの方もフードブラウザとの違いと、使い分け違いを見る 実際に、公開版MCPへ聞いてみた。
説明用の架空データではありません。公開endpointへsearch_foodsを送信して取得した上位3件の一部です。
木綿豆腐(1個150g)
ほかに150 gと200 gの候補も同じ応答で取得。重量をそろえた比較へつなげられます。
OID: FOd5c4d1bb498bc09e0c0be3ce · request_id: eea00975-f8d3-49f0-a51d-728f9bd1b6abカレーライス(牛肉とジャガイモと人参、ご飯付)
少量235 gの候補も取得。市販商品だけでなく一般料理の比較にも使えます。
request_id: 110e78b8-420d-451f-8a77-3d912cb6e17eマイプロテインバー バニラ味(1本)(ドルチェ)
チョコレート味、トップバリュ商品を含む3候補を同一形式で取得。
request_id: c4348aa0-906a-4366-8311-98c917a8b01funit_gと一緒に読み、検索順位を人気や市場シェアと解釈しないでください。信頼の工程と使う前に理解する注意
公式表示値、独自レシピから算出する理論値、有人確認と内部監査を区別して見える化。AIが根拠を扱いやすい構造へ整えて届けます。
データがAIへ届くまで
栄養項目と識別子の一覧
MCPのnutrient_code、field_code、response_fieldsには、食品検索APIと共通のidentifierを使います。名称、その項目が意味する内容、単位、カテゴリと一緒に検索できます。
| 名称 | 説明(description) | identifier | 単位 | カテゴリ名 | カテゴリ識別子 |
|---|
該当する項目はありません。
公開中の識別子マスターを読み込んでいます。
自然文から、JSONへ。JSONから、会話へ。
AIクライアントはツールのschemaを読み、自然文をJSON-RPCのtools/callに変換します。サーバーは短い説明と構造化データを返します。
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {
"name": "example-ai-client",
"version": "1.0.0"
}
}
}{
"result": {
"tools": [
{
"name": "search_foods",
"title": "食品名称検索",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"match": {
"type": "string",
"enum": ["and", "or"],
"default": "and"
},
"start": {
"type": "integer",
"minimum": 0,
"default": 0
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"default": 10
},
"include_new": {
"type": "boolean",
"default": true
}
},
"required": ["query"]
}
},
{ "name": "get_food_summary" },
{ "name": "search_ingredients" }
]
}
}{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search_foods",
"arguments": {
"query": "パン",
"match": "and",
"start": 0,
"limit": 2,
"include_new": true
}
}
}{
"result": {
"content": [
{
"type": "text",
"text": "2件の食品候補を取得しました。"
}
],
"structuredContent": {
"query": "パン",
"returned_count": 2,
"foods": [
{
"objectid": "FOa5e8edd24951f5074dc2c750",
"name": "つぶあんぱん(セブンイレブン)",
"manufacturer": "セブンイレブン",
"release_date": "2026-08-11",
"specified_nutrition": {
"energy_kcal": 249,
"protein_g": 6.6,
"fat_g": 3.9,
"salt_equivalent_g": 0.4
}
}
],
"cache": "miss",
"request_id":
"2766770f-6d10-4637-af94-15e9b97054c3"
}
}
}SSE応答では同じJSONがevent: messageのdata:行へ入ります。独自クライアントはJSONとSSEの両方を処理してください。
開発者なら標準SDKですぐ試せる
公開版には認証情報を付けません。以下は公式MCP SDKのStreamable HTTPクライアントでsearch_foodsを呼ぶ最小例です。
Node.js / TypeScript SDK
npm install @modelcontextprotocol/client 後に実行します。このコード形は同日、公開endpointへの実接続で検証済みです。
import {
Client,
StreamableHTTPClientTransport
} from "@modelcontextprotocol/client";
const url = new URL(
"https://mcp.fdb.software/mcp/food/public"
);
const client = new Client({
name: "food-search-example",
version: "1.0.0"
});
await client.connect(
new StreamableHTTPClientTransport(url)
);
const result = await client.callTool({
name: "search_foods",
arguments: {
query: "カレーライス",
match: "and",
start: 0,
limit: 3,
include_new: true
}
});
console.log(result.structuredContent);
await client.close();Python SDK
pip install mcp 後に実行します。戻り値のstructuredContentをアプリ側の型へ検証してから利用してください。
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import (
streamable_http_client,
)
URL = "https://mcp.fdb.software/mcp/food/public"
async def main():
async with streamable_http_client(URL) as (
read_stream, write_stream, _
):
async with ClientSession(
read_stream, write_stream
) as session:
await session.initialize()
result = await session.call_tool(
"search_foods",
arguments={
"query": "カレーライス",
"match": "and",
"start": 0,
"limit": 3,
"include_new": True,
},
)
print(result.structuredContent)
asyncio.run(main())SDK APIは更新されるため、導入時はTypeScript SDK公式ガイド/Python SDK公式例も確認してください。料金・SLA・商用条件・利用項目は運用窓口へ個別に問い合わせてください。
(参考) レスポンスコードを確認してみる
0とnull、0件と障害、食品概要と主要食材参照を区別すると、AIの説明がより正確になります。
objectidFOから始まる全26桁のOID。食材・食品・商品を同じ空間で一意に識別。
specified_nutrition主要栄養値(エネルギー・たんぱく質・脂質・炭水化物・食物繊維・食塩相当量・ナトリウム)。各値が公式表示値か推定値(理論値)かは、include_value_sources=trueのofficial_value_fieldsで確認。
major_ingredients分量の多い順に上位3件までの主要食材(OIDと名称)。include_ingredient_amounts=trueのときだけ、水を除いた上位3食材に丸めた目安分量approx_amount_g(食品1単位あたりのg。1 g未満はそのまま・10 g未満は2 g刻み・100 g未満は10 g刻み・それ以上は50 g刻み)が付きます。
ingredient_amounts_disclosed常にfalse。正確な分量・重さ・配合比を開示しないことを示します。目安分量approx_amount_gを返す場合もfalseのままです。
official_value_fields返した値のうち、商品の公式栄養成分表示の値である項目名(energy_kcalなど)。含まれない栄養値はIMDの推定値。include_value_sources=trueのときだけ返します。
request_id障害問い合わせでログと照合する識別子。
item_count該当件数。MCP内で照合(卸売原価指数・色・発売日・検索補完)した場合は、上流候補(最大500件)のうち条件に合った件数。returned_countと分けて確認。
returned_count今回の応答に含まれる件数。
filters_applied_upstream栄養条件をすべて上流の検索で適用したときtrue。検索索引に無い項目をMCPが詳細データで補って絞り込んだときfalse(search_supplementが付く)。卸売原価指数・色・発売日のMCP内照合ではtrueのまま。
cachehit / miss / mixed(複数の照会でcache利用が混在)。検索結果の正誤を表す値ではありません。
null不明・値なし。数値の0とは異なります。
エラーは3種類で届きます。HTTPエラーはMCP接続そのものの失敗です。tool結果のエラーはHTTP 200のままisError: trueとstructuredContent.error.code・request_idで返ります。JSON-RPCエラーはtool名や引数の型がschemaに合わない場合です。scope不足や追加契約でHTTP 403が返ることはありません。
| 症状・コード | 意味 | 利用者の対処 |
|---|---|---|
| HTTP 404 / 405(GET) | URL相違またはブラウザー直開き | 完全なURLをMCPクライアントへ登録 |
HTTP 401 UNAUTHENTICATED | APIキーなし・無効・期限切れ | Bearer形式とキー状態を確認 |
| HTTP 413 | 要求本文が256 KiBを超えた | 引数(検索語・OID・条件)の量を減らす |
HTTP 429 RATE_LIMITED | 公開版の適応型制御、RPM、またはJST日次上限 | Retry-Afterまで停止し、並列数とページ走査を減らす |
HTTP 503 UPSTREAM_UNAVAILABLE | 管理者による運用の一時停止、公開版の停止、再起動・一時障害 | トップページの運用状況を確認し、少し待って再試行。連打しない |
| HTTP 502 / 504 | 入口・上流の一時障害 | 少し待って再試行 |
tool結果 ADDITIONAL_CONTRACT_REQUIRED | 対象toolに別契約が必要で現在利用不可 | 契約可否を問い合わせ、利用可能な代替toolを確認 |
tool結果 TOKEN_EXHAUSTED | 今週または今月のtoken残量が0以下 | get_token_usageか利用状況の確認で残量とリセット日を確認し、補充またはリセット日まで待つ |
tool結果 INVALID_ARGUMENT | 引数の組合せ・範囲が不正(例: バッチの件数合計が上限超え、構成食材検索への発売日条件) | メッセージのとおり引数を直す |
tool結果 DETAIL_ONLY_FIELD | 上流の検索索引に無い項目をpriority_slotsへ指定 | get_food_detailのresponse_fieldsで取得するか、nutrient_filters・sortへ指定し直す |
tool結果 NOT_FOUND | 類似検索の起点となる食品が見つからない | 起点の名称・OIDを見直す |
tool結果 FORBIDDEN | 公開版でinclude_new=falseを指定 | 公開版では新商品を除外できない。APIキー版を使う |
tool結果 UPSTREAM_* | 上流通信・応答障害 | 0件扱いせずrequest_idを添えて問い合わせ |
| JSON-RPC -32602「Tool … not found」 | キーのscope外のtool(tools/listに表示されない) | 必要scopeを運用窓口へ確認 |
| tool結果「Input validation error: …」 | 引数の型・形式がschemaに合わない。error.code・request_idは付かない | メッセージの項目名と条件のとおり引数を直す |
よくある質問。
なぜ一般的なAIだけではなく、フードサーチMCPが必要ですか?
AIは、参照した根拠が誤っていたり曖昧だったりすると、一見もっともらしくても、誤った答えを返すことがあります。フードサーチMCPは、IMDが作成・確認・監査した食品データをOID、重量、取得時刻等とともに構造化して渡し、根拠データの不確かさを補います。ただし、AIの推論や最終回答が常に正しいことを無条件に保証するものではありません。
パッケージにない栄養素が、なぜ分かるのですか?
表示栄養値、商品・画像等の情報をもとに、IMD専属管理栄養士らが監修した独自レシピを作成します。日本食品標準成分表に準拠した食材と量で調理をデジタルに再現し、表示値との差が極力小さくなるよう調整したうえで、日本食品標準成分表に基づく栄養計算により、未表示の栄養項目を理論値として算出するためです。詳しくはIMDの栄養値算出方法をご覧ください。
栄養値は実測値ですか、推定値ですか?
両方を区別して収録します。メーカー・外食等が表示している栄養項目はその公式表示値、表示されていない項目は独自レシピと日本食品標準成分表を根拠に算出した理論値(推論値)です。後者を直接の実測値とは扱いません。
ITや栄養の専門知識がなくても使えますか?
はい。普段のことばで目的を伝えると、対応AIクライアントが日本語のdescriptionとschemaを読み、利用可能なツール(tool)と引数を選びます。従来必要だったAPI操作やデータ整形をMCPとAIが仲立ちします。ただし、医療判断や専門的な栄養指導の最終判断は専門家へ相談してください。
スマートフォンから使えますか? 図や動画にもできますか?
接続先を登録できる対応AIクライアントであれば、スマートフォンから利用できます。MCPは根拠となる構造化データを返し、その後の表、グラフ、図、イラスト、Webページ、動画等への変換はAIクライアントの機能と利用条件に依存します。
公開版は認証なしで使えますか?
はい。個人・法人を問わず、Streamable HTTP対応クライアントへ公開URLを登録して試せます。公開版は対話的な通常利用向けです。「適応型fair-use制御」がMCPの呼び出し回数、異なる検索語・OIDの連続取得、ページ走査、要求候補数等を総合的に評価し、IPアドレスだけでは遮断しません。自動収集、網羅取得、スクレイピング、継続的なバッチ処理には使用せず、まとまった取得にはAPIキー版を申請してください。継続提供や商用要件の保証はありません。
「適応型fair-use制御」とは何ですか?
公開版を多くの方が公平に試せるよう、MCPの呼び出し回数、異なる検索語・OIDの連続取得、startを進めるページ走査、要求候補数等を総合的に評価する仕組みです。通常の対話利用を超える集中取得と判定した場合は、一時的に遮断することがあります。制限時はHTTP 429と、再試行までの秒数を示すRetry-After、判定状態を示すX-Foodsearch-Fair-Useを返します。指定された時間まで呼び出しを止め、並列実行、ページ走査、要求件数を減らしてください。
公開版の検索件数とstart・limitの制限は?
startは結果の開始位置(0始まり)、limitはその位置から返す件数です。公開/無償版のsearch_foodsは1回最大10件で、先頭50件の範囲だけを参照します。たとえばstart=20, limit=10は10件、start=45, limit=10は50件目未満までの5件、start=50以上は0件です。search_ingredientsも1回最大10件・位置0~49の範囲で、同じstart・limit規則を適用します。get_food_summaryはOIDを指定する1件取得で、limitはありません。内部検索APIとAPIキー版の検索は1回最大500件です。
40万件すべてをMCPで検索できますか?
40万件超はIMD食品データベース基盤全体の公表規模です。実際に取得できるデータは、検索語、ツール(tool)、公開版/APIキー版、契約scope、更新状況により異なり、すべての項目・レコードの取得を保証する表現ではありません。
トライアルAPIキーはどのようなものですか?
申請フォームやメール確認なしで即時発行し、公開版では使えない高度な検索機能を当日中だけ試せるキーです。自動発行ではMCPのtools/callをJSTの1日10回、1応答の食品・商品を最大5件まで利用できます。接続初期化とtools/listは10回に含みません。
トライアルAPIキーを再発行できますか?
IPv4アドレスまたはIPv6の/64プレフィックスごとにJSTの1日1回です。同じブラウザーは完全キーと発行事実をlocalStorageへ当日中だけ保存し、別回線へ移動しても同じキーを再表示します。サイトデータを削除すると完全キーは復元できず、同じネットワークから当日中に再発行もできません。共有端末では利用後にサイトデータを削除してください。
食材構成情報の分量は取得できますか?
上位3食材のおおよその分量(目安)に限り、指定したときだけ取得できます。トライアル・APIキー版のget_food_detailまたはcompare_foodsでinclude_ingredient_amounts=trueを指定すると、分量の多い順に上位3食材(水を除く)の目安分量approx_amount_g(食品1単位あたりのg)を返します。値は知的財産保護のためにIMD食品データベース側で丸めた目安で、1 g未満はそのまま、1 g以上10 g未満は2 g刻み、10 g以上100 g未満は10 g刻み、100 g以上は50 g刻みです。たとえば「150」は「およそ150 g」、「30」は「およそ30 g」を表し、実際の分量とは刻み幅程度前後するため、合計や比を正確な配合として扱わないでください。目安分量は1件につき標準20 token(1食品最大60 token)を追加で消費するため、必要なときだけ指定してください。全食材構成、食材件数、正確な分量・重さ・配合比、4番目以降の食材や水の分量は、公開版・トライアル版・APIキー版とも提供しません。分量を公開しないのは知的財産を保護するためで、栄養値の根拠が欠けているわけではありません。栄養値は、日本食品標準成分表(八訂)に準拠した食材構成をもとにIMD専属管理栄養士らが監修したレシピから算出した推定値、または商品の公式栄養成分表示の値です。compare_foodsの食材差分は引き続きOIDの有無だけで判定し、分量や割合は比較しません。
原価で検索・比較できますか?
「原価」そのものは提供していません。代わりにAPIキー版のsearch_foods_advancedでrank_by_costを指定すると卸売原価指数(wholesale_cost_index)の順に検索でき、compare_foodsで複数OIDの指数差を、get_food_detailで基準日と直近約4週間の日次履歴を確認できます。卸売原価指数は、食品の食材構成を分解し、各食材の公的市場の卸売価格を分量で按分して合算した相対指数で、市場で取引のない時期は最終取引値を継続参照します。絶対額ではなく時間軸での変動を見る参考情報であり、調理、人件費、企画・製造、移動・物流、販売、広報・広告、返品、廃棄等のコストは含まず、現実の製造原価、売上原価、販売価格、利益を示す値ではありません。指数がない候補はランキングから除外します。旧identifier materialcostは廃止しました。
英語で食品を検索できますか?
はい。英語の依頼では、MCPの利用説明がAIへ「食品名を自然な日本語検索語へ変換し、i18n_name_enも取得して日本語名との整合性を確認する」手順を案内します。英語名の取得(response_fieldsへのi18n_name_en指定)はトライアル・APIキー版で使えます。公開版は日本語名だけです。英語名がない場合はAIが補足翻訳できますが、その場合はデータベース収録名ではなくAIによる翻訳だと区別します。
「似た料理」「類似商品」は探せますか?
はい。APIキー版のfind_similar_foodsが、名称・既知OID・構成マッチ抽象名のいずれかから構成マッチ食品OIDを解決し、同じ構成マッチ食品OIDに属する料理・食品・商品を人気順で返します。人気度は並び順だけに使用し、その数値は返しません。起点候補が複数ある場合はresolution_candidatesを確認し、source_result_indexで選択してください。
味覚や色で検索できますか?
APIキー版のsearch_foods_advancedとfind_foods_by_ingredient_advancedで利用できます。味覚はtaste2_から始まるidentifierを相対的な強さのfilter/sortに使いますが、味覚ポイント値は返しません。色は最大3つのカラーコードを持ち、1番目を主色、2・3番目を補助色、3色同一を単色として照合します。色と発売期間は上流候補最大500件の範囲でMCP内照合します。発売期間の条件はsearch_foods_advancedだけで使えます(構成食材から逆引きできる食品には発売日の情報がないため)。
「200 kcal以下」のように絞り込めますか?
はい。APIキー版でfood:advanced scopeを付け、search_foods_advancedのnutrient_filtersへstuff_eの上限200を指定します。名称と数値条件は上流データベース検索時に同時適用されます。公開版のsearch_foodsは従来どおり名称・キーワード検索です。
アレルゲン情報は?
商品についてコンタミネーションによる影響も想定されるので、IMDでは情報を収集していますが一般ご提供は致しておりません。
栄養値はそのまま判断に使えますか?
栄養値は重量、値の種別、取得時刻を併記し、商品についてはメーカーの最新表示も確認してください。医療診断、治療、服薬、摂取可否の最終判断には使用しないでください。
APIキー、料金、SLAはどこで確認できますか?
問い合わせフォームから、利用者名、所属、用途、必要scope、想定件数、利用期間、必要SLAを伝えて申請してください。本MCPの条件とIMDデータベース直接APIの契約は別です。完全キーは発行時だけ表示されます。
ブラウザーでMCP URLを開いても検索画面が出ません。
MCP endpointはWeb検索画面ではありません。この概要サイトで情報を確認し、実際の検索はMCPクライアントから行います。
0件と障害はどう見分けますか?
0件はreturned_countが0の正常応答です。UPSTREAM_TIMEOUTなどは障害で、retryableとrequest_idが付きます。
公開版に詳細・比較ツールが見えません。
正常です。APIキー版とfood:detail、food:recipeなど必要なscopeを申請してください。
JANコードで検索できますか?
できません。コンビニ商品がJANへ対応していない運用条件のため、本MCPはJAN検索とJAN関連項目を提供しません。
429が続くのはなぜですか?
「適応型fair-use制御」が、MCPの呼び出し回数、異なる検索語・OIDの連続取得、ページ走査、要求候補数等から通常の対話利用を超える取得パターンを検出したか、サービス全体の非常上限に達したためです。レスポンスにはHTTP 429、Retry-After、X-Foodsearch-Fair-Useが含まれます。Retry-Afterで示された時間まで呼び出しを止め、並列実行、ページ走査、要求件数を減らしてください。IPアドレス単独の判定ではありません。継続利用、まとまった取得、定期処理にはAPIキー版を申請してください。
画像はありますか?
商品の画像は権利元・隣接権利元様への申請と許諾が必要であり、権利上利用できないと認識しています。但し、IMD 食品データベースでは全ての OID に対して、一般カテゴリとは異なる手法で構成マッチ食品OIDと構成マッチ抽象名を付与してきましたので、構成マッチ食品の抽象画像を今後ご提供することで、レファレンスとしてはご活用頂けるかと考えております。ご希望があればお問い合わせください。
レスポンスが遅い・繋がらない
この FAQ を作成している段階ではそのようなことはありませんが、この MCP サーバーは sakura インターネットの VPS を利用しており、弊社独自でも外部から稼働状況を監視しておりますので、負荷が大きくなった場合には増強や、ヘビーユーザなどに対する制限を検討致します。ただ、その場合には無償公開を制限したりスペックダウンを視野にすることもあり得ますので、公開維持のために効率的で合理的な自制的ご利用をぜひお願い致します。法人様で SLA などをお求めの方は、弊社へお問い合わせください。有償となりますが、貴社占有 VPS をご提供することも対応は可能です。(恐れ入りますが、特に日本法人ではない場合においては、要審査とさせて頂いております)
APIキーが漏れた可能性があります。
直ちに問い合わせフォームから無効化または削除を依頼してください。問い合わせ本文へ完全なキーを貼らないでください。
問い合わせは、
“再現できる情報”と。
有料プラン(APIキー)のお申し込みはお申し込みフォームから、そのほかのご相談はIMDの問い合わせフォームからお送りください。お申し込み後の受付状況やご契約内容は、お申し込み・ご契約状況の確認でご確認いただけます。
問い合わせフォームを開く →完全なキー・Authorization・Cookieは送らない

トライアルAPIキーを、今すぐ発行
公開/無償版より多くの検索機能を、申請フォームなしで当日中だけ試せます。発行はIPv4アドレス、またはIPv6の/64プレフィックスごとに1日1回です。
本日のトライアルキー
ボタンを押すと、この接続元へ直ちに発行します。メールアドレスの登録は不要です。
未発行です
この画面で即時発行
IPv4はアドレス単位、IPv6は割り当てプレフィックス/64単位で、本日1回だけ発行します。
ブラウザが当日中保存
キーと発行事実をlocalStorageへ保存。同じブラウザでは別回線でも再発行せず、同じキーを再表示します。
AIクライアントへ接続
MCP URLはhttps://mcp.fdb.software/mcp/food。ChatGPTはOAuth、対応クライアントはBearerで接続します。
ChatGPT Work
MCP URLにhttps://mcp.fdb.software/mcp/foodを登録し、OAuth認可画面で発行済みのトライアルAPIキーを入力します。
Gemini / Bearer対応クライアント
同じMCP URLを登録し、AuthorizationのBearer tokenとしてトライアルAPIキーを設定します。OAuthに対応する場合はOAuthも利用できます。
APIキーのtoken利用状況を確認
トライアルAPIキー、通常APIキーのどちらでも、今週・今月の利用可能割合、利用状況、残り割合とリセット日、APIキーの有効期限を表示します。キーはこのブラウザからこのサイトへ直接送信し、URLに含めず保存もしません。お申し込みから発行したAPIキーは、受付番号またはAPIキーと申込メールアドレスで、状況確認ページからプラン・キーの状態・課金状態・本日の呼び出し回数も確認できます。
お申し込み・ご契約状況の確認 →キーはこのサイトとブラウザの同一オリジンにだけ保存されます。共有端末では使用後にサイトデータを削除してください。発行元と利用状況は、不正利用防止と運用確認のためログへ記録します。
