A weighted random recommender that pulls from a 396 dish knowledge base spanning 40+ global cuisines. It exposes two MCP tools: recommend_dishes for filtering by keywords like "辣" or "海鲜", price tiers, cuisine types, and geographies, plus list_keywords to show what's supported. The algorithm does OR matching on keywords, applies inverse square root weighting to prevent Chinese cuisine from dominating results, and enforces diversity so you don't get three Sichuan dishes in one batch. Reach for this when you want meal suggestions that balance variety across cuisines instead of just frequency based recommendations. Install via uvx menus-mcp or pip, works with Claude Desktop, Cline, Cursor, and any MCP compatible client. Zero external dependencies, pure Python stdlib.
一个 AI agent 插件:当用户表达就餐意向(「推荐晚餐」「不知道吃什么」「想吃点辣的」),基于 396 道菜的全球美食知识库做加权随机推荐。
python3 scripts/recommender.py --count 3 --keywords "辣,牛肉"
返回 JSON:
{"dishes": [{"id": "...", "name": "麻婆豆腐", "price": 38, "cuisine": "川菜", ...}, ...], "exhausted": false, ...}
完整参数:
python3 scripts/recommender.py --help
方式 A:自建 marketplace(推荐)
/plugin marketplace add spyyps/recommend-dish
/plugin install menus-recommender@spyyps-recommend-dish
安装后在任意目录的 Claude Code 会话里说「推荐晚餐」「想吃点辣的」即可触发。
后续更新插件:/plugin update menus-recommender。
方式 B:本地 git clone
git clone https://github.com/spyyps/recommend-dish ~/.claude/plugins/menus-recommender
git clone https://github.com/spyyps/recommend-dish
cd recommend-dish
gemini # 在本目录运行 Gemini CLI,会自动加载 GEMINI.md
待添加(参考 .cursor-plugin/ 与 .codex-plugin/ 的多 manifest 适配,第二阶段交付)。
适用于 Claude Desktop / Cline / Cursor / Continue 等任何 MCP 客户端。
uvx 方式(推荐,无需 pip install):
{
"mcpServers": {
"menus": {
"command": "uvx",
"args": ["menus-mcp"]
}
}
}
或者 pip install:
pip install menus-mcp
{
"mcpServers": {
"menus": { "command": "menus-mcp" }
}
}
| 用户说 | 触发 | 解析为 |
|---|---|---|
| 「推荐晚餐」 | ✓ | 默认 3 道,无筛选 |
| 「想吃点辣的」 | ✓ | --keywords "辣" |
| 「来 5 道便宜的海鲜」 | ✓ | --count 5 --keywords "海鲜" --price-tier "实惠" |
| 「推荐两道川菜」 | ✓ | --count 2 --cuisine "川菜" |
| 「换一批」(紧接上一次推荐) | ✓ | --exclude-ids "<上轮所有 id>" |
| 「100 块以内的欧洲菜」 | ✓ | --max-price 100 --geo "欧洲" |
只接受以下关键词,超出范围的(如「不辣」「清淡」)由 LLM 在调用前消化掉:
menu.json 与 knowledge_base/ 各索引文件git push 到 GitHub(本仓库已就绪:spyyps/recommend-dish).claude-plugin/marketplace.json 已配置好,列出所有可装插件仓库内 mcp-server/ 目录已实现 MCP server(Python,复用同一 recommender.py),暴露 recommend_dishes 与 list_keywords 两个工具。发布方式:
cd mcp-server
pip install build twine
python3 -m build
twine upload dist/*
用户 uvx menus-mcp 或 pip install menus-mcp 即可。github.com/modelcontextprotocol/servers 把 menus-mcp 加进列表。npx @anthropic-ai/mcpb pack → GitHub Release → 用户拖入 Claude Desktop 即装。MIT