mcpField
M
Menus Recommender

Menus Recommender

本地服务
github.com/spyyps游戏娱乐019 周前更新

关于 Menus Recommender

Menus Recommender 是一款 MCP 服务,使用本地全球菜品集合推荐美食。加权随机选择及菜系、地区、关键词和价格筛选,帮助兼容 MCP 的 Agent 获得多样化建议。

主要功能

  1. 01加权随机推荐菜品
  2. 02按菜系、地区、关键词和价格筛选
  3. 03排除已推荐的菜品 ID
  4. 04设置种子以复现选择结果
  5. 05列出支持的关键词

适用场景

  1. 01获取多样化的用餐建议
  2. 02按预算和菜系缩小菜品范围
  3. 03不重复地请求另一批推荐
  4. 04查看支持哪些筛选条件

MCP 相关

MCP 服务提供 `recommend_dishes`,用于筛选并加权推荐;另提供 `list_keywords` 以返回支持的关键词列表。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"spyyps-menus-recommender": {
"command": "uvx",
"args": [
"menus-mcp"
]
}
}
}
启动命令uvx menus-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimenus-mcp1.0.1

工具

还没有获取到工具列表

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

详细介绍

来自项目 README

menus-mcp:全球美食推荐 MCP Server

基于 462 道菜、41 个菜系的全球美食知识库做加权随机推荐。任何支持 Model Context Protocol(MCP)的 AI agent 均可使用,包括:

快速安装

也可在 MCP Registry 直接搜到本 server(io.github.spyyps/menus-recommender)。

方式 1:uvx(推荐,无需安装)
{
  "mcpServers": {
    "menus": {
      "command": "uvx",
      "args": ["menus-mcp"]
    }
  }
}

uvx 会自动从 PyPI 下载并运行,首次启动稍有延迟(数据加载约 1s),后续缓存到本地。

方式 2:pip install
pip install menus-mcp

然后在 MCP 客户端配置中:

{
  "mcpServers": {
    "menus": {
      "command": "menus-mcp"
    }
  }
}
方式 3:本地源码运行
git clone https://github.com/spyyps/recommend-dish
cd recommend-dish
pip install -r mcp-server/requirements.txt
# 运行入口
python3 mcp-server/server.py
# 或在 mcp-server/ 目录下:
cd mcp-server && python3 -m menus_mcp

然后客户端配置:

{
  "mcpServers": {
    "menus": {
      "command": "python3",
      "args": ["/path/to/recommend-dish/mcp-server/server.py"]
    }
  }
}

开放的工具

recommend_dishes

主推荐工具。参数(皆为可选):

参数类型默认说明
countint3推荐数量
keywordsstr""逗号分隔的关键词(OR语义),见下方白名单
price_tierstr""经济(≤20)/实惠(21-50)/中档(51-100)/高档(101-200)/奢华(>200)
max_priceint0价格上限(CNY)
cuisinestr""菜系名(如「川菜」「日本料理」)
geostr""地理大类(如「亚洲」「欧洲」)
exclude_idsstr""逗号分隔的菜品 ID,用于换一批去重
seedint0随机种子(0=系统时间)

支持的关键词白名单:

  • 口味:麻辣、辣、甜、酸、咸、鲜
  • 食材:海鲜、牛肉、羊肉、猪肉、鸡肉、素食
  • 类型:面食、米饭类、汤、甜品、烧烤、火锅、咖喱、汉堡披萨、饮品

否定注意:用户说「不要太辣」时不要传入 辣——传空即可。关键词做硬过滤,传入就会强制匹配。

返回示例(JSON):

{
  "dishes": [
    {"id": "cn_ch_001", "name": "麻婆豆腐", "name_en": "Mapo Tofu", "price": 38, "cuisine": "川菜", "region": "中华料理", "description": "嫩豆腐配牛肉末,以花椒和豆瓣酱炒制,麻辣鲜香"}
  ],
  "exhausted": false,
  "filters": {"count": 3, "keywords": ["辣"], "price_tier": "", "relaxed": false, ...},
  "candidate_pool_size": 54,
  "returned": 3
}

exhausted=true 表示候选池不足,应触发兜底链(放宽约束、网络搜索、LLM 常识)。

list_keywords

返回支持的关键词白名单。无参数。

兜底推荐

MCP server 仅负责第一层(本地知识库 + 加权随机)。当 exhausted=true 时,应自行按以下链兜底:

  1. 降级过滤:去掉价格约束,重试
  2. Web 搜索:查 "{用户原话} 推荐 菜品"
  3. LLM 常识:基于通用知识推荐,标注「非知识库菜品」

算法说明

  • 关键词硬过滤:用户传关键词时菜品必须至少匹配一个(OR)
  • 反偏置:权重 × 1/√(该菜系菜品数),防止大菜系压制小菜系
  • 多样性:同一菜系最多 ceil(count/3) 道
  • 价格松弛:候选不足时自动去价格档重试一次

发布

cd mcp-server
pip install build
python3 -m build
twine upload dist/*

详见 PyPI 发布指南。

评论

支持 Markdown

第一次接触 MCP?

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

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