← The evidence ledger
Evidence row 35550
Observed , by baseline/1.
- Kind
- listing
- About
- source_record mcp_registry:io.github.cyanheads/openfoodfacts-mcp-server
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- cd7e3299628149889293bb624b536c84939657ac9e3640cd320a93ebbfc2a6e1
- Leaf
- 0x9ca1091df1669ee8170a56e477f37427d22d423eaebf3191a0af2370b5a13b79
What was observed
{
"endpoints": [
[
"mcp",
"https://openfoodfacts.caseyjhand.com/mcp"
]
],
"name": "io.github.cyanheads/openfoodfacts-mcp-server",
"owner_address": null,
"raw": {
"_meta": {
"io.modelcontextprotocol.registry/official": {
"isLatest": true,
"publishedAt": "2026-10-25T09:58:21.82254Z",
"status": "active",
"statusChangedAt": "2026-10-25T09:58:21.82254Z",
"updatedAt": "2026-10-25T09:58:21.82254Z"
}
},
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"description": "Barcode lookup, nutrition search, and product comparison for 3M+ crowd-sourced food products.",
"name": "io.github.cyanheads/openfoodfacts-mcp-server",
"packages": [
{
"environmentVariables": [
{
"default": "https://world.openfoodfacts.org",
"description": "Open Food Facts API base URL override. Useful for testing against a mock server.",
"format": "string",
"name": "OFF_BASE_URL"
},
{
"default": "15",
"description": "Product read rate limit (requests/min). Matches the 15 req/min/IP Open Food Facts documents for product reads.",
"format": "string",
"name": "OFF_RATE_LIMIT_PRODUCT"
},
{
"default": "10",
"description": "Search rate limit (requests/min).",
"format": "string",
"name": "OFF_RATE_LIMIT_SEARCH"
},
{
"default": "10",
"description": "Taxonomy resolution rate limit (requests/min). Applies to the live tag-vocabulary lookups off_browse_taxonomy makes, to tag-value resolution on text searches, and to checking allergen and trace exclusions on every search; a spent budget falls back to the offline sample, or to the tag value as normalized, rather than failing, except that an exclusion it could not check is refused as retryable.",
"format": "string",
"name": "OFF_RATE_LIMIT_TAXONOMY"
},
{
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
"format": "string",
"name": "MCP_LOG_LEVEL"
}
],
"identifier": "@cyanheads/openfoodfacts-mcp-server",
"registryBaseUrl": "https://registry.npmjs.org",
"registryType": "npm",
"runtimeHint": "npx",
"transport": {
"type": "stdio"
},
"version": "0.3.9"
},
{
"environmentVariables": [
{
"description": "Selects the HTTP transport.",
"format": "string",
"name": "MCP_TRANSPORT_TYPE",
"value": "http"
},
{
"default": "https://world.openfoodfacts.org",
"description": "Open Food Facts API base URL override. Useful for testing against a mock server.",
"format": "string",
"name": "OFF_BASE_URL"
},
{
"default": "15",
"description": "Product read rate limit (requests/min). Matches the 15 req/min/IP Open Food Facts documents for product reads.",
"format": "string",
"name": "OFF_RATE_LIMIT_PRODUCT"
},
{
"default": "10",
"description": "Search rate limit (requests/min).",
"format": "string",
"name": "OFF_RATE_LIMIT_SEARCH"
},
{
"default": "10",
"description": "Taxonomy resolution rate limit (requests/min). Applies to the live tag-vocabulary lookups off_browse_taxonomy makes, to tag-value resolution on text searches, and to checking allergen and trace exclusions on every search; a spent budget falls back to the offline sample, or to the tag value as normalized, rather than failing, except that an exclusion it could not check is refused as retryable.",
"format": "string",
"name": "OFF_RATE_LIMIT_TAXONOMY"
},
{
"default": "127.0.0.1",
"description": "The hostname for the HTTP server.",
"format": "string",
"name": "MCP_HTTP_HOST"
},
{
"default": "3010",
"description": "The port to run the HTTP server on.",
"format": "string",
"name": "MCP_HTTP_PORT"
},
{
"default": "/mcp",
"description": "The endpoint path for the MCP server.",
"format": "string",
"name": "MCP_HTTP_ENDPOINT_PATH"
},
{
"default": "none",
"description": "Authentication mode to use: 'none', 'jwt', or 'oauth'.",
"format": "string",
"name": "MCP_AUTH_MODE"
},
{
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
"format": "string",
"name": "MCP_LOG_LEVEL"
}
],
"identifier": "@cyanheads/openfoodfacts-mcp-server",
"registryBaseUrl": "https://registry.npmjs.org",
"registryType": "npm",
"runtimeHint": "npx",
"transport": {
"type": "streamable-http",
"url": "http://localhost:3010/mcp"
},
"version": "0.3.9"
}
],
"remotes": [
{
"type": "streamable-http",
"url": "https://openfoodfacts.caseyjhand.com/mcp"
}
],
"repository": {
"source": "github",
"url": "https://github.com/cyanheads/openfoodfacts-mcp-server"
},
"version": "0.3.9"
}
},
"source": "mcp_registry",
"summary": "Barcode lookup, nutrition search, and product comparison for 3M+ crowd-sourced food products."
}What the leaf hashes
{"body":"cd7e3299628149889293bb624b536c84939657ac9e3640cd320a93ebbfc2a6e1","id":35550,"kind":"listing","method":"baseline/1","observed_us":1793025373264910,"prev":null,"subject":"mcp_registry:io.github.cyanheads/openfoodfacts-mcp-server","subject_kind":"source_record"}Proof
Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.