Skip to content

io.github.cyanheads/usda-mcp-server

by cyanheads · remote · local (npm) · no sign-in to list tools · v0.1.12 · published by GitHub user cyanheads

Search foods, compare nutrients, and look up the full USDA FoodData Central database.

Read only

5 tools: 5 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http usda https://usda.caseyjhand.com/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

5 tools

Only reads 5Claude Code: allow
  • usda_compare_foodsCompare nutrients side-by-side for 2–5 foods.No findings

    Why it is in this group

    • The name "usda_compare_foods" says "compare": a word for reading.
    Description, as the server wrote it
    Compare nutrients side-by-side for 2–5 foods. Returns a structured table — one row per nutrient, one column per food — formatted as markdown. Best for "spinach vs kale iron" or "which has more protein?" questions. Omit nutrients[] to use the 12 most common defaults (energy, protein, fat, saturated fat, carbs, fiber, sugars, sodium, potassium, calcium, iron, vitamin C); provide nutrients[] with specific FDC IDs to compare different nutrients. All values are scaled to the same gram basis (default 100g). If one or more FDC IDs are not found, the comparison proceeds with the valid foods — only throws too_few_foods when fewer than 2 IDs return data.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • usda_get_foodGet the full nutrient profile for one food by FDC ID.No findings

    Why it is in this group

    • The name "usda_get_food" says "get": a word for reading.
    Description, as the server wrote it
    Get the full nutrient profile for one food by FDC ID. Returns all available nutrients (or a filtered subset via the nutrients[] param) with optional per-portion scaling. Use usda_search_foods to discover FDC IDs. Provide quantity + unit to scale all nutrient values from per-100g to the specified portion (e.g. quantity=200, unit="g" → per-200g values). Use unit="serving" to scale to the food's first defined portion weight. Narrow nutrients[] to specific IDs to reduce response size for focused queries.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • usda_get_foodsFetch nutrient profiles for 2–20 foods in a single API call.No findings

    Why it is in this group

    • The name "usda_get_foods" says "get": a word for reading.
    Description, as the server wrote it
    Fetch nutrient profiles for 2–20 foods in a single API call. More efficient than calling usda_get_food N times when you already have multiple FDC IDs. All values are per 100g (no portion scaling). Use the nutrients[] filter to limit response size — strongly recommended for batch calls. For side-by-side comparison with a formatted table, use usda_compare_foods instead. Failed IDs (not found or no data) are reported in the failed[] array rather than aborting the entire batch.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • usda_list_nutrientsLook up the FDC nutrient reference table — all tracked nutrients with their numeric IDs, names, SR reference numbers, units, and categories.No findings

    Why it is in this group

    • The name "usda_list_nutrients" says "list": a word for reading.
    Description, as the server wrote it
    Look up the FDC nutrient reference table — all tracked nutrients with their numeric IDs, names, SR reference numbers, units, and categories. Use to resolve a nutrient name (e.g. "vitamin C") to its FDC ID (1162) before passing it to the nutrients[] filter on other tools. Filter by category (macronutrients, vitamins, minerals, lipids, amino_acids, or other) to narrow results. The data is static — call once and reuse the IDs.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • usda_search_foodsSearch USDA FoodData Central foods by keyword.No findings

    Why it is in this group

    • The name "usda_search_foods" says "search": a word for reading.
    Description, as the server wrote it
    Search USDA FoodData Central foods by keyword. Returns matching foods with FDC IDs and a preview of key nutrients (energy, protein, fat, carbs — not guaranteed complete). Use the returned fdcId with usda_get_food for the full nutrient profile, or usda_compare_foods for side-by-side comparisons. When dataType is omitted, defaults to SR Legacy (common whole foods with complete profiles) — or to Branded when brandOwner is set, since only Branded records carry one. Set dataType to ["Branded"] for packaged products, or include a UPC/GTIN code as the query. Pass brandOwner (e.g. "General Mills") to narrow branded results.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.12. Values in angle brackets are yours to fill in.

claude mcp add --transport http usda https://usda.caseyjhand.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__usda__usda_list_nutrients",
      "mcp__usda__usda_search_foods",
      "mcp__usda__usda_get_food",
      "mcp__usda__usda_get_foods",
      "mcp__usda__usda_compare_foods"
    ],
    "ask": [],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as usda. Review it before you use it.