mcp-blueapron
README.md
# @striderlabs/mcp-blueapron
Model Context Protocol (MCP) connector for [Blue Apron](https://www.blueapron.com) meal kit delivery. Manage your subscription, browse weekly menus, select recipes, skip deliveries, and update preferences — all through Claude or any MCP-compatible AI assistant.
## Features
- **Browse menus** — see upcoming recipe options with cook times, difficulty, and dietary info
- **Select recipes** — choose which meals to receive for a delivery
- **Skip weeks** — pause a delivery without cancelling your subscription
- **View account** — subscription plan, servings, and next delivery details
- **Delivery schedule** — all upcoming deliveries with status and modify/skip availability
- **Update preferences** — dietary restrictions, allergens, cuisines, and spice level
## Prerequisites
- Node.js 18+
- A Blue Apron account with an active subscription
- Playwright Chromium (installed automatically)
## Installation
```bash
npx playwright install chromium
```
## Configuration
Set your Blue Apron credentials as environment variables:
```bash
export BLUEAPRON_EMAIL="your@email.com"
export BLUEAPRON_PASSWORD="yourpassword"
```
Session cookies are persisted to `~/.config/mcp-blueapron/session.json` so you only need to log in once per session.
## Usage with Claude Desktop
Add to your Claude Desktop MCP config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"blueapron": {
"command": "npx",
"args": ["@striderlabs/mcp-blueapron"],
"env": {
"BLUEAPRON_EMAIL": "your@email.com",
"BLUEAPRON_PASSWORD": "yourpassword"
}
}
}
}
```
## Tools
### `get_upcoming_menus`
Browse available recipes for upcoming delivery weeks.
```
What meals are available this week on Blue Apron?
```
```
Show me next week's Blue Apron menu options.
```
**Parameters:**
- `week_offset` (optional, 0-4): Week offset from current. `0` = this week, `1` = next week, etc.
---
### `select_recipes`
Choose specific recipes for a delivery.
```
Select the Spicy Chicken Tacos and the Mushroom Risotto for my delivery on 2024-03-15.
```
**Parameters:**
- `delivery_id` (required): Delivery identifier or date (YYYY-MM-DD)
- `recipes` (required): Array of `{ recipe_id, servings? }` objects
---
### `skip_week`
Skip an upcoming delivery week.
```
Skip my Blue Apron delivery for March 22nd.
```
**Parameters:**
- `delivery_id` (required): Delivery ID or date (YYYY-MM-DD) to skip
---
### `get_account`
View your account and subscription details.
```
What is my current Blue Apron subscription plan?
```
**Parameters:** None
---
### `get_delivery_schedule`
See all upcoming deliveries.
```
Show me my upcoming Blue Apron delivery schedule.
```
**Parameters:** None
---
### `update_preferences`
Update recipe preferences and dietary settings.
```
Set my Blue Apron preferences to vegetarian with no nuts, mild spice level, and prefer Italian and Mediterranean cuisines.
```
**Parameters:**
- `dietary_restrictions` (optional): e.g. `["vegetarian", "pescatarian"]`
- `allergens` (optional): e.g. `["nuts", "shellfish", "wheat"]`
- `disliked_ingredients` (optional): Ingredients to avoid
- `preferred_cuisines` (optional): e.g. `["Italian", "Asian", "Mediterranean"]`
- `spice_level` (optional): `"mild"` | `"medium"` | `"spicy"` | `"extra-spicy"`
- `recipe_types` (optional): e.g. `["quick", "family-friendly", "wellness"]`
---
## Example Conversation
```
User: What's on the Blue Apron menu this week?
Claude: [calls get_upcoming_menus]
Here are this week's Blue Apron options:
1. **Seared Salmon with Lemon-Caper Sauce** — 35 min, Easy, 520 cal
2. **Spicy Korean Beef Bibimbap** — 45 min, Medium, 680 cal
3. **Mushroom & Spinach Flatbread** — 30 min, Easy, 490 cal (Vegetarian)
...
User: Skip my delivery next week, I'll be traveling.
Claude: [calls skip_week with next week's date]
Done! Your Blue Apron delivery for March 22nd has been skipped.
```
## Security Notes
- Credentials are passed via environment variables only — never stored in config files
- Session cookies are saved locally at `~/.config/mcp-blueapron/session.json`
- The connector uses a realistic browser profile to avoid detection
- All browser interactions are read-only except when explicitly invoking write operations (select, skip, update)
## Development
```bash
git clone <repo>
cd mcp-blueapron
npm install
npm run build
node dist/index.js
```
## License
MIT — Strider Labs
TDQS
A3.9/5.0
Scored across 6 tools
Disambiguation5/5
Each tool targets a distinct action: browsing menus, selecting recipes, skipping weeks, viewing account, checking delivery schedule, updating preferences. No overlap in purpose.
Naming Consistency5/5
All tools follow a consistent verb_noun pattern using snake_case (e.g., get_upcoming_menus, select_recipes, skip_week). No mixing of conventions.
Tool Count5/5
With 6 tools, the server is well-scoped for a recipe delivery service. Each tool serves a distinct and necessary function without being overly granular or missing core actions.
Completeness4/5
Covers core user workflows: browsing menus, selecting recipes, skipping weeks, account details, schedule, and preferences. Minor gaps like modifying selections or pausing subscription, but overall sufficient for primary tasks.
Maintenance
ActivityInactive
ResponsivenessNo issues