营养追踪插件

一个低摩擦的营养追踪系统,通过文本或照片描述饮食,获取计算后的营养信息及置信度评分。

  • by langadventurellc
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 langadventurellc/health-ai-plugin

使用说明

健康AI插件

Claude Code的低摩擦营养跟踪系统。通过文字或照片描述你吃了什么,并获得计算出的营养信息和置信度得分。

运作原理

两个组件协同工作:

  1. 远程MCP服务器 -处理营养数据查找(USDA FoodData Central+Open Food Facts)、缓存、单位转换和确定性数学计算
  2. Claude代码插件 -引导对话的技能:提出澄清问题,解释图像,并用信心评分呈现结果

LLM的原因 什么 你吃了 _多少_MCP服务器执行以下操作 计算 -没有营养数学依赖于LLM概率。

例子

  • “我的咖啡加牛奶和糖有多少卡路里?”
  • “我喝了一杯蛋白奶昔——两勺金标、330克全脂牛奶、半根香蕉”
  • 用半盒意大利面、一磅碎牛肉和一罐拉奥的腌料做意大利面
  • [营养标签照片]“用牛奶喝了两勺这个”
  • “吃了一个巨无霸和中薯条”

设置

先决条件

  • 布置 用于节点版本管理和任务运行

入门指南

mise install                # Install Node 24.11.0
npm install                 # Root: install git hooks (husky + lint-staged)
cd server
cp .env.example .env        # Add your USDA API key (free from https://fdc.nal.usda.gov/api-key-signup)
npm install                 # Server: install project dependencies

两者 npm install 需要步骤——root安装repo范围内的工具(git钩子), server/ 安装项目依赖关系。

跑步

mise run dev                # Dev server with hot reload (from repo root)
# or
cd server && npm run dev    # Equivalent

服务器启动于 http://localhost:3000 健康检查在 /health MCP终点位于 /mcp.

插件安装

  1. 更新 plugin/.mcp.json 使用部署的服务器URL(替换 PLACEHOLDER_URL)
  2. 安装插件:
claude plugin add ./plugin

如果服务器启用了OAuth(AUTH_ENABLED=true),Claude Code在第一次连接时自动处理OAuth 2.1流。如果禁用身份验证,则不需要身份验证。

运行测试

mise run test               # From repo root
# or
cd server && npm test       # Equivalent

代码质量

预提交钩子会自动对暂存文件运行ESLint、Prettier、类型检查和测试。要手动运行,请执行以下操作:

mise run quality            # Lint + format + type-check
mise run lint               # ESLint --fix
mise run format             # Prettier --write
mise run type-check         # tsc --noEmit

部署

服务器通过GitHub Actions工作流(手动触发)部署到AWS ECS Fargate。看 infra/README.md 获取完整的设置说明,包括Terraform配置、GitHub Actions变量配置和操作命令。

mise run deploy            # Opens the deploy workflow in GitHub

状态

积极发展。MCP服务器核心采用 search_food, get_nutrition, calculate_meal,以及 save_food 工具、SQLite缓存和USDA/Open Food Facts集成。看 要求.md 为了获得完整的规格。

已实施:

  • 具有流式HTTP传输的MCP服务器
  • 跨USDA和Open Food Facts的食品搜索,具有跨源重复数据删除功能
  • 单位转换的营养查找:重量(g、kg、oz、lb)、体积(杯、汤匙、茶匙、fl_oz、mL、L)和描述性尺寸(片、片、小、中、大)
  • 膳食计算(calculate_meal)具有确定性营养总结和覆盖率报告
  • 带TTL重新验证和优雅降级的SQLite缓存
  • 定制食品储存(save_food)用于餐厅商品和营养标签,具有90天TTL和追加销售语义
  • MCP OAuth 2.1使用PKCE进行身份验证,动态客户端注册(可选通过 AUTH_ENABLED 任何人)
  • 克劳德代码插件 nutrition-tracker 技能(见 plugin/README.md 用于设置)
  • 使用EFS持久性和GitHub Actions CI/CD在ECS Fargate上部署AWS——支持HTTPS+身份验证(自定义域)和仅HTTP(ALB DNS)模式(请参阅 infra/README.md)

许可证

此项目根据GNU通用公共许可证v3.0获得许可-请参阅 许可证 文件以获取详细信息。