smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
오픈소스 식품 라벨 검사기로, 영양·첨가물·가공 정도를 기준으로 0~100 건강 점수를 제공합니다
Open-source food label checker for ChatGPT and Claude: 0-100 health score from nutrition, additives and processing, using Open Food Facts data.
건강TypeScript · HTMLGitHub @kjagsadvisors온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗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 | Rating |
|---|---|
| 75-100 | Excellent |
| 50-74 | Good |
| 25-49 | Poor |
| 0-24 | Bad |
How the score is built: docs/METHODOLOGY.md.
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
| Tool | What it does |
|---|---|
check_food | Look up a product by barcode or name, and score it |
analyze_label | Score a product from its label (photo or pasted text), including US per-serving labels |
find_healthier_alternatives | Find similar products that score clearly higher |
explain_additive | Explain 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.
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.
npm install
npm run dev
npm test runs the scoring tests.npm run smoke calls every tool over MCP against live data while the server is running.Use the hosted URL or your own deployment. ChatGPT can't reach localhost.
https://foodchecker-ebon.vercel.app/mcp. Authentication: No authentication.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.
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.
The server is a standard web Request → Response handler (src/app.ts), so it runs almost anywhere.
docker build -t foodchecker . && docker run -p 3000:3000 foodcheckervercel deploy. vercel.json builds the project and routes everything to api/index.js.npm run build && npm startSet 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.
src/core/ scoring engine: Nutri-Score 2023, additive table, ingredient parser, 0-100 score
src/off/ Open Food Facts client and data normalisation
src/mcp/ MCP server, tool definitions, score-card widget, text summaries
src/app.ts web handler: /mcp, /preview, landing page
src/http.ts Node server src/stdio.ts local stdio server
plugins/ Claude Code plugin (MCP config + food-check skill)
test/ scoring tests scripts/ smoke test, dev MCP Apps host
The most useful contributions are:
src/core/additives.ts): challenge a risk level with a source, or add a missing additive and its label names in your language.src/core/ingredients.ts): label wording that gets missed. Add a test case in test/scoring.test.ts.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.
FoodChecker gives general information about packaged food. It is not medical advice.