io.github.AIDataNordic/food-recipe-mcp
Semantic search across 50,000+ food recipes with hybrid retrieval and reranking.
Open source Repository Open in the app JSON README (API)
About
Semantic search across 50,000+ food recipes with hybrid retrieval and reranking.
Details
- Kind
- MCP servers
- Topic
- AI, RAG & memory
- Publisher
- aidatanordic
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 1.0.1
- Stars
- 1
- Open pull requests
- 1
- Last push
- 2026-07-14T22:43:53Z
- Repository state
- ativo
- Language
- Python
- License
- MIT
- Added
- 2026-08-29 03:01:38
- Updated
- 2026-08-29 03:01:38
- Origin id
io.github.AIDataNordic/food-recipe-mcp
README
# Food Recipe MCP
<!-- mcp-name: io.github.AIDataNordic/food-recipe-mcp -->
Semantic search over 50,000+ food recipes — built for AI agents and LLMs. Two-stage hybrid retrieval (dense + sparse BM25, fused via RRF) with cross-encoder reranking. Supports natural language queries in Norwegian and English.
**Live endpoint:** `https://recipes.aidatanorge.no/mcp`
**Transport:** `streamable-http`
**Demo:** [https://recipes.aidatanorge.no/](https://recipes.aidatanorge.no/)
---
## Connect
Add to your MCP client config:
```json
{
"mcpServers": {
"food-recipe": {
"type": "streamable-http",
"url": "https://recipes.aidatanorge.no/mcp"
}
}
}
```
Or with Claude Code:
```bash
claude mcp add --transport http food-recipe https://recipes.aidatanorge.no/mcp
```
---
## Quick Test
**Try the live demo in your browser:**
[https://recipes.aidatanorge.no/](https://recipes.aidatanorge.no/)
No installation or configuration needed.
---
## MCP Tools
### `search_recipes`
Semantic search over 50,000+ recipes from Food.com with hybrid retrieval and reranking.
```python
search_recipes(
query="quick Italian pasta for weeknight dinner",
diet="vegetarian", # vegetarian | vegan | gluten-free | dairy-free | low-carb | keto | paleo
max_minutes=30, # maximum total cooking time in minutes
difficulty="easy", # easy | medium | hard
limit=5 # default 5, max 20
)
# Returns: rerank_score, rrf_score, title, description, total_time, difficulty,
# diet, main_ingredient, servings, ingredients, instructions, nutrition,
# rating, rating_count, source, recipe_id
```
**Query examples:**
- `"Swedish meatballs with gravy"`
- `"healthy high-protein chicken bowl"`
- `"easy chocolate cake for beginners"`
- `"traditional Norwegian kjøttkaker"`
- `"hurtig pasta med kylling"`
**Search pipeline:** Dense embedding (`intfloat/e5-large-v2`, 1024d) + sparse BM25, fused via Reciprocal Rank Fusion (RRF), reranked by `mmarco-mMiniLMv2-L12-H384-v1`.
### `ping`
```python
ping(name="world")
# Returns: "Hello world! Recipe MCP server is running."
```
---
## Data
- **Source:** Food.com (~50,000 recipes)
- **Coverage:** Wide range of cuisines, meal types, and cooking styles
- **Nutritional data:** calories, fat, protein, carbohydrates, sodium, fiber, sugar per serving
- **Ratings:** user rating + rating count per recipe
- **Languages:** English and Norwegian supported natively in queries
---
## Architecture
```
Food.com recipes → Python ingest → Qdrant (recipe_data_v2 collection)
↓
Hybrid search (dense e5-large-v2 + sparse BM25)
↓
RRF fusion + cross-encoder reranking
↓
FastMCP 3.2 → MCP clients / AI agents
```
---
## Technical Stack
- **Embeddings:** `intfloat/e5-large-v2` (1024d dense) + `Qdrant/bm25` (sparse)
- **Reranker:** `cross-encoder/mmarco-mMiniLMv2-L12-H384-v1`
- **Vector DB:** Qdrant (self-hosted)
- **Server:** FastMCP 3.2 over HTTP
- **Infrastructure:** Ubuntu Server 24 LTS, Cloudflare Tunnel
---
## License
MIT