内容
# Food Tracker MCP
一个用于跟踪食物消耗、分析营养和管理饮食限制的 Model Context Protocol (MCP) server。
## 概述
Food Tracker MCP 与 OpenFoodFacts 数据库集成,提供一个全面的食物跟踪系统,具有以下功能:
- 通过条形码或关键词搜索食品
- 分析食品的营养成分
- 根据特定的营养目标和饮食限制创建膳食计划
- 通过膳食记录跟踪食物消耗
- 管理饮食限制和过敏
- 检查产品与用户限制的兼容性
- 查看食物日志和营养摘要
## 安装
### 前提条件
- Python 3.8 或更高版本
- `pip` (Python 包管理器)
### 设置
1. 克隆 repository 或下载 `food_tracker.py` 文件:
```bash
# Option 1: Clone the repository (if available)
git clone https://github.com/yourusername/food-tracker-mcp.git
cd food-tracker-mcp
# Option 2: Create a new directory and save the file there
mkdir food-tracker-mcp
cd food-tracker-mcp
# Copy food_tracker.py into this directory
```
2. 创建一个虚拟环境(推荐):
```bash
python -m venv venv
```
3. 激活虚拟环境:
```bash
# On Windows
venv\Scripts\activate
# On macOS/Linux
source venv/bin/activate
```
4. 安装所需的依赖项:
```bash
pip install httpx fastmcp pydantic
```
5. 确保创建了数据目录(脚本将在首次运行时自动执行此操作):
```bash
mkdir -p data/users data/logs
```
## 运行 MCP Server
使用以下命令运行 server:
```bash
python food_tracker.py
```
server 将启动并准备好接收命令。
## 与 Claude 一起使用
要将此 MCP 与 Claude 一起使用,您需要将其注册到 Claude 平台。方法如下:
1. 按照 Anthropic 的文档注册您的 MCP:
- 访问 https://console.anthropic.com/mcps 或您的 Anthropic 帐户中的相关部分
- 通过提供必要的信息和 endpoint 来注册 food-tracker MCP
2. 注册后,您可以通过调用 MCP 的工具通过 Claude 与 Food Tracker 进行交互。
与 Claude 一起使用的示例提示:
- "扫描此条形码以查看营养信息:3270190119357"
- "将花生过敏添加到我的饮食限制中"
- "记录我早餐吃了一个格兰诺拉麦片棒"
- "搜索包含 'oatmeal' 的产品"
- "检查此产品是否与我的饮食限制兼容"
- "显示我今天的食物日志"
## 可用工具
此 MCP 提供了 Claude 可以访问的以下工具:
### 1. `get_product_by_barcode`
使用食品的条形码获取有关该食品的详细信息。
**Parameters:**
- `barcode`: 产品条形码 (EAN, UPC, etc.)
### 2. `search_products`
按名称或描述搜索食品。
**Parameters:**
- `query`: 搜索查询
- `page`: 分页的页码(默认值:1)
- `page_size`: 每页的结果数(默认值:10)
### 3. `manage_user_restrictions`
管理用户的饮食限制。
**Parameters:**
- `user_id`: 用户的唯一标识符
- `action`: 要执行的操作 (get, add, remove, update)
- `restriction_type`: 限制类型 (allergen, diet, ingredient, medical, preference)
- `restriction_value`: 具体限制值(例如,“peanuts”,“vegetarian”)
- `severity`: 限制的严重程度 (avoid, limit, fatal)
- `notes`: 关于限制的附加说明
### 4. `check_product_compatibility`
检查产品是否与用户的饮食限制兼容。
**Parameters:**
- `user_id`: 用户的唯一标识符
- `barcode`: 要检查的产品条形码
### 5. `analyze_nutrition`
分析食品的营养成分。
**Parameters:**
- `barcode`: 产品条形码
### 6. `log_food_consumption`
记录用户的食物消耗量。
**Parameters:**
- `user_id`: 用户的唯一标识符
- `barcode`: 产品条形码
- `quantity`: 消耗量(默认值:1 份)
- `meal_type`: 膳食类型(早餐、午餐、晚餐、零食)
### 7. `get_user_food_log`
获取用户特定日期的食物日志。
**Parameters:**
- `user_id`: 用户的唯一标识符
- `date`: YYYY-MM-DD 格式的日期(默认为今天)
## 示例用法场景
### 设置具有限制的新用户
1. 添加麸质过敏:
```
manage_user_restrictions(
user_id="user123",
action="add",
restriction_type="allergen",
restriction_value="gluten",
severity="avoid",
notes="Avoid all wheat products"
)
```
2. 添加素食饮食:
```
manage_user_restrictions(
user_id="user123",
action="add",
restriction_type="diet",
restriction_value="vegetarian"
)
```
### 跟踪食物消耗
1. 扫描产品并记录:
```
# First get product info
product = get_product_by_barcode(barcode="3270190119357")
# Then log consumption
log_food_consumption(
user_id="user123",
barcode="3270190119357",
quantity=1,
meal_type="breakfast"
)
```
2. 检查与限制的兼容性:
```
check_product_compatibility(
user_id="user123",
barcode="3270190119357"
)
```
### 分析营养信息
1. 获取详细的营养分析:
```
analyze_nutrition(barcode="3270190119357")
```
2. 查看食物日志和营养总计:
```
get_user_food_log(user_id="user123")
```
## 数据存储
Food Tracker MCP 将数据本地存储在 JSON 文件中:
- 用户个人资料:`./data/users/{user_id}.json`
- 食物日志:`./data/logs/{user_id}_{date}.json`
## 扩展 MCP
您可以通过以下方式扩展 MCP:
1. 添加新的营养分析功能
2. 实施更详细的饮食计划和目标
3. 根据可用成分添加食谱建议
4. 创建营养数据的报告和可视化
5. 实施用于分享进度的社交功能
## 故障排除
- 如果遇到连接问题,请确保您可以访问互联网,因为 MCP 连接到 OpenFoodFacts API
- 如果产品信息不完整,这可能是由于 OpenFoodFacts 数据库中的限制
- 对于任何数据持久性问题,请检查数据目录的权限