mcpField
T
Tandoor MCP Server

Tandoor MCP Server

本地服务
github.com/starbuck93健康医疗1883 周前更新

关于 Tandoor MCP Server

Tandoor MCP Server 将 MCP 客户端连接到 Tandoor Recipe Manager。它通过一组工具支持食谱和膳食计划操作,也可管理购物清单。

主要功能

  1. 01创建含食材和步骤的食谱
  2. 02按名称和条件搜索食谱
  3. 03创建并筛选膳食计划
  4. 04获取食谱详情和食材列表
  5. 05管理购物清单项目

适用场景

  1. 01通过客户端向 Tandoor 添加食谱
  2. 02按食材、关键词或评分查找食谱
  3. 03按日期和餐型安排膳食
  4. 04更新或勾选购物项目

MCP 相关

向 MCP 客户端提供创建和搜索食谱、管理膳食计划、获取 Tandoor 数据及编辑购物清单的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Tandoor MCP 服务

用于与 Tandoor Recipe Manager 交互的模型上下文协议(MCP)服务。

由 Gemini 生成的图片

当前状态

  • ✅ create_tandoor_recipe:已成功实现并测试
  • ✅ create_tandoor_meal_plan:已成功实现并测试
  • ✅ get_recipes:已成功实现并测试
  • ✅ get_meal_plans:已成功实现并测试
  • ✅ get_recipe_details:已实现
  • ✅ get_meal_types:已实现
  • ✅ get_keywords:已实现
  • ✅ get_foods:已实现
  • ✅ get_units:已实现
  • ✅ get_shopping_list:已实现
  • ✅ add_shopping_list_item:已实现(支持名称查找)
  • ✅ update_shopping_list_item:已实现
  • ✅ remove_shopping_list_item:已实现

功能

  • 在 Tandoor 中创建包含食材和说明的食谱
  • 将食谱添加到指定日期和餐食类型的用餐计划中
  • 根据各种条件(名称、关键词、食材、评分)搜索食谱
  • 获取按日期范围和餐食类型筛选的用餐计划
  • 获取指定食谱的完整详情
  • 列出可用的餐食类型、关键词、食材和单位
  • 管理购物清单条目(查看、添加、更新、移除)

设置

  1. 安装依赖项:

    npm install
    
  2. 构建服务:

    npm run build
    
  3. 手动运行服务(用于测试):

    # Windows PowerShell
    $env:TANDOOR_URL = "https://your-tandoor-instance.com"
    $env:TANDOOR_API_TOKEN = "your-api-token"
    node .\build\index.js
    
    # Windows CMD
    set TANDOOR_URL=https://your-tandoor-instance.com
    set TANDOOR_API_TOKEN=your-api-token
    node .\build\index.js
    
    # Linux/macOS
    TANDOOR_URL=https://your-tandoor-instance.com TANDOOR_API_TOKEN=your-api-token node ./build/index.js
    
  4. 在 MCP 设置中配置:

    {
      "mcpServers": {
        "tandoor": {
          "command": "node",
          "args": ["path/to/tandoor-mcp-server/build/index.js"],
          "env": {
            "TANDOOR_URL": "https://your-tandoor-instance.com",
            "TANDOOR_API_TOKEN": "your-api-token"
          },
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    
  5. 如果希望全部自动批准……

      "autoApprove": [
        "add_shopping_list_item",
        "create_tandoor_meal_plan",
        "create_tandoor_recipe",
        "get_foods",
        "get_keywords",
        "get_meal_plans",
        "get_meal_types",
        "get_recipe_details",
        "get_recipes",
        "get_recipes",
        "get_shopping_list",
        "get_units",
        "remove_shopping_list_item",
        "update_shopping_list_item"
      ]

  1. 将 ./.clinerules 添加到项目目录
  • 也可以选择添加 ./memory-bank,并在其中放置一份 Markdown 或文本文件,列出你喜欢或不喜欢的食材,以便助手为你推荐餐食。

可用工具

create_tandoor_recipe

在 Tandoor 中创建新食谱。

参数:

  • name(string,必填):食谱名称。
  • description(string,可选):食谱说明。
  • servings(number,可选):份数。
  • ingredients_block(string,必填):多行文本,每行列出一种食材。
  • instructions_block(string,必填):多行文本,详细说明食谱的制作步骤。

示例:

{
  "name": "Simple Pasta",
  "description": "A quick and easy pasta dish.",
  "servings": 2,
  "ingredients_block": "200g pasta\n2 tbsp olive oil\n1 clove garlic, minced\nSalt and pepper to taste",
  "instructions_block": "1. Cook pasta according to package instructions.\n2. Heat oil in a pan and add garlic.\n3. Drain pasta and add to the pan.\n4. Season with salt and pepper."
}
create_tandoor_meal_plan

将一个或多个食谱添加到指定日期和餐食类型的 Tandoor 用餐计划中。

参数:

  • title(string,可选):用餐计划条目的标题。
  • recipes(array,必填):要添加到计划中的食谱名称或 ID 数组。
  • start_date(string,必填):用餐计划条目的日期(YYYY-MM-DD)。
  • meal_type(string,必填):餐食类型的名称(例如,'Dinner'、'Lunch')。
  • servings(number,可选):用餐计划条目的份数(默认值:1)。
  • note(string,可选):用餐计划条目的备注。

示例:

{
  "title": "Friday Dinner",
  "recipes": [123, "Simple Pasta"],
  "start_date": "2025-03-29",
  "meal_type": "Dinner",
  "servings": 2,
  "note": "Quick dinner for Friday night."
}
get_recipes

根据各种条件搜索 Tandoor 中的食谱。

参数:

  • query(string,可选):用于匹配食谱名称的搜索词(模糊匹配)。
  • keywords(array of integers,可选):关键词 ID 数组。返回匹配其中任意关键词的食谱。
  • foods(array of integers,可选):食材 ID 数组。返回包含其中任意食材的食谱。
  • rating(integer,可选):食谱应达到的最低评分(0-5)。
  • limit(integer,可选):返回的食谱数量上限。默认值为 10。

示例:

{
  "query": "chicken",
  "keywords": [5, 12],
  "rating": 4,
  "limit": 5
}
get_meal_plans

获取 Tandoor 中的用餐计划条目,可选择按日期范围和餐食类型筛选。

参数:

  • from_date(string,可选):筛选用餐计划的开始日期(YYYY-MM-DD,包含该日期)。
  • to_date(string,可选):筛选用餐计划的结束日期(YYYY-MM-DD,包含该日期)。
  • meal_type_id(integer,可选):用于筛选的餐食类型 ID。

示例:

{
  "from_date": "2025-03-01",
  "to_date": "2025-03-31",
  "meal_type_id": 1
}
get_recipe_details

获取指定食谱的完整详情。

参数:

  • recipe_id(整数,必填):要获取的食谱 ID。

示例:

{
  "recipe_id": 123
}
get_meal_types

列出 Tandoor 中所有可用的餐食类型。

参数: 无

示例:

{}
get_keywords

列出或搜索关键词。

参数:

  • query(字符串,可选):用于搜索关键词名称的可选搜索词。
  • root(整数,可选):用于获取第一层子项的可选 ID(根节点为 0)。
  • tree(整数,可选):用于获取树中所有子项的可选 ID。

示例:

{
  "query": "italian"
}
get_foods

列出或搜索食物。

参数:

  • query(字符串,可选):用于搜索食物名称的可选搜索词。
  • root(整数,可选):用于获取第一层子项的可选 ID(根节点为 0)。
  • tree(整数,可选):用于获取树中所有子项的可选 ID。

示例:

{
  "query": "chicken breast"
}
get_units

列出或搜索单位。

参数:

  • query(字符串,可选):用于搜索单位名称的可选搜索词。

示例:

{
  "query": "gram"
}
get_shopping_list

获取当前购物清单中的项目。

参数:

  • checked(字符串,可选):按勾选状态筛选("true"、"false"、"both"、"recent")。默认为 "recent"。

示例:

{
  "checked": "false" 
}
add_shopping_list_item

向购物清单添加项目,可使用食物名称或 ID,以及单位名称或 ID。

参数:

  • food_name_or_id(字符串或整数,必填):食物项目的名称或 ID。
  • amount(字符串,必填):所需数量(例如:'1'、'2.5'、'1/2')。
  • unit_name_or_id(字符串或整数,必填):单位的名称或 ID(例如:'cup'、'g'、5)。
  • note(字符串,可选):项目备注。

示例(使用名称):

{
  "food_name_or_id": "Chicken Breast",
  "amount": "500",
  "unit_name_or_id": "g",
  "note": "For stir-fry"
}

示例(使用 ID):

{
  "food_name_or_id": 42,
  "amount": "2",
  "unit_name_or_id": 15
}
update_shopping_list_item

更新现有购物清单项目(例如,勾选或取消勾选、修改数量)。

参数:

  • item_id(整数,必填):要更新的购物清单项目 ID。
  • amount(字符串,可选):新的数量。
  • unit_id(整数,可选):新的单位 ID。
  • checked(布尔值,可选):新的勾选状态。
  • note(字符串,可选):新的备注。

示例(勾选项目):

{
  "item_id": 101,
  "checked": true
}
remove_shopping_list_item

从购物清单中移除项目。

参数:

  • item_id(整数,必填):要移除的购物清单项目 ID。

示例:

{
  "item_id": 102
}

测试

项目包含一个测试脚本,可帮助你在不依赖 MCP 连接的情况下验证服务功能:

# Set your API token (if not already set in the environment)
$env:TANDOOR_API_TOKEN = "your-api-token"

# Run the test script
npm run test

测试脚本提供一个简单菜单,可用于:

  1. 列出可用工具
  2. 测试创建食谱
  3. 测试将食谱添加到膳食计划

实现说明

Tandoor API 对创建膳食计划有一些特定要求:

  1. from_date 字段必须包含时间部分(YYYY-MM-DDT00:00:00)
  2. recipe 字段必须是包含 id、name 和 keywords 属性的对象
  3. meal_type 字段必须是包含 id 和 name 属性的对象
  4. servings 字段必须是字符串,不能是数字

MCP 服务会自动处理这些要求。

故障排除

如果 MCP 服务出现问题:

  1. 确认服务正在运行,并显示 [Setup] Tandoor MCP server running on stdio.
  2. 检查 Tandoor URL 和 API 令牌是否正确
  3. 查看服务运行所在终端中的错误消息
  4. 确认餐食类型名称与 Tandoor 实例中的名称完全一致
  5. 使用测试脚本在 MCP 系统之外验证服务功能
  6. 尝试手动运行服务,并检查控制台输出中的详细错误消息

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。