Serveur MCP NutriRef
Fournit des données nutritionnelles structurées de l'USDA aux agents IA via des micropaiements à l'appel utilisant le protocole x402.
Aussi connu sous Younghef/nutriref-api, nutriref-api
- Étoiles
- 1
- Outils
- —
- Téléchargements, 30 jours
- —
- Dernière version
- 0.2.3
- Dernier commit
- 15 juin 2026
- Licence
- MIT
Qu'est-ce que NutriRef MCP ?
NutriRef est un serveur MCP. Fournit des données nutritionnelles structurées de l'USDA aux agents IA via des micropaiements à l'appel utilisant le protocole x402.
Résumé généré à partir du README du projet
À propos du MCP server NutriRef
NutriRef fournit les informations nutritionnelles structurées de l'USDA FoodData Central aux agents IA grâce à un système de micropaiement unique. Au lieu des clés API traditionnelles ou d'une authentification humaine, il utilise le protocole x402 pour faciliter les paiements automatisés en USDC. Cela permet aux agents de payer de petites sommes, allant de 0,001 $ à 0,005 $ par requête, directement depuis un portefeuille approvisionné sur le mainnet Base.
Les développeurs peuvent intégrer ce MCP server dans des clients MCP tels que Claude Desktop ou Claude Code en installant le package nutriref-mcp via PyPI. Le serveur expose quatre outils spécifiques : nutrition_search, nutrition_detail, nutrition_compare et nutrition_recipe. Les utilisateurs doivent fournir une clé privée de payeur dans leur configuration pour activer la boucle de paiement automatisée. Le système utilise un cache Redis pour garantir que les requêtes répétées pour les mêmes données soient renvoyées rapidement sans appels supplémentaires à l'USDA.
Cette configuration est conçue pour les agents autonomes qui ont besoin de données nutritionnelles fiables sans processus d'inscription manuel. Bien que le service en direct soit hébergé sur nutriref.xyz, le logiciel est open source et peut être auto-hébergé avec Docker en utilisant une clé API USDA personnelle.
Ce que vous pouvez faire avec
- 1Rechercher des aliments spécifiquesUn agent IA peut rechercher des informations nutritionnelles pour divers aliments à l'aide d'une requête de recherche.
- 2Récupérer des profils nutritionnels détaillésUn développeur peut ordonner à un agent de récupérer le schéma complet des 13 nutriments pour un identifiant d'aliment spécifique.
- 3Comparer les valeurs nutritionnelles entre les alimentsUn agent peut identifier quel aliment possède la teneur en protéines la plus élevée ou la teneur en sodium la plus faible.
- 4Calculer les totaux nutritionnels d'une recetteUne IA peut ajuster les valeurs nutritionnelles en fonction du poids et les additionner pour fournir les totaux d'une recette spécifique.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Configuration
NUTRIREF_BASE_URLPAYER_PRIVATE_KEY
| Nom | Description | Type |
|---|---|---|
| NUTRIREF_BASE_URL | — | |
| PAYER_PRIVATE_KEY | — |
Vérifications automatisées
Exécuté le 15 nov. 2026Rapport complet →Pas encore vérifié. Un serveur nécessite un score de 80, aucune faille sérieuse et suffisamment de données pour que nous puissions effectuer les vérifications. Fonctionnement des vérifications · Ce qu'il faut corriger pour gagner des points
- Dépôt source lié et accessibleyounghef/nutriref-api is public and reachablegithub.com/younghef/nutriref-api ↗Réussi
- Le nom du package correspond au dépôt sourceNon vérifié
- Provenance du build (attestation Sigstore)Non vérifié
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-06-15github.com/younghef/nutriref-api ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNon vérifié
- Aucun avis critique dans le package ou ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNon vérifié
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur GitHubNutriRef
Pay-per-call USDA nutrition data for AI agents. Structured FoodData Central via the x402 micropayment protocol — agents pay $0.001–$0.005 in USDC per request, no signup, no API keys, no human auth flows.
Live at https://nutriref.xyz. Spec at /openapi.json · Swagger at /docs · Bazaar discovery at /.well-known/x402.
Endpoints
| Method | Path | Price | Cache |
|---|---|---|---|
GET |
/v1/nutrition/search?q=&limit= |
$0.001 | 24h |
GET |
/v1/nutrition/detail/{fdc_id} |
$0.002 | 7d |
POST |
/v1/nutrition/compare |
$0.003 | derived |
POST |
/v1/nutrition/recipe |
$0.005 | derived |
All values per 100g. Missing nutrients are null, not 0. compare returns per-nutrient winners (highest protein, lowest sodium, etc.). recipe scales by grams and sums.
Use it from Claude (or any MCP agent)
NutriRef ships an MCP server that exposes the four endpoints as native tools. Install it from PyPI:
pip install nutriref-mcp
Then add this to your MCP client config (Claude Desktop's claude_desktop_config.json, Claude Code's MCP settings, etc.):
{
"mcpServers": {
"nutriref": {
"command": "nutriref-mcp",
"env": {
"PAYER_PRIVATE_KEY": "0x...your-funded-wallet-key...",
"NUTRIREF_BASE_URL": "https://nutriref.xyz"
}
}
}
}
Prefer not to install? Use
uvx nutriref-mcpas thecommandto run it on demand. To work from a clone instead,pip install -e ".[mcp]"and setcommandtopythonwithargs: ["-m", "mcp_server"].
The wallet needs USDC on Base mainnet — gas is sponsored by the facilitator, so you only need stablecoin balance. The agent now has nutrition_search, nutrition_detail, nutrition_compare, nutrition_recipe and auto-pays per call.
Use it from any HTTP client
Unpaid requests get 402 Payment Required with x402 payment instructions. Any x402-aware client signs a gasless USDC authorization (EIP-3009) and retries automatically:
import asyncio
from eth_account import Account
from x402.client import x402Client
from x402.http.clients.httpx import wrapHttpxWithPayment
from x402.mechanisms.evm.exact import register_exact_evm_client
account = Account.from_key("0x...funded-wallet-key...")
client = x402Client(); register_exact_evm_client(client, account)
async def main():
async with wrapHttpxWithPayment(client, base_url="https://nutriref.xyz") as http:
r = await http.get("/v1/nutrition/detail/2012128")
print(r.json())
asyncio.run(main())
Response example
GET /v1/nutrition/detail/173944:
{
"fdc_id": 173944,
"description": "Banana, raw",
"data_type": "Foundation",
"serving_size": 100, "serving_size_unit": "g",
"calories": 89.0, "protein": 1.1, "fat": 0.3,
"carbs": 22.8, "fiber": 2.6, "sugar": 12.2,
"sodium": 1.0, "cholesterol": null, "saturated_fat": 0.1,
"vitamin_c": 8.7, "calcium": 5.0, "iron": 0.3, "potassium": 358.0
}
Self-hosting
NutriRef is open source; the live instance at nutriref.xyz is one deployment among many possible. To run your own:
cp .env.example .env
# fill in USDA_API_KEY (free at https://fdc.nal.usda.gov/api-key-signup.html)
# and X402_RECEIVER_ADDRESS (an EVM address that should receive payments)
docker compose up --build
curl http://localhost:8000/health
Configuration
| Var | Required | Default | Purpose |
|---|---|---|---|
USDA_API_KEY |
yes | — | Free key from fdc.nal.usda.gov |
USDA_BASE_URL |
no | https://api.nal.usda.gov/fdc/v1 |
|
REDIS_URL |
no | redis://redis:6379/0 |
Response cache |
X402_NETWORK |
no | base-sepolia |
base for mainnet |
X402_RECEIVER_ADDRESS |
yes | — | EVM address that receives USDC |
X402_FACILITATOR_URL |
no | https://x402.org/facilitator |
https://api.cdp.coinbase.com for mainnet |
CDP_API_KEY_ID |
mainnet only | — | Coinbase Developer Platform key ID |
CDP_API_KEY_SECRET |
mainnet only | — | Coinbase Developer Platform key secret |
LOG_LEVEL |
no | INFO |
For mainnet you need a Coinbase CDP account and the public x402 facilitator at https://api.cdp.coinbase.com. Testnet works for free with the community facilitator at https://x402.org/facilitator.
Architecture
agent → x402 middleware → route handler → cache (Redis) → USDA FDC API
search and detail cache USDA responses directly. compare and recipe compose from the cached detail data — no extra USDA calls when warm. The cache is a meaningful cost lever: warm requests return in <50ms and never hit USDA.
Tests
pip install -e ".[dev]"
pytest
Example: Claude agent that uses NutriRef
examples/meal-planner/ is a complete, ~150-line agent that gives Claude
the four NutriRef endpoints as tools and asks it to plan a day of meals
hitting a calorie/protein goal. Worth reading if you're wiring NutriRef
into your own agent — the tool schemas and the payment loop are all
there. See examples/meal-planner/README.md.
Repo layout
app/ # FastAPI service
main.py # app factory + x402 init
routes/ # search, detail, compare, recipe
landing.py # / (public landing page)
discovery.py # /.well-known/x402, /llms.txt, /.well-known/ai-plugin.json, /logo.svg
usda.py # async USDA client
cache.py # Redis wrapper
normalize.py # USDA → flat 13-nutrient schema
mcp_server/ # MCP server wrapper for agent use
examples/ # worked agent examples (meal planner)
scripts/ # CDP wallet bootstrap + payer-side test
tests/ # pytest + respx + fakeredis
Acknowledgments
- USDA FoodData Central for the data.
- x402 for the payment protocol.
fastapi-x402for the server middleware (with a small EIP-712 patch we apply at startup for Base mainnet USDC).
Questions sur NutriRef MCP
Combien coûte l'utilisation de NutriRef ?
Les coûts varient de 0,001 $ à 0,005 $ en USDC par requête selon l'endpoint utilisé.
Ai-je besoin d'une clé API ou d'une authentification humaine pour l'utiliser ?
Non, le service utilise le protocole de micropaiement x402 qui ne nécessite ni inscription ni clés API.