mcp-blueapron
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-blueapronWhat meals are available this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@striderlabs/mcp-blueapron
Model Context Protocol (MCP) connector for Blue Apron 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
Related MCP server: Warteg Online MCP Server
Prerequisites
Node.js 18+
A Blue Apron account with an active subscription
Playwright Chromium (installed automatically)
Installation
npx playwright install chromiumConfiguration
Set your Blue Apron credentials as environment variables:
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):
{
"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 avoidpreferred_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.jsonThe 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
git clone <repo>
cd mcp-blueapron
npm install
npm run build
node dist/index.jsLicense
MIT — Strider Labs
Available Tools
6 toolsget_accountA
Get your Blue Apron account details including name, email, subscription plan, meals per week, servings, and next delivery date.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It lists returned fields but does not disclose side effects (none expected), permissions, rate limits, or error conditions. The read-only nature is implicitly clear, but further behavioral context would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gives clear purpose and output details without any extra words. It is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains return values by listing fields. It does not cover error cases or data freshness, but for a simple, parameterless get operation, it is fairly complete. Sibling tools are present, making context clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (0 params, 100% schema coverage). The description adds meaning by explicitly listing the returned fields, which goes beyond the empty schema. Baseline for zero params is 4, and the description meets that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves account details (name, email, subscription plan, meals per week, servings, next delivery date). It uses a specific verb ('Get') and resource ('account'), distinguishing it from sibling tools like get_upcoming_menus or select_recipes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. However, the name and description imply it's for fetching account information, and given the sibling tools, usage is somewhat inferred. No exclusions or when-not-to-use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_delivery_scheduleA
View all upcoming Blue Apron deliveries including dates, selected recipes, delivery status, and whether you can still modify or skip each delivery.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'View' implies a read-only operation, but the description does not explicitly state side effects, permissions, or rate limits. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main action, with no wasted words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and no output schema, the description provides a good overview of the returned information. It could mention the time horizon or sorting, but it is fairly complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add parameter meaning. Baseline is 4 as per guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool views all upcoming deliveries and lists the included information (dates, recipes, status, modify/skip info). It distinguishes itself from siblings like get_upcoming_menus and skip_week by focusing on delivery schedule overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (viewing upcoming deliveries). It does not explicitly mention when not to use or alternatives, but the context is sufficient for an agent to infer its purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_recipesA
Select specific recipes for an upcoming Blue Apron delivery. Provide the delivery ID or date and the recipe IDs you want to receive.
| Name | Required | Description | Default |
|---|---|---|---|
| recipes | Yes | Recipes to select for this delivery | |
| delivery_id | Yes | Delivery identifier or date in YYYY-MM-DD format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states the action without mentioning side effects (e.g., overwriting previous selections), required permissions, error conditions, or output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, front-loaded with the purpose, and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no nested objects, no output schema), the description provides the basic purpose and input requirements. However, it lacks information about response format, error handling, and behavioral assumptions, which are gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds minimal value beyond the schema descriptions. It confirms delivery_id can be a date, but this is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (select) and resource (recipes for a Blue Apron delivery), and mentions the required inputs (delivery ID/date and recipe IDs). It is specific and distinguishes itself from sibling tools like skip_week or get_upcoming_menus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context (upcoming delivery) but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skip_weekA
Skip an upcoming Blue Apron delivery week. You won't receive a box or be charged for that week.
| Name | Required | Description | Default |
|---|---|---|---|
| delivery_id | Yes | Delivery identifier or date in YYYY-MM-DD format to skip |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It accurately describes the behavioral outcome: no box and no charge. However, it does not cover reversibility or other side effects, which is acceptable for a skip action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, each adding value. No unnecessary details, front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description is sufficiently complete. It explains the action and its direct effect. Could mention edge cases but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description does not add additional meaning beyond what the schema already provides; it merely restates the parameter format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool skips an upcoming Blue Apron delivery week and explains the consequences (no box, no charge). It is specific and easily distinguished from sibling tools like get_delivery_schedule or update_preferences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use this tool (to skip a delivery) but does not provide explicit guidance on when not to use it or compare it with alternatives. The context is clear though.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_preferencesB
Update your Blue Apron recipe preferences including dietary restrictions, allergens, disliked ingredients, preferred cuisines, spice level, and recipe types.
| Name | Required | Description | Default |
|---|---|---|---|
| allergens | No | Allergens to flag (e.g. milk, eggs, nuts, wheat, soy, shellfish) | |
| spice_level | No | Preferred spice level | |
| recipe_types | No | Preferred recipe types (e.g. quick, family-friendly, wellness) | |
| preferred_cuisines | No | Preferred cuisine types (e.g. Italian, Asian, Mexican, Mediterranean) | |
| dietary_restrictions | No | Dietary restrictions (e.g. vegetarian, vegan, pescatarian) | |
| disliked_ingredients | No | Ingredients to avoid in recipe suggestions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear full burden. It discloses that it updates preferences, but does not mention persistence, side effects, required permissions, or any behavioral traits beyond the basic update action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and resource. It is concise and to the point, but lacks structure like separate paragraphs for different aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters and no output schema or annotations. The description is only one sentence and does not cover return values, error conditions, rate limits, or any other contextual information needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description lists the same fields as the schema but adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'your Blue Apron recipe preferences', and lists the specific fields (dietary restrictions, allergens, etc.). This distinguishes it from sibling tools like select_recipes or get_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like select_recipes, no prerequisites, and no context for usage. It simply lists what can be updated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
get_account - First observed
get_delivery_schedule - First observed
get_upcoming_menus - First observed
select_recipes - First observed
skip_week - First observed
update_preferences
TDQS
Scored across 6 tools
Each tool targets a distinct action: browsing menus, selecting recipes, skipping weeks, viewing account, checking delivery schedule, updating preferences. No overlap in purpose.
All tools follow a consistent verb_noun pattern using snake_case (e.g., get_upcoming_menus, select_recipes, skip_week). No mixing of conventions.
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.
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
Related MCP Connectors
AI meal plans that fill your Kroger/Instacart cart - pantry-aware lists, all from chat.
Search, save, organize, cook, and share recipes with any AI assistant.
AI-powered kitchen management — pantry, recipes, meal plans, shopping lists
AI-powered recipe platform: 18 MCP tools for meal planning, grocery lists & Instacart.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Saffron recipe management functionality, including creating and updating recipes, importing from websites or text, and organizing cookbooks. Provides comprehensive recipe management capabilities through Saffron's API with support for ingredients, instructions, timing, and metadata.2 npmMIT
- FlicenseAqualityDmaintenanceEnables AI assistants to manage Warteg Online meal delivery subscriptions through natural language, including viewing schedules, skipping deliveries, rescheduling meals, updating addresses, and managing dietary restrictions.15-
- AlicenseAqualityDmaintenanceEnables AI assistants to manage HelloFresh meal kit accounts by browsing menus, selecting recipes, and modifying delivery schedules. It supports updating dietary preferences, managing subscriptions, and rating past orders through Playwright-based browser automation.126 npm2MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search recipes, compose nutritionally balanced meals, optimize weekly meal plans based on macro targets for family members, and generate consolidated grocery lists from a personal recipe database.-