openfoodfacts-mcp
MCP server for the Open Food Facts API - search, read, and contribute to the world's largest open food database.
Use Cases
Look up a product by name: "How many calories in a Sainsbury's buffalo chicken wrap?" -> searches by name, finds the product, and returns nutrition data.
Look up a product by barcode: "What's in this product with barcode 3017620422003?" -> fetches Nutella's ingredients, Nutri-Score, and nutrition data.
Find healthy options: "Search for breakfast cereals with Nutri-Score A" -> searches with category and nutrition grade filters.
Contribute data: "Add the product name and brand for barcode 12345678" -> creates or updates a product entry on Open Food Facts.
Explore the database: "What brands of organic chocolate are in the database?" -> uses autocomplete and search to explore.
Setup
claude mcp add openfoodfacts-mcp -e OFF_USER_AGENT="openfoodfacts-mcp/1.1.0 (you@example.com)" -- npx -y openfoodfacts-mcp
For write operations (adding/editing products, uploading images), also set:
claude mcp add openfoodfacts-mcp \
-e OFF_USER_AGENT="openfoodfacts-mcp/1.1.0 (you@example.com)" \
-e OFF_USER_ID="your-username" \
-e OFF_PASSWORD="your-password" \
-- npx -y openfoodfacts-mcp
Or with HTTP transport:
# Start the server
MCP_TRANSPORT=http PORT=3000 OFF_USER_AGENT="openfoodfacts-mcp/1.1.0 (you@example.com)" npx -y openfoodfacts-mcp
# Add to Claude
claude mcp add --transport http openfoodfacts-mcp http://localhost:3000/mcp
Environment Variables
| Variable | Required | Description |
|---|---|---|
OFF_USER_AGENT | Yes | User-Agent string, e.g. "AppName/1.0 (email@example.com)" |
OFF_USER_ID | No | Open Food Facts username (for write operations) |
OFF_PASSWORD | No | Open Food Facts password (for write operations) |
OFF_COUNTRY | No | Country subdomain (default: world) |
Tools
| Tool | Description | Auth |
|---|---|---|
get_product | Get product info by barcode | No |
search_products | Search products by name or keyword | No |
autocomplete | Autocomplete brands, categories, labels, etc. | No |
add_or_edit_product | Add or update a product | Yes |
upload_image | Upload a product image | Yes |
select_image | Select, crop, and rotate an image | Yes |
call_api | Call any OFF API endpoint directly | Depends |
get_api_docs | Get OFF API documentation | No |
Contributing
Pull requests are welcomed on GitHub! To get started:
- Install Git and Node.js
- Clone the repository
- Install dependencies with
npm install - Run
npm run testto run tests - Build with
npm run build
Releases
Versions follow the semantic versioning spec.
To release:
- Use
npm version <major | minor | patch>to bump the version - Run
git push --follow-tagsto push with tags - Wait for GitHub Actions to publish to the NPM registry.