开放食品事实MCP服务器
这是Open Food Facts的模型上下文协议(MCP)服务器实现。它使人工智能助手能够访问食品信息,使用官方网站提供营养分析、产品比较和食谱建议 模型上下文协议 规范。
对有食品意识的消费者的好处
此MCP服务器支持:
- 营养智力:对食品及其健康影响进行人工智能分析
- 知情选择:比较产品以做出更好的饮食决策
- 食谱创意:根据你的产品发现食谱
- 饮食支持:了解过敏原、添加剂和饮食相容性
可用工具
核心产品工具
- 搜索产品:在Open Food Facts数据库中按名称、品牌、类别或其他关键字搜索产品
- Getproducer博德:通过条形码(EAN、UPC等)获取产品的详细信息
- 分析产品:获取基于人工智能的食品营养分析
- 比较产品:比较两款具有人工智能洞察力的产品
- 建议食谱:使用产品获取基于人工智能的食谱建议
分类和搜索工具
- 按类别搜索:搜索特定食品类别中的产品(如饮料、零食、乳制品、谷物)
- 按品牌搜索:查找特定品牌的所有产品
- 高级搜索:使用多种过滤器进行高级产品搜索,包括类别、品牌、营养评分、生态评分、NOVA组、无过敏原选项、标签和国家
- 自动完成:获取类别、品牌、标签、成分、过敏原或添加剂的自动完成建议
营养与健康工具
- 获取营养评分:获取产品的营养评分等级(A-E)-快速健康评估一目了然
- 获取生态评分:获取产品的生态评分(环境影响评级A-E)
- 获取附加信息:列出产品中的所有添加剂及其E号和NOVA加工水平
- getAllergenCheck:检查产品是否含有特定的过敏原(麸质、牛奶、鸡蛋、坚果、花生、大豆、鱼类、贝类等)
- 检查多种过敏原:同时检查产品是否含有多种过敏原中的任何一种
AI洞察工具
- getProductA常见问题:获取人工智能生成的关于需要人工验证的产品的问题
- getRandomAIQuestions:从Robotoff获取需要人工验证的随机人工智能生成问题,这对社区贡献非常有益
- 获取产品洞察:获取人工智能生成的关于产品的见解(检测到的标签、类别、成分问题等)
- getInsightTypes:获取Robotoff中可用AI洞察类型的摘要
价格工具
- 获取产品价格:从Open prices获取产品的价格历史和当前价格
- 搜索价格:使用过滤器搜索价格(货币、国家、日期范围)
- 获取最新价格:获取最近添加的价格,以了解可用的价格
入门指南
先决条件
- Node.js(v16.x或更高版本)
- npm或纱线
安装
- 克隆或下载此存储库
- 安装依赖项:
npm install- 构建服务器:
npm run build- 启动服务器:
npm start使用AI助手
克劳德桌面版
- 启动MCP服务器:
npm start- 添加到您的Claude Desktop配置(
~/Library/Application Support/Claude/claude_desktop_config.json在macOS上):
{
"mcpServers": {
"openfoodfacts": {
"command": "node",
"args": ["/path/to/OpenFoodFacts-MCP/dist/index.js"],
"env": {
"TRANSPORT": "stdio"
}
}
}
}VS代码与GitHub Copilot
- 为VS代码安装“模型上下文协议”扩展
- 创建
.vscode/mcp.json:
{
"servers": {
"openfoodfacts": {
"command": "node",
"args": ["${workspaceFolder}/dist/cli.js"],
"env": {
"TRANSPORT": "stdio"
}
}
}
}其他AI工具
服务器支持基于浏览器的AI工具的HTTP/SSE传输:
TRANSPORT=http PORT=3000 npm start然后将您的AI工具连接到 http://localhost:3000/sse
对话示例
以下是让你的人工智能助手使用Open Food Facts工具的自然方法:
搜索产品
- “在开放食品事实数据库中搜索巧克力谷物”
- “查找含有杏仁奶的产品”
- “寻找有机酸奶产品”
获取产品详细信息
- “获取条形码为3017620422003的产品信息”
- “EAN 5000159407236的产品中有什么?”
- “显示条形码8076809513326的营养数据”
分析产品
- “你能分析Nutella的营养吗?”
- “分析Cheerios麦片,告诉我它是否健康”
- “给我一份奥利奥饼干的健康分析”
- “条形码为3017620422003的产品是否健康?”
比较产品
- “比较Nutella和Nocciolata”
- “哪个更健康:可口可乐还是百事可乐?”
- “比较杏仁奶和豆浆的营养”
- “将产品与条形码3017620422003和5000159407236进行比较”
食谱建议
- “我能用希腊酸奶做什么?”
- “建议一些使用鹰嘴豆的食谱”
- “给我藜麦的食谱建议”
- “我可以用3017620422003产品制作什么食谱?”
类别和品牌搜索
- “显示饮料类别中的所有产品”
- “查找所有雀巢产品”
- “搜索营养评分为A的有机产品”
- “寻找生态评分良好的纯素零食”
过敏原检查
- “Nutella含有麸质吗?”
- “检查此产品对牛奶和鸡蛋过敏的人是否安全”
- 条形码3017620422003不含花生吗
- “麦圈里有什么过敏原?”
价格查询
- “Nutella现在的价格是多少?”
- “显示法国产品的最新价格”
- “比较条形码3017620422003的价格”
资源和提示
MCP服务器提供有用的资源和提示:
资源
服务器提供教育资源,帮助您了解食品数据:
- 快速帮助指南:如何使用Open Food Facts工具-快速参考
- 营养评分指南:了解营养评分健康评级(A-E)
- 生态评分指南:了解生态评分环境评级(A-E)
- 过敏原参考:常见的食物过敏原及其藏身之处
- 食品添加剂指南:了解电子号码和食品添加剂
- NOVA加工指南:了解食品加工水平(1-4)
提示
预配置的提示可帮助您快速入门:
- 分析产品:获取详细的营养分析
- 比较产品:并排比较两种产品
- 寻找健康的替代品:寻找更健康的产品替代品
- 检查过敏原:检查产品是否对您的过敏是安全的
- 晚饭吃什么:使用产品获得食谱创意
运作原理
MCP服务器充当AI助手和Open Food Facts数据库之间的桥梁:
- 您的问题:你向你的人工智能助手询问食品
- 刀具检测:人工智能认识到它需要开放食品事实数据
- MCP请求:AI调用适当的MCP工具
- 数据检索:服务器从Open Food Facts获取数据
- AI分析:人工智能处理数据并对您做出响应
示例工作流
做出更健康的选择
You: "Is Nutella healthy?"
AI Assistant uses:
1. searchProducts to find Nutella
2. getProductByBarcode with the barcode
3. analyzeProduct for nutritional assessment
Response: Detailed analysis of Nutella's nutritional profile,
health scores, ingredients, and dietary considerations比较选项
You: "Which is better for me, Nutella or almond butter?"
AI Assistant uses:
1. searchProducts for both products
2. compareProducts with both barcodes
Response: Side-by-side comparison with recommendations
based on your dietary needs食谱规划
You: "What can I make with Greek yogurt?"
AI Assistant uses:
1. searchProducts to find Greek yogurt
2. suggestRecipes with the product
Response: Recipe suggestions that use Greek yogurt
as an ingredient技术细节
服务器架构
服务器遵循模块化架构,以实现可维护性和可扩展性:
核心服务器
src/index.ts:入口点src/server.ts:核心MCP服务器实现,具有资源和快速注册功能src/cli.ts:用于开发的CLI界面
工具(模块化设计)
src/tools/index.ts:工具注册编排器和核心产品工具src/tools/product-search.ts:产品搜索和条形码查找实用程序src/tools/category-tools.ts:类别和品牌搜索工具src/tools/nutrition-tools.ts:营养评分、过敏原检查和添加剂信息src/tools/insights-tools.ts:Robotoff的AI生成见解src/tools/price-tools.ts:公开价格中的产品定价数据src/tools/types.ts:共享类型定义和接口src/tools/helpers.ts:所有工具的可重用辅助函数
资源与服务
src/resources/:指南和文件的资源处理人员
- resource-registry.ts:资源注册系统 - static-resources.ts:静态资源内容(指南、参考)
src/sampling/:用于分析和配方生成的AI模型集成
- sampling-service.ts:用于AI功能的MCP采样集成
基础设施
src/transport/:通信层(用于CLI/编辑器的stdio,用于浏览器的HTTP)src/config/:服务器配置
数据源
所有产品数据均来自 开放食品事实,一个免费、开放、协作的世界各地食品数据库。
故障排除
服务器无法启动
- 确保已安装Node.js v16+
- 跑
npm install安装依赖项 - 检查端口3000是否可用(用于HTTP模式)
AI找不到工具
- 验证MCP服务器是否正在运行
- 检查AI助手的MCP配置
- 确保传输类型匹配(stdio与HTTP)
未找到产品
- 请先尝试搜索
searchProducts - 验证条形码是否正确(8-14位数字)
- 某些产品可能尚未在数据库中
反应缓慢
- 服务器从Open Food Facts获取实时数据
- 在检索数据时,第一次请求可能会变慢
- 互联网连接速度影响性能
贡献
我们欢迎捐款!您可以通过以下方式提供帮助:
- 添加对更多食品数据库的支持
- 改进AI分析提示
- 加强错误处理
- 添加新的饮食跟踪工具
- 改进文件
关于开放食品事实
Open Food Facts是一个由每个人为每个人创建的食品数据库。这是一个合作项目,收集来自世界各地的食品信息,包括:
- 配料
- 营养成分
- 过敏原
- 环境影响
- 健康评分(营养评分,NOVA)
了解更多信息,请访问 https://world.openfoodfacts.org/
许可证
该项目根据GNU Affero通用公共许可证v3.0获得许可,与开放食品事实项目一致。
支持
- 开放食品事实网站:https://world.openfoodfacts.org/
- 开放食品事实GitHub:https://github.com/openfoodfacts
- 模型上下文协议:https://modelcontextprotocol.io/
______________________________________________________________________
为各地注重食品的消费者精心制作

