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 分