Back to MCP directory
publicPublicdnsLocal runtime

langgraph-mcp-nutrition-analyzer

基于AI的食物营养分析助手,通过图像识别食物并计算卡路里和蛋白质含量,支持营养知识问答和对话记忆功能

article

README

🚀 食品卡路里与蛋白质分析器

这是一款由人工智能驱动的营养助手,它能分析食品图片,识别其中的食物,计算卡路里和蛋白质含量,并解答与营养相关的问题。该项目基于 LangGraph、Google Gemini、Nutritionix API、Wikipedia 和 Streamlit 构建。

✨ 主要特性

  • 食物识别:上传一张图片,Gemini 能够识别出图片中可见的食物。
  • 卡路里与蛋白质计算:Nutritionix API 可提供准确的营养信息。
  • 交互式问答:可以针对分析结果提出后续问题(例如:“米饭中含有多少蛋白质?”)。
  • 维基百科集成:通过维基百科了解食物的营养益处。
  • 对话记忆:使用 MemorySaver 跟踪分析过程和后续问题。
  • Streamlit 用户界面:简单易用的交互界面。
  • MCP 服务器(Render):通过部署在 Render 上的 FastAPI MCP 服务器提供营养工具服务。

🛠 技术栈

  • LangGraph:工作流编排与记忆管理
  • Google Gemini:结合视觉和大语言模型进行食物识别与推理
  • Nutritionix API:提供营养信息(卡路里、蛋白质等)
  • Wikipedia API:提供额外的营养知识
  • Streamlit:用于交互的前端框架
  • FastAPI + MCP:后端工具服务(部署在 Render 上)

📂 项目结构

.devcontainer/
├── devcontainer.json       # 主配置文件
├── backend/                # 后端 API 与服务
│   ├── requirements.txt    # 后端依赖
│   ├── server.py           # API 服务器
│
├── frontend/               # 基于 Streamlit 的前端
│   ├── app.py              # 主应用程序
│   ├── client.py           # 连接后端
│   ├── requirements.txt    # 前端依赖
│
├── .env.example            # 示例环境文件
├── .gitignore              # Git 忽略规则
├── .python-version         # Python 版本
├── pyproject.toml          # 项目元数据
├── README.md               # 项目文档
├── requirements.txt        # 根依赖
└── uv.lock                 # 锁定文件(使用 uv 进行可重复构建)

⚡ 安装指南

1️⃣ 克隆仓库

git clone https://github.com/sunilpowar5/LangGraph-MCP-Nutrition-Analyzer.git
cd LangGraph-MCP-Nutrition-Analyzer

2️⃣ 创建虚拟环境并安装依赖

python -m venv .venv
# 激活虚拟环境
.venv\Scripts\activate      # Windows
source .venv/bin/activate   # Mac/Linux

pip install -r requirements.txt

3️⃣ 添加环境变量 在根目录下创建一个 .env 文件:

GEMINI_API_KEY=your_google_gemini_api_key
NUTRITIONIX_APP_ID=your_nutritionix_app_id
NUTRITIONIX_API_KEY=your_nutritionix_api_key
LANGCHAIN_API_KEY=your_langchain_api_key

(可以使用 .env.example 作为模板)

4️⃣ 运行应用(Streamlit 前端)

streamlit run frontend/app.py

5️⃣ (可选)运行后端 MCP 服务器

uvicorn backend.server:app --host 0.0.0.0 --port 8000

💻 使用示例

基础用法

上传一张食品图片(jpeg/jpg/png 格式)。系统会识别图片中的食物,然后 Nutritionix 会获取这些食物的卡路里和蛋白质信息。你可以提出后续问题,例如:

  • “这顿饭健康吗?”
  • “这顿饭有什么好处?” 你可以随时开始新的会话。

示例工作流程

上传图片 → 检测到 🍌 + 🥛 Nutritionix 获取信息 →

香蕉:105 卡路里,1.3 克蛋白质
牛奶:103 卡路里,8 克蛋白质
总计:208 卡路里,9.3 克蛋白质

提问:“牛奶有什么好处?” → 从维基百科获取答案。

🚀 路线图

  • 支持多食物图像分割(边界框)。
  • 添加更多营养 API 以扩大覆盖范围。
  • 部署到 Streamlit Cloud / AWS。
  • 支持多用户历史记录和持久存储。

🤝 贡献

欢迎贡献代码、提出问题和功能请求!你可以随时提交 PR 或报告 bug。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client