Menus Recommender について
Menus Recommenderは、世界各地の料理データを使って料理を提案するMCPサーバーです。重み付きランダム選択と、料理ジャンル・地域・キーワード・価格による絞り込みで、MCP対応エージェントに多様な候補を提示します。
主な機能
- 01重み付きランダムによる料理提案
- 02料理ジャンル・地域・キーワード・価格で絞り込み
- 03提案済み料理IDの除外
- 04選択を再現するためのシード指定
- 05対応キーワードの一覧表示
活用シーン
- 01食事の候補を幅広く取得
- 02予算や料理ジャンルで候補を絞り込み
- 03重複を避けて次の候補を取得
- 04利用可能な絞り込み条件を確認
MCP 対応
MCPサーバーは、条件指定付きの重み付き提案を行う`recommend_dishes`と、対応キーワード一覧を返す`list_keywords`を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
プロジェクトの README よりmenus-mcp:全球美食推荐 MCP Server
基于 462 道菜、41 个菜系的全球美食知识库做加权随机推荐。任何支持 Model Context Protocol(MCP)的 AI agent 均可使用,包括:
- Claude Desktop
- Cline
- Cursor
- Continue
- 其他 MCP 兼容客户端
快速安装
也可在 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
主推荐工具。参数(皆为可选):
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
count | int | 3 | 推荐数量 |
keywords | str | "" | 逗号分隔的关键词(OR语义),见下方白名单 |
price_tier | str | "" | 经济(≤20)/实惠(21-50)/中档(51-100)/高档(101-200)/奢华(>200) |
max_price | int | 0 | 价格上限(CNY) |
cuisine | str | "" | 菜系名(如「川菜」「日本料理」) |
geo | str | "" | 地理大类(如「亚洲」「欧洲」) |
exclude_ids | str | "" | 逗号分隔的菜品 ID,用于换一批去重 |
seed | int | 0 | 随机种子(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 时,应自行按以下链兜底:
- 降级过滤:去掉价格约束,重试
- Web 搜索:查
"{用户原话} 推荐 菜品" - LLM 常识:基于通用知识推荐,标注「非知识库菜品」
算法说明
- 关键词硬过滤:用户传关键词时菜品必须至少匹配一个(OR)
- 反偏置:
权重 × 1/√(该菜系菜品数),防止大菜系压制小菜系 - 多样性:同一菜系最多 ceil(count/3) 道
- 价格松弛:候选不足时自动去价格档重试一次
发布
cd mcp-server
pip install build
python3 -m build
twine upload dist/*
详见 PyPI 发布指南。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。