Semantic search across 50,000+ food recipes with hybrid retrieval and reranking.
{
"mcpServers": {
"io-github-aidatanordic-food-recipe-mcp": {
"command": "<see-readme>",
"args": []
}
}
}No install config available. Check the server's README for setup instructions.
Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Semantic search across 50,000+ food recipes with hybrid retrieval and reranking.
Is it safe?
No package registry to scan.
No authentication — any process on your machine can connect.
License not specified.
Is it maintained?
Commit history unknown.
Will it work with my client?
Transport: . Compatibility not confirmed.
No automated test available for this server. Check the GitHub README for setup instructions.
No known vulnerabilities.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationHave you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Model Context Protocol (MCP) Server to connect your AI with any MediaWiki
MCP server for Apple Developer Documentation - Search iOS/macOS/SwiftUI/UIKit docs, WWDC videos, Swift/Objective-C APIs & code examples in Claude, Cursor & AI assistants
MCP server for scanning and remediating hardcoded secrets using GitGuardian’s API. Detect over 500 secret types and prevent credential leaks before code goes public.
MCP server for *arr media suite - Sonarr, Radarr, Lidarr, Readarr, Prowlarr
MCP Security Weekly
Get CVE alerts and security updates for io.github.AIDataNordic/food-recipe-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A production-grade semantic search server for food recipes — built for AI agents using the Model Context Protocol (MCP). Search across 50,000+ recipes with hybrid dense + sparse retrieval and cross-encoder reranking.
A self-hosted MCP server exposing a recipe dataset through semantic search. Agents can query by natural language, filter by diet, difficulty, time, and servings — and get back ranked, structured recipe data including ingredients, instructions, and nutrition.
Designed for autonomous machine-to-machine consumption via FastMCP 3.2 over HTTP.
Query (natural language)
↓
Dense embedding Sparse embedding
(e5-large-v2) (BM25 / fastembed)
↓ ↓
Qdrant — Hybrid Fusion (RRF)
↓
Cross-encoder reranking
(mmarco-mMiniLMv2-L12-H384-v1)
↓
Structured JSON response
↓
MCP tool / AI agent
| Field | Details |
|---|---|
| Total recipes | 50,000+ |
| Source | food.com and others |
| Fields | title, description, ingredients, instructions, nutrition, rating, difficulty, diet, total_time, servings |
| Diet tags | vegetarian, vegan, gluten-free, dairy-free |
| Difficulty | easy, medium, hard |
Search
intfloat/e5-large-v2 (1024 dim)Qdrant/bm25 via fastembedcross-encoder/mmarco-mMiniLMv2-L12-H384-v1Serving
/mcp endpoint)Infrastructure
search_recipes(
query="quick chicken pasta", # required — natural language
diet="vegetarian", # optional: vegetarian, vegan, gluten-free, dairy-free
difficulty="easy", # optional: easy, medium, hard
max_minutes=30, # optional: maximum total time in minutes
servings=4, # optional: number of servings
limit=5 # optional: number of results (default 5)
)
# Returns semantically ranked recipes with ingredients, instructions, nutrition, and ratings
[
{
"rerank_score": 7.96,
"title": "quick and easy chicken pasta salad",
"description": "great use for left-over chicken.",
"total_time": 25,
"difficulty": "medium",
"diet": [],
"main_ingredient": "chicken",
"ingredients": ["cooked chicken", "pasta shells", "tomatoes", "italian dressing"],
"instructions": ["combine ingredients", "pour dressing", "chill 1 hour"],
"nutrition": {"calories": 424, "protein_g": 26, "carbs_g": 38.5, "fat_g": 19.5},
"rating": 4.8,
"rating_count": 5
}
]
pip install -r requirements.txt
python recipe_mcp_server.py
Server starts at http://localhost:8004/mcp
import fastmcp, asyncio
async def main():
async with fastmcp.Client("http://localhost:8004/mcp") as client:
result = await client.call_tool("search_recipes", {
"query": "quick chicken pasta",
"max_minutes": 30,
"limit": 3
})
for recipe in result.structured_content["result"]:
print(recipe["title"], "-", recipe["total_time"], "min")
asyncio.run(main())
Add to your `claude_desktop