](https://mseep.ai/app/rldiao-mealie-mcp-server)
Mealie MCP服务器
一个全面的模型上下文协议(MCP)服务器,使AI助手能够与您的 米莉 通过Claude Desktop等客户端创建配方数据库。
✨ 特性
🍽️ 食谱管理
- CRUD操作:创建、读取、更新、修补、复制和删除食谱
- 高级搜索:使用and/OR逻辑按文本、类别、标签和工具进行筛选
- 图像管理:上传图片或从URL抓取
- 资产上传:将文档和文件附加到食谱
- 元数据跟踪:将食谱标记为已制作,跟踪上次制作日期
🛒 购物单
- 列表管理:创建、更新和删除购物清单
- 项目操作:添加、更新、签出和删除项目
- 批量操作:一次创建、更新或删除多个项目
- 配方集成:自动将配方成分添加到购物清单中
🏷️ 组织
- 类别:按类别组织食谱(早餐、晚餐等)
- 标签:标记食谱以便于过滤(快速、健康、家庭收藏夹)
- 高级过滤:具有完全分页支持的搜索和筛选
- 空检测:查找未使用的类别和标签
📅 膳食计划
- 膳食计划:查看和管理膳食计划
- 批量创建:一次添加多餐
- 今日菜单:快速获取今天的计划膳食
🚀 快速开始
先决条件
- Python 3.12+
- 使用API密钥运行Mealie实例
- 包管理器 紫外线
安装
选项1:使用fastmcp(推荐)
使用直接安装服务器 fastmcp 命令:
fastmcp install src/server.py \
--env-var MEALIE_BASE_URL=https://your-mealie-instance.com \
--env-var MEALIE_API_KEY=your-mealie-api-key选项2:手动配置
将服务器添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"mealie-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/repo/src",
"run",
"server.py"
],
"env": {
"MEALIE_BASE_URL": "https://your-mealie-instance.com",
"MEALIE_API_KEY": "your-mealie-api-key"
}
}
}
}重新启动Claude Desktop以加载服务器。
📖 用法示例
配方操作
"Search for chicken recipes"
"Create a new recipe for pasta carbonara"
"Duplicate my lasagna recipe"
"Mark the meatloaf recipe as made today"
"Upload an image for the chocolate cake recipe"购物单
"Create a shopping list for this week"
"Add eggs and milk to my shopping list"
"Add all ingredients from the lasagna recipe to my shopping list"
"Check off milk on my shopping list"
"Delete all checked items from my shopping list"组织
"Show me all my recipe categories"
"Create a new tag called 'Quick Meals'"
"Find all recipes tagged with 'healthy'"
"Show me categories that have no recipes"高级过滤
"Find recipes that have both 'quick' AND 'healthy' tags"
"Search for breakfast recipes containing 'eggs'"
"Show me all vegetarian dinner recipes"🎯 可用工具
配方工具(13个操作)
get_recipes-使用高级过滤功能列出/搜索食谱get_recipe_detailed-获取完整的食谱详细信息get_recipe_concise-获取食谱摘要create_recipe-创建新配方update_recipe-更新配方(完全替换)patch_recipe-仅更新特定字段duplicate_recipe-复制食谱mark_recipe_last_made-更新上次制作的时间戳set_recipe_image_from_url-从URL设置图像upload_recipe_image_file-上传图像文件upload_recipe_asset_file-上传文档/资产delete_recipe-删除配方
购物清单工具(14项操作)
get_shopping_lists-列出所有购物清单create_shopping_list-创建新列表get_shopping_list-按ID获取列表delete_shopping_list-删除列表add_recipe_to_shopping_list-添加食谱配料remove_recipe_from_shopping_list-删除配方成分get_shopping_list_items-列出所有项目get_shopping_list_item-按ID获取项目create_shopping_list_item-创建单个项目create_shopping_list_items_bulk-创建多个项目update_shopping_list_item-更新项目(保留字段)update_shopping_list_items_bulk-更新多个项目delete_shopping_list_item-删除单个项目delete_shopping_list_items_bulk-删除多个项目
类别工具(7项操作)
get_categories-列表/搜索类别get_empty_categories-查找未使用的类别create_category-创建新类别get_category-按ID获取get_category_by_slug-通过slug获得update_category-更新类别delete_category-删除类别
标签工具(7次操作)
get_tags-列表/搜索标签get_empty_tags-查找未使用的标签create_tag-创建新标签get_tag-按ID获取get_tag_by_slug-通过slug获得update_tag-更新标签delete_tag-删除标签
膳食计划工具(4个操作)
get_all_mealplans-列出膳食计划create_mealplan-创建膳食计划条目create_mealplan_bulk-创建多个条目get_todays_mealplan-获取今天的餐点
总计:45个工具 提供全面的Mealie API覆盖范围
🔧 发展
设置
- 克隆存储库:
git clone
cd mealie-mcp-server- 安装依赖项:
uv sync- 配置环境:
cp .env.template .env
# Edit .env with your Mealie instance details- 运行MCP检查器进行测试:
uv run mcp dev src/server.py项目结构
mealie-mcp-server/
├── src/
│ ├── mealie/ # API client mixins
│ │ ├── client.py # Base HTTP client
│ │ ├── recipe.py # Recipe operations
│ │ ├── shopping_list.py # Shopping list operations
│ │ ├── categories.py # Category operations
│ │ ├── tags.py # Tag operations
│ │ ├── mealplan.py # Meal plan operations
│ │ └── __init__.py # MealieFetcher aggregator
│ ├── tools/ # MCP tool definitions
│ │ ├── recipe_tools.py
│ │ ├── shopping_list_tools.py
│ │ ├── categories_tools.py
│ │ ├── tags_tools.py
│ │ ├── mealplan_tools.py
│ │ └── __init__.py
│ ├── models/ # Pydantic models
│ ├── server.py # MCP server entry point
│ └── prompts.py # Server prompts
├── CHANGELOG.md # Version history
└── README.md📚 重要说明
按标签/类别筛选
在筛选食谱时,您 必须使用slug或UUID,不显示名称:
✅ 对的:
"Get recipes with tags=['quick-meals', 'healthy']"❌ 不正确:
"Get recipes with tags=['Quick Meals', 'Healthy']"使用 get_tags() 或 get_categories() 首先找到正确的蛞蝓。
现场保护
更新购物清单项目时,服务器会自动保留所有现有字段。您只需指定要更改的字段:
# Only updates 'checked' field, preserves note, quantity, etc.
update_shopping_list_item(item_id="...", checked=True)🐛 已知问题
目前没有!所有功能均已使用Claude Desktop进行端到端测试。
🔄 更新日志
看 更改日志.md 查看更改和版本历史的详细列表。
🤝 贡献
欢迎投稿!请随时提交拉取请求。
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 积分
📞 支持
对于问题和疑问:
- 检查 更改日志.md 查看最新更新
- 查看Mealie API文件
- 在GitHub上打开一个问题
