本文件由AI生成，仅供参考。
本项目仅供个人学习使用。

# 下厨房食谱 MCP 服务
一个基于 Model Context Protocol (MCP) 的食谱查询服务，使用向量数据库 Milvus 和 LangChain 实现智能食谱检索。

## 功能特性

- 🍳 基于语义搜索的食谱查询
- 🔍 支持菜名和食材搜索
- 📚 使用 Milvus 向量数据库存储食谱数据
- 🤖 使用 HuggingFace 多语言嵌入模型

## 技术栈

- **FastMCP**: MCP 服务器框架
- **LangChain**: LLM 应用开发框架
- **Milvus**: 向量数据库
- **HuggingFace Embeddings**: 多语言嵌入模型

## 安装步骤
1. 安装依赖

```bash
pip install -r requirements.txt
```

2. 配置环境变量

创建 `.env` 文件（如果需要配置其他环境变量）：

```env
# 示例环境变量配置
DASHSCOPE_API_KEY="xxx"
```

3. 启动 Milvus 服务

确保 Milvus standalone数据库正在运行

## 使用方法

### 运行 MCP 服务器

```bash
python xcf_recipe.py
```

服务器将在端口 8002 上运行。

### API 接口

#### `get_xcf_recipe`

根据查询词返回相关食谱。

**参数：**
- `query` (str): 菜名或食材

**返回：**
```json
{
  "recipe_name": "食谱名称",
  "ingredients": "食材列表",
  "instructions": "制作步骤"
}
```

## 项目结构

```
xcf_recipe/
├── xcf_recipe.py              # 主程序文件
├── recipe_corpus_filtered.json # 食谱数据集
├── requirements.txt            # Python 依赖
├── README.md                  # 项目说明
├── LICENSE                    # MIT 许可证
└── .gitignore                 # Git 忽略文件
```

## 数据初始化

首次运行时，程序会自动：
1. 检查 Milvus 中是否存在 `xcf_recipe` 集合
2. 如果不存在，从 JSON 文件加载数据并创建向量索引
3. 数据会分批处理（每批 10000 条）以提高效率

## 开发说明

- 项目使用 `sentence-transformers/distiluse-base-multilingual-cased-v2` 作为嵌入模型
- 使用 IVF_FLAT 索引和 COSINE 相似度度量
- 默认返回最相似的一条食谱（k=1）

## 许可证

本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件

## 贡献

欢迎提交 Issue 和 Pull Request！

