Open Food Facts MCP Server について
Open Food Facts MCP Server は、Open Food Facts のデータベースを AI アシスタントに接続し、商品検索、バーコード照会、栄養スコア、アレルゲン確認、価格照会を提供します。食品の成分や栄養情報を必要とする消費者や開発者を想定しています。
主な機能
- 01名前、ブランド、カテゴリーによる商品検索
- 02バーコードによる商品詳細の照会
- 03Nutri-Score と Eco-Score の評価取得
- 04アレルゲンと添加物の確認
- 052 商品の比較と AI による分析
- 06Open Prices の価格履歴の照会
活用シーン
- 01商品に牛乳やグルテンが含まれるかの確認
- 022 種類の飲料やスナックの栄養成分の比較
- 03手元の食材を使ったレシピ案の取得
MCP 対応
食品の検索、評価、価格のツールを AI アシスタントに公開し、ガイドのリソースやプロンプトも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Open Food Facts MCP サーバー
これは、Open Food Facts 向けの Model Context Protocol(MCP)サーバー実装です。公式の Model Context Protocol 仕様を使用し、AI アシスタントが食品の栄養分析、製品の比較、レシピの提案などの食品情報にアクセスできるようにします。
食品に関心のある消費者にとってのメリット
この MCP サーバーでは、次のことができます。
- 栄養に関する分析:食品の栄養分析や、健康への影響について、AI による分析を得られます
- 情報に基づく選択:製品を比較し、より良い食生活の選択に役立てられます
- レシピのアイデア:手元にある製品をもとに、レシピを見つけられます
- 食事に関するサポート:アレルゲン、添加物、食事制限への適合性について確認できます
利用可能なツール
基本的な製品ツール
- searchProducts:製品名、ブランド、カテゴリー、その他のキーワードで Open Food Facts データベース内の製品を検索します
- getProductByBarcode:バーコード(EAN、UPC など)を指定して、製品の詳細情報を取得します
- analyzeProduct:食品の栄養分析を AI によって取得します
- compareProducts:2 つの製品を比較し、AI による分析情報を得られます
- suggestRecipes:製品を使ったレシピの提案を AI によって取得します
カテゴリーと検索のツール
- searchByCategory:特定の食品カテゴリー(飲料、スナック、乳製品、シリアルなど)の製品を検索します
- searchByBrand:特定のブランドの製品をすべて検索します
- advancedSearch:カテゴリー、ブランド、Nutri-Score、Eco-Score、NOVA グループ、アレルゲンを含まない選択肢、ラベル、国など、複数のフィルターを使って製品を高度に検索します
- autocomplete:カテゴリー、ブランド、ラベル、原材料、アレルゲン、添加物の入力候補を取得します
栄養と健康に関するツール
- getNutriScore:製品の Nutri-Score 評価(A~E)を取得します。一目で健康状態を把握できます
- getEcoScore:製品の Eco-Score(環境への影響の評価、A~E)を取得します
- getAdditivesInfo:製品に含まれるすべての添加物と、その E 番号および NOVA 加工レベルを一覧表示します
- getAllergenCheck:製品に特定のアレルゲン(グルテン、乳、卵、ナッツ、ピーナッツ、大豆、魚、甲殻類など)が含まれているかを確認します
- checkMultipleAllergens:製品に複数のアレルゲンのいずれかが含まれているかをまとめて確認します
AI による分析ツール
- getProductAIQuestions:人による確認が必要な、製品についての AI 生成の質問を取得します
- getRandomAIQuestions:人による確認が必要な、Robotoff の AI 生成の質問をランダムに取得します。コミュニティへの貢献に最適です
- getProductInsights:製品についての AI 生成の分析情報(検出されたラベル、カテゴリー、原材料に関する問題など)を取得します
- getInsightTypes:Robotoff で利用可能な AI 分析情報の種類をまとめて取得します
価格に関するツール
- getProductPrices:Open Prices から、製品の価格履歴と現在の価格を取得します
- searchPrices:通貨、国、日付範囲などのフィルターを使って価格を検索します
- getRecentPrices:最近追加された価格を取得し、どのような価格情報が利用可能か確認します
はじめに
前提条件
- Node.js(v16.x 以降)
- npm または yarn
インストール
-
このリポジトリをクローンするか、ダウンロードします
-
依存関係をインストールします。
npm install
- サーバーをビルドします。
npm run build
- サーバーを起動します。
npm start
AI アシスタントでの使用
Claude Desktop
- MCP サーバーを起動します。
npm start
- Claude Desktop の設定に追加します(macOS の場合は
~/Library/Application Support/Claude/claude_desktop_config.json)。
{
"mcpServers": {
"openfoodfacts": {
"command": "node",
"args": ["/path/to/OpenFoodFacts-MCP/dist/index.js"],
"env": {
"TRANSPORT": "stdio"
}
}
}
}
GitHub Copilot を使用する VS Code
-
VS Code 用の「Model Context Protocol」拡張機能をインストールします
-
.vscode/mcp.jsonを作成します。
{
"servers": {
"openfoodfacts": {
"command": "node",
"args": ["${workspaceFolder}/dist/cli.js"],
"env": {
"TRANSPORT": "stdio"
}
}
}
}
その他の AI ツール
このサーバーは、ブラウザーから使う AI ツール向けに HTTP/SSE トランスポートをサポートしています。
TRANSPORT=http PORT=3000 npm start
次に、AI ツールを http://localhost:3000/sse に接続します。
会話の例
AI アシスタントに Open Food Facts のツールを使ってもらうときの、自然な質問例を紹介します。
商品の検索
- "Open Food Facts データベースでチョコレートシリアルを検索して"
- "アーモンドミルクを含む商品を探して"
- "オーガニックヨーグルトの商品を探して"
商品の詳細情報を取得
- "バーコード 3017620422003 の商品の情報を取得して"
- "EAN 5000159407236 の商品には何が入っている?"
- "バーコード 8076809513326 の栄養データを表示して"
商品の分析
- "Nutella の栄養面を分析してくれる?"
- "Cheerios のシリアルを分析して、健康に良いか教えて"
- "Oreo クッキーの健康面を分析して"
- "バーコード 3017620422003 の商品は健康に良い?"
商品の比較
- "Nutella と Nocciolata を比較して"
- "Coke と Pepsi では、どちらのほうが健康に良い?"
- "アーモンドミルクと豆乳を栄養面で比較して"
- "バーコード 3017620422003 と 5000159407236 の商品を比較して"
レシピの提案
- "ギリシャヨーグルトで何が作れる?"
- "ひよこ豆を使ったレシピをいくつか提案して"
- "キヌアを使ったレシピのアイデアを教えて"
- "商品 3017620422003 を使ってどんなレシピが作れる?"
カテゴリーとブランドの検索
- "飲料カテゴリーの商品をすべて表示して"
- "Nestlé の商品をすべて探して"
- "Nutri-Score A のオーガニック商品を検索して"
- "Eco-Score の評価が高いヴィーガンスナックを探して"
アレルゲンの確認
- "Nutella にはグルテンが含まれている?"
- "牛乳と卵にアレルギーがある人が、この商品を食べても安全か確認して"
- "バーコード 3017620422003 の商品はピーナッツ不使用?"
- "Cheerios にはどんなアレルゲンが含まれている?"
価格の検索
- "Nutella の現在の価格はいくら?"
- "フランスの商品で最近の価格を表示して"
- "バーコード 3017620422003 の価格を比較して"
リソースとプロンプト
MCP サーバーは便利なリソースとプロンプトを提供します。
リソース
サーバーは、食品データを理解するのに役立つ学習用リソースを提供します。
- クイックヘルプガイド:Open Food Facts ツールの使い方をまとめたクイックリファレンス
- Nutri-Score ガイド:Nutri-Score の健康評価(A~E)について
- Eco-Score ガイド:Eco-Score の環境評価(A~E)について
- アレルゲンリファレンス:一般的な食品アレルゲンと、含まれていることの多い食品
- 食品添加物ガイド:E 番号と食品添加物について
- NOVA 加工ガイド:食品の加工レベル(1~4)について
プロンプト
事前設定済みのプロンプトを使うと、すぐに始められます。
- analyze-product:詳細な栄養分析を取得
- compare-products:2 つの商品を並べて比較
- find-healthy-alternatives:商品のより健康的な代替品を検索
- check-allergens:アレルギーがある場合に商品を食べても安全か確認
- whats-for-dinner:商品を使ったレシピのアイデアを取得
仕組み
MCP サーバーは、AI アシスタントと Open Food Facts データベースをつなぐ橋渡し役です。
- 質問する:食品について AI アシスタントに質問します
- ツールを検出する:AI が Open Food Facts のデータが必要だと認識します
- MCP リクエスト:AI が適切な MCP ツールを呼び出します
- データを取得する:サーバーが Open Food Facts からデータを取得します
- AI が分析する:AI がデータを処理し、回答します
ワークフローの例
より健康的な選択
You: "Is Nutella healthy?"
AI Assistant uses:
1. searchProducts to find Nutella
2. getProductByBarcode with the barcode
3. analyzeProduct for nutritional assessment
Response: Detailed analysis of Nutella's nutritional profile,
health scores, ingredients, and dietary considerations
選択肢の比較
You: "Which is better for me, Nutella or almond butter?"
AI Assistant uses:
1. searchProducts for both products
2. compareProducts with both barcodes
Response: Side-by-side comparison with recommendations
based on your dietary needs
レシピの計画
You: "What can I make with Greek yogurt?"
AI Assistant uses:
1. searchProducts to find Greek yogurt
2. suggestRecipes with the product
Response: Recipe suggestions that use Greek yogurt
as an ingredient
技術的な詳細
サーバーアーキテクチャ
このサーバーは、保守性とスケーラビリティを高めるため、モジュール型のアーキテクチャを採用しています。
コアサーバー
src/index.ts:エントリーポイントsrc/server.ts:リソースとプロンプトの登録を含む、MCP サーバーのコア実装src/cli.ts:開発用 CLI インターフェース
ツール(モジュール型設計)
src/tools/index.ts:ツールの登録を統括するオーケストレーターと、製品関連のコアツールsrc/tools/product-search.ts:製品検索とバーコード検索のユーティリティsrc/tools/category-tools.ts:カテゴリーとブランドの検索ツールsrc/tools/nutrition-tools.ts:栄養スコア、アレルゲンチェック、添加物情報src/tools/insights-tools.ts:Robotoff によって生成される AI インサイトsrc/tools/price-tools.ts:Open Prices の製品価格データsrc/tools/types.ts:共有の型定義とインターフェースsrc/tools/helpers.ts:すべてのツールで再利用可能なヘルパー関数
リソースとサービス
src/resources/:ガイドとドキュメント用のリソースハンドラーresource-registry.ts:リソース登録システムstatic-resources.ts:静的リソースのコンテンツ(ガイド、参考資料)
src/sampling/:分析とレシピ生成のための AI モデル連携sampling-service.ts:AI を活用した機能のための MCP サンプリング連携
インフラストラクチャ
src/transport/:通信レイヤー(CLI/エディター用の stdio、ブラウザー用の HTTP)src/config/:サーバー設定
データソース
すべての製品データは、世界各地の食品を対象とした無料のオープンな共同データベースである Open Food Facts から取得しています。
トラブルシューティング
サーバーが起動しない
- Node.js v16 以降がインストールされていることを確認してください
npm installを実行して依存関係をインストールしてください- ポート 3000 が使用可能であることを確認してください(HTTP モードの場合)
AI がツールを見つけられない
- MCP サーバーが実行中であることを確認してください
- AI アシスタントの MCP 設定を確認してください
- トランスポートの種類(stdio または HTTP)が一致していることを確認してください
製品が見つからない
- まず
searchProductsで検索してみてください - バーコードが正しいことを確認してください(8~14 桁)
- 製品によっては、まだデータベースに登録されていない場合があります
応答が遅い
- サーバーは Open Food Facts からリアルタイムデータを取得します
- データの取得中は、最初のリクエストへの応答が遅くなることがあります
- インターネット接続の速度がパフォーマンスに影響します
貢献
貢献を歓迎します!次のような形でご協力いただけます。
- より多くの食品データベースへの対応を追加する
- AI 分析プロンプトを改善する
- エラー処理を強化する
- 食事の記録に役立つ新しいツールを追加する
- ドキュメントを改善する
Open Food Facts について
Open Food Facts は、みんなが作り、みんなのためにある食品データベースです。世界各地の食品に関する情報を収集する共同プロジェクトで、以下の情報を含みます。
- 原材料
- 栄養成分
- アレルゲン
- 環境への影響
- 健康スコア(Nutri-Score、NOVA)
詳しくは https://world.openfoodfacts.org/ をご覧ください。
ライセンス
このプロジェクトは、Open Food Facts プロジェクトと同じく、GNU Affero General Public License v3.0 のもとでライセンスされています。
サポート
- Open Food Facts のウェブサイト:https://world.openfoodfacts.org/
- Open Food Facts の GitHub:https://github.com/openfoodfacts
- Model Context Protocol:https://modelcontextprotocol.io/
食を意識する世界中の消費者のために、心を込めて作られました
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。