Skip to main content
Glama
asachs01
by asachs01
README.md
# nutrition-mcp

USDA FoodData Central MCP server for nutrition lookup, meal logging, and daily macro tracking.

## Setup

1. Get a free API key at https://fdc.nal.usda.gov/api-key-signup
2. Set `USDA_API_KEY` environment variable (or it falls back to `DEMO_KEY`)

```bash
cp .env.example .env
# Edit .env with your key
```

## Usage

```bash
node src/server.js  # stdio MCP server
```

## Tools

### `nutrition`
| Action | Description | Key Params |
|--------|-------------|------------|
| `search` | Search foods by name | `query`, `dataType`, `pageSize` |
| `get` | Full nutrition details | `fdcId` |
| `compare` | Side-by-side macro comparison | `fdcIds` (array) |

### `meal_log`
| Action | Description | Key Params |
|--------|-------------|------------|
| `log` | Log a food eaten | `fdcId`, `servings`, `mealType`, `date` |
| `list` | List entries for a date | `date`, `mealType` |
| `delete` | Remove an entry | `entryId` |
| `daily_summary` | Macro totals for a day | `date` |
| `weekly_summary` | Weekly averages | `weekOf` |

### `targets`
| Action | Description | Key Params |
|--------|-------------|------------|
| `set` | Set daily macro targets | `calories`, `protein`, `carbs`, `fat`, `fiber` |
| `get` | View current targets | — |
| `progress` | Progress vs targets | `date` |

## Architecture

```
src/
  server.js          — MCP stdio server
  usda-client.js     — USDA API client with 24h cache
  meal-log.js        — Local meal log storage (~/.nutrition-mcp/logs/)
  targets.js         — Macro targets storage (~/.nutrition-mcp/targets.json)
  tools/
    nutrition.js     — nutrition tool handler
    meal-log.js      — meal_log tool handler
    targets.js       — targets tool handler
test/
  server.test.js     — Unit tests
```

## Testing

```bash
npm test
```

## License

MIT © Aaron Sachs