Food Safety Supply Chain
About
Food safety supply chain intelligence via the Model Context Protocol — giving AI assistants direct access to FDA recalls, adverse event reports, supplier hygiene ratings, ingredient trade flows, contamination pathways, and seasonal risk projections.
Details
- Author
- apifyforge
- Downloads
- 138
- Categories
- Other
Jump to
- 7 parallel data sources queried simultaneously per tool call
- Four-model composite scoring (Ingredient, Contamination, Supplier, Seasonal)
- Biological pathogen detection across 8 named pathogens
- Environmental contamination scoring via OpenAQ PM2.5/PM10 readings
- Seasonal risk projection using NOAA heat alerts and recall history
- Actionable recommendations triggered by score thresholds
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Food Safety Supply ChainCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server URL https://ryanclinton--food-safety-supply-chain-mcp.apify.actor/mcp to your MCP client (Claude Desktop, Cursor, Windsurf) and provide your Apify API token as the Bearer token. Then call any tool (e.g., generate_supply_chain_risk_report) with a query such as a food product, ingredient, or business name. The server returns structured JSON results.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"food safety supply chain": {
"food-safety-supply-chain-mcp": {
"url": "https://ryanclinton--food-safety-supply-chain-mcp.apify.actor/mcp"
}
}
}
}
McpServers
{
"food-safety-supply-chain-mcp": {
"url": "https://ryanclinton--food-safety-supply-chain-mcp.apify.actor/mcp"
}
}
Food Safety Supply Chain MCP Server
> View on ApifyForge | Use on Apify Store
---
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf):
{
"mcpServers": {
"food-safety-supply-chain-mcp": {
"url": "https://ryanclinton--food-safety-supply-chain-mcp.apify.actor/mcp"
}
}
}
---
Food safety supply chain intelligence via the Model Context Protocol — giving AI assistants direct access to FDA recalls, adverse event reports, supplier hygiene ratings, ingredient trade flows, contamination pathways, and seasonal risk projections. Built for food manufacturers, restaurant chains, importers, and food safety consultants who need live regulatory and supply chain data in their AI workflows.
This MCP server orchestrates 7 public data sources in parallel using a single tool call. Each query fans out to the FDA recall database, FDA CAERS adverse event system, UK Food Hygiene registry, Open Food Facts, UN COMTRADE trade statistics, OpenAQ air quality monitors, and NOAA weather alerts — then synthesises the results through 4 dedicated scoring models into a structured risk report. No subscription, no manual searches: pay only per tool call.
What data can you extract?
| Data Point | Source | Example |
|---|---|---|
| 📋 FDA recall class and reason | FDA Food Recall Monitor | "Class I — Salmonella contamination, 14 states" |
| ⚠️ Adverse event outcomes and severity | FDA CAERS (CFSAN) | "Hospitalization, allergic reaction — undeclared peanut" |
| ⭐ Establishment hygiene rating (0–5) | UK Food Standards Agency | "Pinnacle Foods Ltd, Manchester — 4/5, last inspected 2024-11" |
| 🧪 Nutri-Score product grade | Open Food Facts | "Acme Granola Bar — Grade B, allergens: gluten, nuts" |
| 🌍 Trade flow volume by origin country | UN COMTRADE | "Shrimp imports from Vietnam — $2.4B, 2023" |
| 🌫️ PM2.5 air quality reading near facility | OpenAQ | "Chicago facility zone — 18.2 µg/m³ (exceeds WHO 15 µg/m³)" |
| 🌩️ Active weather alerts and severity | NOAA Weather Alerts | "EXTREME heat advisory — cold chain disruption risk" |
| 📊 Ingredient risk score (0–100) | Composite model | Score: 72, riskLevel: "HIGH", riskCorrelation: 4.3 |
| 🦠 Contamination pathway classification | Scoring engine | "Biological: Listeria", "Chemical: allergen", "Environmental: PM2.5" |
| 🏭 Supplier Hygiene Composite Score | Multi-source model | Score: 78, hygieneLevel: "GOOD", fiveStarPct: 64.2% |
| 🌡️ Seasonal risk level and weather factors | Seasonal model | "PEAK — multiple heat alerts, 40% above-average recall month" |
| 📝 Composite supply chain risk report | All 7 sources | compositeScore: 58, riskLevel: "HIGH", 5 recommendations |
Why use this food safety MCP?
Manual food safety monitoring means logging into the FDA recall portal, searching CFSAN's adverse event system, cross-referencing UK Food Standards Agency records, pulling UN COMTRADE reports, and then correlating all of that by hand. For a single ingredient or supplier assessment, this takes 3–5 hours and still leaves blind spots — you may catch the recall but miss the trade flow pattern that predicted it.
This MCP automates the entire process. A single tool call collects data from all 7 sources simultaneously and applies scoring models that weight Class I recalls at 10 points each, flag biological pathogens (Salmonella, Listeria, E. coli, Campylobacter, Norovirus, Botulism) at 8 points per detection, penalise poor hygiene ratings, and correlate recall frequency against import volume to surface systemic risk.
- Scheduling — run daily or weekly food safety sweeps for monitored ingredients to keep risk profiles current
- API access — trigger assessments from Python, JavaScript, or any HTTP client inside your quality management workflow
- Proxy rotation — all underlying data collection uses Apify's built-in proxy infrastructure for reliable regulatory database access
- Monitoring — get Slack or email alerts when supply chain risk reports return HIGH or CRITICAL ratings
- Integrations — connect to Zapier, Make, Google Sheets, or quality management systems via webhooks
Features
- 7 parallel data sources — FDA Food Recall Monitor, FDA CAERS adverse events, UK Food Hygiene, Open Food Facts, UN COMTRADE, OpenAQ, and NOAA Weather all queried simultaneously per tool call
- Ingredient Risk Heat Map — correlates UN COMTRADE import volume with FDA recall and adverse event frequency, calculating a recall-per-million-dollar-trade-volume correlation score (max 20 points)
- Biological pathogen detection — scans recall reasons for 8 named pathogens: Salmonella, Listeria, E. coli, Campylobacter, Norovirus, Botulism, Clostridium, and variants
- Chemical hazard detection — identifies 9 chemical contamination categories in recall text: allergens, undeclared ingredients, lead, mercury, arsenic, pesticide residues, melamine, aflatoxin, and sulfites
- Environmental contamination scoring — compares PM2.5 and PM10 readings from OpenAQ against WHO food safety thresholds (PM2.5 >15 µg/m³, PM10 >45 µg/m³) near production zones
- UK Food Hygiene composite — rates establishments on the 0–5 FSA scale, applies a volume-weighted score, penalises poor ratings (0–1 stars), and adds Open Food Facts Nutri-Score data as a product quality signal
- Seasonal risk projection — tracks monthly recall distribution to compute a current-month-versus-average ratio, amplified by NOAA heat alert severity (EXTREME = 10 pts, SEVERE = 6 pts)
- Four-model composite scoring — Ingredient Risk (30%) + Contamination Pathways (25%) + Supplier Hygiene inverted (25%) + Seasonal Risk (20%) = composite 0–100 score
- Four-level risk classification — LOW, MODERATE, HIGH, CRITICAL with configurable thresholds at 25/50/75
- Actionable recommendations — rule-based recommendations generated when specific score thresholds are crossed: HACCP review triggers at 3+ contamination pathways; supplier audit triggers at CRITICAL ingredient risk
- Standby mode — runs as a persistent HTTP server, meaning tool calls respond in seconds without cold start delays
- Pay-per-event pricing — $0.045 per tool call, no subscription, no minimum spend
Use cases for food safety supply chain intelligence
Food manufacturer ingredient sourcing
Quality assurance teams at food manufacturers need to evaluate supplier risk before contracting. Use trace_ingredient_risk to cross-reference every proposed ingredient with FDA recall history and UN COMTRADE import volume data. An ingredient arriving from a country with high recall correlation per trade dollar is a risk signal that warrants additional supplier audit — surfaced in seconds, not days.
Restaurant chain compliance monitoring
Multi-location restaurant groups and franchise operators need continuous hygiene compliance visibility. Use assess_supplier_hygiene with location or business names to pull UK FSA inspection scores across a supplier network. The Supplier Hygiene Composite Score flags establishments drifting below acceptable hygiene levels before a regulatory inspection forces action.
Food import and customs risk profiling
Importers and brokers managing high-volume food shipments can use trace_ingredient_risk with a country code to profile origin-country risk for specific commodity categories. Correlating UN COMTRADE volume with FDA recall density identifies which import corridors carry the highest per-unit recall risk, enabling targeted pre-import testing.
Allergen and adverse event signal detection
Regulatory affairs teams tracking emerging safety signals use analyze_adverse_events to monitor FDA CAERS reports for specific ingredients or brands. The outcome distribution analysis surfaces hospitalisations and life-threatening events before they aggregate into a formal recall, enabling proactive reformulation or label review.
Seasonal supply chain planning
Procurement and operations teams planning summer buying cycles use project_seasonal_risk to compare current NOAA heat alert severity against historical FDA recall seasonality patterns. When the current month shows 40%+ above-average recall frequency alongside extreme heat advisories, the model flags PEAK seasonal risk — time to increase cold chain monitoring frequency.
Contamination incident investigation support
Food safety investigators responding to consumer complaints use detect_contamination_pathways to triage three simultaneous contamination vectors. Biological pathogen hits in recent recall data, chemical hazard patterns in adverse event reports, and elevated PM2.5 near a production facility can all be assessed in a single call, narrowing investigation scope before lab results return.
How to run food safety supply chain queries
1. Connect the MCP server — add the server URL https://food-safety-supply-chain-mcp.apify.actor/mcp to your MCP client (Claude Desktop, Cursor, Windsurf, or any compatible client). Provide your Apify API token as the Bearer token in the Authorization header.
2. Choose your tool — start with generate_supply_chain_risk_report for a full assessment of any ingredient or supplier, or use focused tools like search_food_recalls or assess_supplier_hygiene for targeted checks.
3. Provide a query — type a food product name ("peanut butter"), ingredient ("shrimp"), business name ("Pinnacle Foods Manchester"), or category ("dairy supplements"). Optionally add a location for weather and air quality context.
4. Read the structured results — the server returns JSON with risk scores, contamination pathways, hygiene levels, actionable recommendations, and all supporting raw records from underlying data sources. Copy into a report, push to a spreadsheet, or feed downstream AI analysis.
Input parameters
This MCP server exposes its interface as MCP tools rather than actor input fields. There is no traditional input schema — all parameters are passed as tool call arguments.
| Tool | Parameter | Type | Required | Description |
|------|-----------|------|----------|-------------|
| search_food_recalls | query | string | Yes | Food product, ingredient, manufacturer, or recall reason |
| search_food_recalls | classification | string | No | Filter by recall class: "Class I", "Class II", "Class III" |
| analyze_adverse_events | query | string | Yes | Food product, supplement, ingredient, or brand |
| assess_supplier_hygiene | query | string | Yes | Business name, location, or food category |
| trace_ingredient_risk | ingredient | string | Yes | Food ingredient, commodity, or product category |
| trace_ingredient_risk | country | string | No | Origin country code to focus trade flow analysis |
| detect_contamination_pathways | query | string | Yes | Food product, ingredient, or facility location |
| detect_contamination_pathways | latitude | number | No | Facility latitude for precise air quality lookup |
| detect_contamination_pathways | longitude | number | No | Facility longitude for precise air quality lookup |
| project_seasonal_risk | query | string | Yes | Food product or category |
| project_seasonal_risk | location | string | No | Geographic area for weather data |
| generate_supply_chain_risk_report | query | string | Yes | Food product, ingredient, supplier, or category |
| generate_supply_chain_risk_report | location | string | No | Geographic area for environmental and weather data |
| generate_supply_chain_risk_report | country | string | No | Origin country for trade flow analysis |
Input tips
- Start with generate_supply_chain_risk_report — this single tool calls all 7 data sources and all 4 scoring models at once, giving the most complete risk picture for $0.045.
- Use focused tools for speed — if you only need recall data, search_food_recalls runs one actor instead of seven and returns faster.
- Add coordinates for environmental risk — supply latitude and longitude to detect_contamination_pathways for a precise 25 km radius air quality query around a specific production facility.
- Specify country for import risk — passing a UN country code (e.g., "156" for China, "704" for Vietnam) to trace_ingredient_risk narrows trade flow data to that origin, sharpening the recall correlation.
- Filter recalls by class — use classification: "Class I" in search_food_recalls to see only the most serious recalls (risk to health or life) without Class II/III noise.
Output example
Below is a representative output from generate_supply_chain_risk_report for the query "shrimp":
{
"query": "shrimp",
"compositeScore": 58,
"riskLevel": "HIGH",
"ingredientRisk": {
"score": 72,
"recallCount": 9,
"adverseEventCount": 14,
"tradeFlowVolume": 2400000000,
"riskCorrelation": 3.75,
"riskLevel": "HIGH",
"topRecallReasons": [
{ "reason": "Salmonella contamination", "count": 4 },
{ "reason": "Undeclared allergens", "count": 3 },
{ "reason": "Listeria monocytogenes", "count": 2 }
],
"signals": [
"9 FDA food recalls — elevated ingredient risk",
"4 serious adverse events (death/hospitalization)"
]
},
"contaminationPathways": {
"score": 54,
"biologicalRisk": 24,
"chemicalRisk": 18,
"environmentalRisk": 12,
"pathwayCount": 5,
"pathways": [
"Biological: salmonella",
"Biological: listeria",
"Chemical: allergen",
"Chemical: undeclared",
"Environmental: air particulate contamination"
],
"signals": [
"Multiple biological pathogen detections in recall history",
"Chemical contamination pathways detected (allergens/metals/pesticides)",
"Environmental air quality exceeds food safety thresholds"
]
},
"supplierHygiene": {
"score": 62,
"establishmentsChecked": 38,
"averageRating": 4.1,
"fiveStarPct": 57.9,
"zeroStarPct": 2.6,
"hygieneLevel": "GOOD",
"ratingDistribution": { "0": 1, "1": 2, "2": 3, "3": 5, "4": 8, "5": 19 },
"signals": []
},
"seasonalRisk": {
"score": 48,
"activeWeatherAlerts": 6,
"severeAlerts": 3,
"currentSeasonRisk": "MODERATE",
"weatherFactors": [
"Extreme heat — cold chain disruption risk",
"Flooding — water contamination risk"
],
"signals": [
"3 severe/extreme weather alerts — food safety impact"
]
},
"allSignals": [
"9 FDA food recalls — elevated ingredient risk",
"4 serious adverse events (death/hospitalization)",
"Multiple biological pathogen detections in recall history",
"Chemical contamination pathways detected (allergens/metals/pesticides)",
"Environmental air quality exceeds food safety thresholds",
"3 severe/extreme weather alerts — food safety impact"
],
"recommendations": [
"Multiple contamination pathways identified — review HACCP plan",
"Biological pathogen risk elevated — enhance microbiological testing",
"Peak seasonal risk — increase testing frequency and cold chain monitoring"
]
}
Output fields
| Field | Type | Description |
|-------|------|-------------|
| query | string | The input query string |
| compositeScore | number | Overall supply chain risk score 0–100 (Ingredient 30% + Contamination 25% + Hygiene inverted 25% + Seasonal 20%) |
| riskLevel | string | Classification: LOW / MODERATE / HIGH / CRITICAL |
| ingredientRisk.score | number | Ingredient risk score 0–100 |
| ingredientRisk.recallCount | number | Total FDA recalls found for the query |
| ingredientRisk.adverseEventCount | number | Total FDA CAERS adverse events found |
| ingredientRisk.tradeFlowVolume | number | Total UN COMTRADE trade value in USD |
| ingredientRisk.riskCorrelation | number | Recalls per million dollars of trade value |
| ingredientRisk.riskLevel | string | LOW / MODERATE / HIGH / CRITICAL |
| ingredientRisk.topRecallReasons | array | Top 8 recall reason strings with occurrence counts |
| ingredientRisk.signals | array | Human-readable risk signals triggered |
| contaminationPathways.score | number | Contamination pathway score 0–100 |
| contaminationPathways.biologicalRisk | number | Biological pathogen sub-score (max 30) |
| contaminationPathways.chemicalRisk | number | Chemical hazard sub-score (max 30) |
| contaminationPathways.environmentalRisk | number | Environmental air quality sub-score (max 20) |
| contaminationPathways.pathwayCount | number | Number of distinct contamination pathways detected |
| contaminationPathways.pathways | array | List of detected pathways (e.g., "Biological: salmonella") |
| contaminationPathways.signals | array | Human-readable contamination signals triggered |
| supplierHygiene.score | number | Supplier Hygiene Composite Score 0–100 (higher = better) |
| supplierHygiene.establishmentsChecked | number | Number of rated UK FSA establishments in the result |
| supplierHygiene.averageRating | number | Mean FSA hygiene rating 0–5 |
| supplierHygiene.fiveStarPct | number | Percentage of establishments rated 5 stars |
| supplierHygiene.zeroStarPct | number | Percentage of establishments rated 0 stars |
| supplierHygiene.hygieneLevel | string | POOR / BELOW_AVERAGE / AVERAGE / GOOD / EXCELLENT |
| supplierHygiene.ratingDistribution | object | Count of establishments at each rating 0–5 |
| supplierHygiene.signals | array | Hygiene signals triggered |
| seasonalRisk.score | number | Seasonal risk score 0–100 |
| seasonalRisk.activeWeatherAlerts | number | Total NOAA weather alerts found |
| seasonalRisk.severeAlerts | number | Count of EXTREME or SEVERE severity alerts |
| seasonalRisk.recallSeasonality | object | Monthly recall counts keyed by two-digit month |
| seasonalRisk.currentSeasonRisk | string | LOW / MODERATE / HIGH / PEAK |
| seasonalRisk.weatherFactors | array | Food-safety-relevant weather event descriptions |
| seasonalRisk.signals | array | Seasonal signals triggered |
| allSignals | array | All signals from all four scoring models combined |
| recommendations | array | Actionable recommendations triggered by threshold breaches |
How much does it cost to run food safety supply chain queries?
This MCP uses pay-per-event pricing — you pay $0.045 per tool call. Platform compute costs are included. There is no monthly fee, no minimum spend, and no data limits per call.
| Scenario | Tool calls | Cost per call | Total cost |
|----------|------------|---------------|------------|
| Quick test — single recall search | 1 | $0.045 | $0.045 |
| Focused check — recalls + adverse events | 2 | $0.045 | $0.09 |
| Three-tool supplier assessment | 3 | $0.045 | $0.135 |
| Full weekly ingredient audit (10 ingredients) | 10 | $0.045 | $0.45 |
| Daily monitoring — 50 products/month | 50 | $0.045 | $2.25 |
You can set a maximum spending limit per run to control costs. The actor stops when your budget is reached, protecting against runaway usage in automated workflows.
Compare this to food safety information services like FoodLogiQ or SafetyChain at $500–2,000/month — with this MCP, most teams running daily ingredient checks spend under $5/month with no subscription commitment. The Apify free tier includes $5 of monthly platform credits, covering over 100 tool calls at no cost.
How to connect this food safety MCP server
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"food-safety-supply-chain": {
"url": "https://food-safety-supply-chain-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor / Windsurf / Cline
Add the server to your MCP settings under the Tools or MCP section:
- URL: https://food-safety-supply-chain-mcp.apify.actor/mcp
- Auth header: Authorization: Bearer YOUR_APIFY_TOKEN
Python (via HTTP)
import requests
response = requests.post(
"https://food-safety-supply-chain-mcp.apify.actor/mcp",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "generate_supply_chain_risk_report",
"arguments": {
"query": "peanut butter",
"location": "California"
}
},
"id": 1
}
)
report = response.json()["result"]["content"][0]["text"]
import json
data = json.loads(report)
print(f"Composite risk score: {data['compositeScore']} ({data['riskLevel']})")
for rec in data.get("recommendations", []):
print(f" - {rec}")
JavaScript
const response = await fetch("https://food-safety-supply-chain-mcp.apify.actor/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "trace_ingredient_risk",
arguments: {
ingredient: "shrimp",
country: "704"
}
},
id: 1
})
});
const data = await response.json();
const result = JSON.parse(data.result.content[0].text);
console.log(Ingredient risk: ${result.ingredientRisk.score} — ${result.ingredientRisk.riskLevel});
console.log(Trade correlation: ${result.ingredientRisk.riskCorrelation} recalls per $M);
cURL
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



