FoodChecker

io.github.kjagsadvisors由 GitHub 帳號 kjagsadvisors 發布v0.1.0更新於 Oct 27, 2026

Is this food healthy? A 0-100 score from nutrition, additives and processing (Open Food Facts).

已驗證Streamable HTTP可網頁執行位置與生活資料與分析

概覽

AI 產生的概覽

透過 Open Food Facts 資料,為包裝食品與飲料給出 0-100 健康評分,並解讀標籤與添加物。

可以做什麼
  • 依條碼或名稱查詢產品,回傳 0-100 健康評分及營養、添加物、加工程度的理由
  • 依標籤照片或貼上的成分與營養標示文字評分,包含資料庫中沒有的產品
  • 找出同類別中評分明顯更高的替代產品
  • 依 E 編號或名稱說明食品添加物的作用、風險等級與來源
適用情境
適合在購物或安排飲食時快速取得可解釋的「這樣健康嗎」答案,也適合把某項產品與同類更健康的替代品比較。適合希望在對話中直接顯示評分卡片的助理。
執行需求
遠端 MCP 端點,不需登入或 API 金鑰。可使用公開託管實例,也可用 Node.js 與 npm 自行部署。自行託管時會呼叫 Open Food Facts API,該 API 要求應用程式表明身分(透過 OFF_USER_AGENT 設定),並依 IP 限制查詢頻率。
安裝前請注意
評分僅供參考,不構成醫療建議,結果取決於 Open Food Facts 資料與專案自身的評分方法。所有工具據稱皆為唯讀且不需登入。送出的標籤照片或貼上的標籤文字會傳到伺服器進行評分;自行託管時應設定含聯絡信箱的 OFF_USER_AGENT。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 FoodChecker,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.kjagsadvisors%2Ffoodchecker/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "foodchecker": {
      "type": "http",
      "url": "https://foodchecker-ebon.vercel.app/mcp"
    }
  }
}

README

FoodChecker

An open-source food label checker for ChatGPT and Claude. Ask "is this healthy?" with a barcode, a product name or a photo of the label. You get a 0-100 score with the reasons, the way Yuka or Oasis would show it, but inside your chat and with a scoring method anyone can read.

[Score card for Coca-Cola: 15/100, Bad]

ScoreRating
75-100Excellent
50-74Good
25-49Poor
0-24Bad
  • Nutrition: based on Nutri-Score 2023.
  • Additives: each one has a risk level and a cited reason.
  • Processing: based on NOVA, with a note on why a food counts as ultra-processed.
  • Alternatives: suggests healthier products in the same category.
  • Data: over 3 million products from Open Food Facts. Labels you photograph are scored too, even products that aren't in the database.

How the score is built: docs/METHODOLOGY.md.

How it works

One MCP server serves both assistants. ChatGPT and Claude both implement the open MCP Apps standard, so the same score card renders inline in each of them:

ChatGPT / Claude  ──MCP──▶  FoodChecker server  ──▶  Open Food Facts API       ▲                         │       └──── score card (MCP Apps UI) + text summary
ToolWhat it does
check_foodLook up a product by barcode or name, and score it
analyze_labelScore a product from its label (photo or pasted text), including US per-serving labels
find_healthier_alternativesFind similar products that score clearly higher
explain_additiveExplain an additive by E-number or name ("E471", "Red 40") with its risk level and sources

All tools are read-only and need no login.

Use the hosted server

A public instance runs at https://foodchecker-ebon.vercel.app/mcp. Paste that URL into ChatGPT or Claude as shown below. You can try the score card in a browser at https://foodchecker-ebon.vercel.app.

Run it locally

bash
npm installnpm run dev

Add it to ChatGPT

Use the hosted URL or your own deployment. ChatGPT can't reach localhost.

  1. Go to chatgpt.com/plugins, click +, then Add custom MCP server.
  2. Server URL: https://foodchecker-ebon.vercel.app/mcp. Authentication: No authentication.
  3. Create it, then ask: "Is Nutella healthy?"

To list it in the ChatGPT app directory, follow OpenAI's submission flow at platform.openai.com/plugins. FoodChecker already supports two of its requirements through environment variables:

  • OPENAI_APPS_CHALLENGE: the domain-verification token, served at /.well-known/openai-apps-challenge.
  • CHATGPT_WIDGET_DOMAIN: your widget origin.

You'll also need a privacy policy URL, a terms URL, test prompts and a demo video.

Add it to Claude

  • claude.ai or Claude Desktop: go to Customize → Connectors → Add custom connector, paste https://foodchecker-ebon.vercel.app/mcp, and choose No sign-in. The score card renders on web, desktop and mobile.

  • Claude Code, remote server: run claude mcp add --transport http foodchecker https://foodchecker-ebon.vercel.app/mcp.

  • Claude Code, local server: run claude mcp add foodchecker -- npx tsx /path/to/repo/src/stdio.ts.

  • Claude Code plugin with a usage skill: this repo is a plugin marketplace. It points at the hosted server. If you self-host, change the URL in plugins/foodchecker/.mcp.json. Then run:

    /plugin marketplace add kjagsadvisors/foodchecker/plugin install foodchecker@foodchecker

Claude Code shows text, not the score card. The text summary carries the same information.

Deploy

The server is a standard web Request → Response handler (src/app.ts), so it runs almost anywhere.

  • Docker (Render, Fly.io, Railway, any VPS): docker build -t foodchecker . && docker run -p 3000:3000 foodchecker
  • Vercel: vercel deploy. vercel.json builds the project and routes everything to api/index.js.
  • Plain Node: npm run build && npm start

Set OFF_USER_AGENT to FoodChecker/0.1.0 (your contact email). Open Food Facts asks every app to identify itself. See .env.example for the other settings.

Rate limits: Open Food Facts allows roughly 15 product lookups and 10 searches per minute per IP. FoodChecker caches results in memory (products for 12 hours, searches for 1 hour). For heavy traffic, load the Open Food Facts data dump into your own database.

Project layout

src/core/        scoring engine: Nutri-Score 2023, additive table, ingredient parser, 0-100 scoresrc/off/         Open Food Facts client and data normalisationsrc/mcp/         MCP server, tool definitions, score-card widget, text summariessrc/app.ts       web handler: /mcp, /preview, landing pagesrc/http.ts      Node server       src/stdio.ts   local stdio serverplugins/         Claude Code plugin (MCP config + food-check skill)test/            scoring tests     scripts/       smoke test, dev MCP Apps host

Contributing

The most useful contributions are:

  • Additive table (src/core/additives.ts): challenge a risk level with a source, or add a missing additive and its label names in your language.
  • Ingredient parsing (src/core/ingredients.ts): label wording that gets missed. Add a test case in test/scoring.test.ts.
  • Product data: fix the product on Open Food Facts and everyone benefits.

npm run dev:host builds a small MCP Apps host on the official AppBridge. Then open /dev/host?barcode=… to check the widget the way ChatGPT and Claude embed it.

License and data

  • Code: MIT.
  • Product data: © Open Food Facts contributors, under the Open Database License. Product images are under CC BY-SA. Keep the attribution that the score card and text summaries show.

FoodChecker gives general information about packaged food. It is not medical advice.

來源:README.md,提交 f14c992

工具

4

check_food

Check a food product

Looks up a packaged food or drink in Open Food Facts (3M+ products) by barcode or by name and returns a 0-100 health score (Excellent / Good / Poor / Bad) with the reasons: nutrition (Nutri-Score), additives and their risk level, and how processed it is. For questions such as whether a product is healthy. A barcode gives the most precise match.

輸入參數querybarcodecountry

analyze_label

Score a food from its label

Scores a food from its label: the ingredient list and/or the nutrition facts, for example from a photo of the packaging or pasted text, including products that aren't in the database. Most accurate with the ingredient list exactly as printed, including E-numbers and words in brackets. Nutrition values can be per 100 g or per serving (with the serving size). Returns the same 0-100 score and reports any missing data.

輸入參數brandcategoryis_drinknutritionproduct_nameingredients_textfruit_veg_percent

find_healthier_alternatives

Find healthier alternatives

Finds similar products in the same Open Food Facts category that score clearly higher than the given product, best first, each with its score.

輸入參數limitbarcode必填country

explain_additive

Explain a food additive

Explains what a food additive is, what it does, and its risk level with sources, by E-number (E250) or name (sodium nitrite, Red 40, carrageenan).

輸入參數additive必填

版本歷史

1
  1. v0.1.0最新Oct 21, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分