内容
# 食物配方 MCP
<!-- mcp-name: io.github.AIDataNordic/food-recipe-mcp -->
对超过 50,000 个食物配方进行语义搜索 — 为 AI 代理和大语言模型(LLMs)构建。采用两阶段混合检索(密集 + 稀疏 BM25,通过 RRF 融合)并结合交叉编码器重新排序。支持挪威语和英语的自然语言查询。
**在线端点:** `https://recipes.aidatanorge.no/mcp`
**传输方式:** `streamable-http`
**演示:** [https://recipes.aidatanorge.no/](https://recipes.aidatanorge.no/)
---
## 连接
将以下内容添加到您的 MCP 客户端配置中:
```json
{
"mcpServers": {
"food-recipe": {
"type": "streamable-http",
"url": "https://recipes.aidatanorge.no/mcp"
}
}
}
```
或使用 Claude 代码:
```bash
claude mcp add --transport http food-recipe https://recipes.aidatanorge.no/mcp
```
---
## 快速测试
**在浏览器中尝试在线演示:**
[https://recipes.aidatanorge.no/](https://recipes.aidatanorge.no/)
无需安装或配置。
---
## MCP 工具
### `search_recipes`
对 Food.com 超过 50,000 个配方的语义搜索,支持混合检索和重新排序。
```python
search_recipes(
query="适合工作日晚餐的快速意大利面",
diet="vegetarian", # 素食 | 纯素 | 无麸质 | 无乳制品 | 低碳水化合物 | 生酮饮食 | 古人饮食
max_minutes=30, # 最大烹饪时间(分钟)
difficulty="easy", # 简单 | 中等 | 困难
limit=5 # 默认 5,最大 20
)
# 返回:重新排序分数,RRF 分数,标题,描述,总时间,难度,
# 饮食,主要成分,份量,成分,说明,营养,
# 评分,评分人数,来源,配方 ID
```
**查询示例:**
- `"瑞典肉丸配酱汁"`
- `"健康高蛋白鸡肉碗"`
- `"适合初学者的简单巧克力蛋糕"`
- `"传统的挪威 kjøttkaker"`
- `"快速鸡肉意大利面"`
**搜索流程:** 密集嵌入(`intfloat/e5-large-v2`,1024 维)+ 稀疏 BM25,通过 Reciprocal Rank Fusion(RRF)融合,再由 `mmarco-mMiniLMv2-L12-H384-v1` 重新排序。
### `ping`
```python
ping(name="world")
# 返回: "Hello world! Recipe MCP server is running."
```
---
## 数据
- **来源:** Food.com(约 50,000 个配方)
- **覆盖范围:** 广泛的菜系、餐点类型和烹饪风格
- **营养数据:** 每份卡路里、脂肪、蛋白质、碳水化合物、钠、纤维、糖
- **评分:** 用户评分 + 每个配方的评分人数
- **语言:** 原生支持英语和挪威语查询
---
## 架构
```
Food.com 配方 → Python 导入 → Qdrant(recipe_data_v2 集合)
↓
混合搜索(密集 e5-large-v2 + 稀疏 BM25)
↓
RRF 融合 + 交叉编码器重新排序
↓
FastMCP 3.2 → MCP 客户端 / AI 代理
```
---
## 技术栈
- **嵌入:** `intfloat/e5-large-v2`(1024 维密集)+ `Qdrant/bm25`(稀疏)
- **重新排序器:** `cross-encoder/mmarco-mMiniLMv2-L12-H384-v1`
- **向量数据库:** Qdrant(自托管)
- **服务器:** FastMCP 3.2,基于 HTTP
- **基础设施:** Ubuntu Server 24 LTS,Cloudflare Tunnel
---
## 许可证
MIT