AI Skill Hub 强烈推荐:营养跟踪工具 是一款优质的MCP工具。AI 综合评分 8.0 分,在同类工具中表现稳健。如果你正在寻找可靠的MCP工具解决方案,这是一个值得深入了解的选择。
营养跟踪工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
营养跟踪工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/akutishevsky/nutrition-mcp
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"------": {
"command": "npx",
"args": ["-y", "nutrition-mcp"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 营养跟踪工具 执行以下任务... Claude: [自动调用 营养跟踪工具 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"______": {
"command": "npx",
"args": ["-y", "nutrition-mcp"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
A remote MCP server for personal nutrition tracking — log meals with calories, macros, fiber, total and added sugar, saturated and trans fat, sodium (with an optional daily ceiling) and caffeine (optionally ingredient by ingredient), look up generic foods in USDA FoodData Central and packaged products by barcode in Open Food Facts, record where each nutrient value came from, save meals you eat often and log them again by name, log water, body weight and body measurements, review nutrition history, and import an existing food diary from another app, all through conversation. Alcohol tracking is opt-in and off by default. The website and the in-chat widgets are available in English, German, Spanish, French, Dutch, Polish, Italian, Ukrainian, Japanese and Turkish; set_language picks the widget language.
[Help me pay for the servers on Patreon][patreon]
[patreon]: https://patreon.com/akutishevskyi
supabase/migrations/. With the Supabase CLI: supabase link --project-ref <your-project-ref>
supabase db push
This creates every table, index, RLS policy, and foreign key the app needs. No local Postgres is involved — migrations run against your hosted project.
SUPABASE_SECRET_KEY.The project includes a Dockerfile for container-based deployment.
8080Already hosted and ready to use — just connect it to your MCP client:
https://nutrition-mcp.com/mcp
On Claude.ai: open Nutrition MCP in the Claude directory and click Connect (see Connect to Claude.ai below)
On first connect, sign in with Google or enter an email and password and choose Create account. Your data persists across reconnections. Trouble connecting? See Troubleshooting.
By connecting you agree to the Terms of Service; how your data is handled is in the Privacy Policy.
Switching from another tracker? See the nutrition-app alternatives — how it compares to MyFitnessPal, Cronometer, Lose It!, MacroFactor, Yazio, and Lifesum. Bring your history with you: say "import my meals" and an importer opens in the chat, where you pick the CSV you exported from your old app, map its columns, and check what will be added before anything is saved. Exports from MyFitnessPal, Cronometer, Lose It! and MacroFactor are recognised automatically; any other CSV works by mapping its columns yourself. In clients that can't show in-chat panels, paste the export instead and the AI imports it for you. If your export has an alcohol column and you want it kept, turn alcohol tracking on before importing — the importer skips that column while tracking is off, and re-importing the same file later won't backfill it.
Read the story behind it: How I Replaced MyFitnessPal and Other Apps with a Single MCP Server
| Variable | Description |
|---|---|
SUPABASE_URL | Your Supabase project URL |
SUPABASE_SECRET_KEY | Supabase service role key (bypasses RLS) |
OAUTH_CLIENT_ID | _(optional, legacy)_ ID of the pre-registration static OAuth client. Clients now register themselves via POST /register; this only keeps older connections working until the legacy client is retired |
OAUTH_CLIENT_SECRET | _(optional, legacy)_ Secret of the legacy static OAuth client |
ALLOWED_ORIGINS | _(optional)_ Comma-separated list of extra browser origins allowed to call /mcp via CORS — localhost/127.0.0.1 on any port are always allowed regardless |
GOOGLE_CLIENT_ID | _(optional)_ Google OAuth client ID for "Sign in with Google" |
GOOGLE_CLIENT_SECRET | _(optional)_ Google OAuth client secret |
OFF_USER_AGENT | Open Food Facts User-Agent for barcode lookups, in the form AppName (email) |
USDA_API_KEY | _(optional)_ USDA FoodData Central API key for search_foods and get_food_macros; without it those tools report that USDA data is not configured |
PATREON_CLIENT_ID | _(optional)_ Patreon OAuth client ID, for showing recent posts on the landing page's Support section |
PATREON_CLIENT_SECRET | _(optional)_ Patreon OAuth client secret |
PATREON_CAMPAIGN_ID | _(optional)_ Patreon campaign ID to fetch posts from |
PATREON_ACCESS_TOKEN | _(optional)_ Creator's Access Token from Patreon's client management page — one-time bootstrap seed, see below |
PATREON_REFRESH_TOKEN | _(optional)_ Creator's Refresh Token from the same page — one-time bootstrap seed, see below |
PUBLIC_BASE_URL | _(optional)_ Public origin (e.g. https://your-domain.example) that the Apple Health shortcut is pointed at. Set it on any deploy that is not nutrition-mcp.com; without it, a phone paired on that deploy is sent to the production site |
HEALTH_SYNC_SHORTCUT_URL | _(optional, build time)_ https://www.icloud.com/shortcuts/… link to the published **Nutrition MCP Health** shortcut, shown as the install button on /apple-health. A Dockerfile build argument like NOINDEX; unset, the page says the shortcut is coming soon |
PORT | Server port (default: 8080) |
NOINDEX | _(optional)_ Any non-empty value sends X-Robots-Tag: noindex, nofollow on every response and leaves Google Analytics, Clarity and the consent banner (with its footer "Cookie settings" button) out of the generated pages, for a dev or staging deploy. Must be set at build time too, since the pages are generated during the build |
ADDED_SUGAR_REQUIRED_FROM | _(optional)_ ISO-8601 instant (a date, or a date-time with an offset) from which log_meal / update_meal refuse a sugar_g given without added_sugar_g. Unset, empty or unparseable leaves the rule off. Set it well after the deploy that first advertised added_sugar_g: hosts cache the tool list for days, and a client on an older list cannot send the field |
Legacy only — a fresh deploy doesn't need these, since every client registers its own credentials via POST /register. To set the optional OAUTH_CLIENT_* pair for the legacy static client:
bun run generate-oauth-creds
or manually:
openssl rand -hex 16 # use as OAUTH_CLIENT_ID
openssl rand -hex 32 # use as OAUTH_CLIENT_SECRET
Patreon posts, one-time setup:PATREON_ACCESS_TOKEN/PATREON_REFRESH_TOKENare only ever read once, at server boot, to seed thepatreon_tokenstable if it's still empty — the server refreshes and stores its own pair from then on, so leaving these two set permanently is safe (every later boot is a no-op). You never need to touch the database by hand.
Email/password works out of the box. To also offer "Continue with Google", follow docs/google-auth-setup.md to create a Google OAuth client, enable the Google provider in Supabase, and set GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET. This adds the POST /authorize/google and GET /auth/google/callback routes — see API Endpoints.
| Endpoint | Description |
|---|---|
GET /health | Health check |
GET /.well-known/oauth-authorization-server | OAuth metadata discovery (root + /mcp-scoped variants) |
GET /.well-known/oauth-protected-resource | OAuth protected-resource metadata discovery (root + /mcp-scoped variants) |
POST /register | Dynamic client registration (RFC 7591) — per-client, redirect URIs enforced |
GET /authorize | OAuth authorization (shows login page) |
POST /authorize/google | Login-page form; redirects to Google's consent screen |
GET /auth/google/callback | Google OAuth callback — exchanges the code, completes sign-in |
POST /approve | Login/register handler |
POST /token | Token exchange — client-authenticated, redirect_uri + PKCE verifier required |
GET /.well-known/security.txt | Security contact (RFC 9116); Expires rolls forward daily |
GET /security.txt | 301 redirect to /.well-known/security.txt |
GET /favicon.ico | Server icon |
GET /favicon.svg | Site icon (SVG) |
GET /api/stats | Landing-page totals (meals, calories, macros, timezones), aggregated only |
GET /api/patreon-posts | Recent Patreon posts for the landing page's Support section |
GET /api/github-stars | Cached GitHub star count for the site's GitHub buttons |
POST /api/v1/health-sync/start | Apple Health sync: start connecting from the shortcut (returns a connect link) |
GET /health-sync/connect/:id | Apple Health sync: opens the normal sign-in page for that connect request |
GET /health-sync/callback | Apple Health sync: sign-in callback; hands a claim code back to the shortcut |
POST /api/v1/health-sync/claim | Apple Health sync: exchange claim code + device secret for the sync token |
GET /api/v1/health-sync/pending | Apple Health sync: closed-day totals to log (Bearer nmhs_… token) |
POST /api/v1/health-sync/ack | Apple Health sync: record what the shortcut logged (Bearer token) |
POST /api/v1/health-sync/revoke | Apple Health sync: disconnect (Bearer token) |
ALL /mcp | MCP endpoint (authenticated) |
The full version, in 10 languages, is at nutrition-mcp.com/tools#troubleshooting. In short:
https://nutrition-mcp.com/mcp, then sign in with the same email and password (or Google account) as before — your data belongs to the account, not the connection. It stays connected as long as you use it at least every 90 days.{"error":"session_expired"} on the sign-in page: the page is valid for 10 minutes and resets when the server restarts; reload it or start connecting again. session_mismatch means sign-in was finished in a different browser from the one that opened it.set_timezone; past entries regroup, but one given a specific time while the timezone was wrong keeps that moment — fix it with update_meal. Set it before importing history: re-importing another app's file after a timezone change adds the rows again (a Nutrition MCP export is recognized and not duplicated).set_widget_display, start a new conversation. The meal-logged card only appears once goals are set.bulk_import_meals (duplicates are skipped, so re-sending is safe as long as your timezone hasn't changed in between; set it before the first import). If you use the importer panel and want an alcohol column kept, turn alcohol tracking on first; the panel skips it while tracking is off.search_foods, get_food_macros) share one hourly quota across all users. After USDA's limit is reached, or when the key's hourly allowance is nearly used up, lookups pause for 60 minutes; each user is also capped at 30 lookups per hour. Foods looked up in the last 30 days keep working during a pause. USDA's names are in English, so search with English food names.delete_account permanently removes everything after you confirm; export first if you want a copy.高质量的开源MCP工具,易于使用
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
总体来看,营养跟踪工具 是一款质量优秀的MCP工具,在同类工具中具备一定竞争力。AI Skill Hub 将持续追踪其更新动态,建议收藏备用,结合自身场景选择合适时机引入使用。
| 原始名称 | nutrition-mcp |
| 原始描述 | 开源MCP工具:A remote MCP server for personal nutrition tracking — log meals, track macros, a。⭐17 · TypeScript |
| Topics | meal-trackingnutritiontypescript |
| GitHub | https://github.com/akutishevsky/nutrition-mcp |
| License | MIT |
| 语言 | TypeScript |
收录时间:2026-06-27 · 更新时间:2026-06-27 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端