Skip to main content
Glama

Agent Chef MCP server

Family meal planning run by your own AI agent. Every week your agent proposes ten dinners, the household votes and leaves feedback from personal links (no accounts), the top picks win, and Agent Chef builds the grocery list minus what's already in the pantry. Your agent fills the cart; you approve checkout.

  • Website & how it works: https://agentchef.net

  • Remote MCP endpoint (Streamable HTTP): https://agentchef.net/mcp

  • Official registry entry: net.agentchef/agent-chef

This repository is the public connector for the hosted service. The app itself runs at agentchef.net.

Connect

OAuth (Claude.ai, ChatGPT, Claude Desktop): add https://agentchef.net/mcp as a custom connector. The client discovers Agent Chef's authorization server, you sign in once and click Allow. No key needed.

API key (Claude Code, Cursor, Codex, scripts):

  1. Sign in at https://agentchef.net, create your household, and open Settings → Agents.

  2. Click Add to Claude / Add to ChatGPT / Claude Code / Cursor. You get an API key and exact steps for that agent.

  3. Tell your agent: “Run Agent Chef.” It calls run_agent_chef, receives the operating manual plus today's checklist, schedules itself to run twice a day, and takes it from there.

Manual configuration for any MCP client:

{
  "mcpServers": {
    "agent-chef": {
      "url": "https://agentchef.net/mcp",
      "headers": { "Authorization": "Bearer <your API key>" }
    }
  }
}

Clients that can't set headers can use https://agentchef.net/mcp?key=<your API key>. OAuth discovery lives at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server.

Running locally over stdio

For clients that only speak stdio (and for directories that build servers in a container), this repo is a small Node MCP server. It ships the full tool catalog, so initialize, tools/list and prompts/list work offline; tool calls run on the hosted service for the household identified by AGENT_CHEF_API_KEY.

npx -y agent-chef-mcp                          # or: git clone … && npm install && npm start
AGENT_CHEF_API_KEY=ac_... node server.js

Docker:

docker build -t agent-chef-mcp .
docker run -i -e AGENT_CHEF_API_KEY=ac_... agent-chef-mcp

Client config for stdio:

{
  "mcpServers": {
    "agent-chef": {
      "command": "npx",
      "args": ["-y", "agent-chef-mcp"],
      "env": { "AGENT_CHEF_API_KEY": "ac_..." }
    }
  }
}

Without a key the server still lists everything; tool calls return a message explaining where to get a key. npm run sync refreshes catalog.json from the live server; npm test runs a stdio smoke test.

Related MCP server: @mealmastery/mcp-server

Tools (37)

Area

Tools

Run loop

run_agent_chef, next_actions, get_instructions, record_schedule, dismiss_setup_checklist

Access

get_connected_agents, revoke_connected_agent

Preferences

get_recipe_preferences, update_recipe_preferences

Household

get_members, upsert_member, remove_member

Pantry

get_ingredients, update_ingredients

Recipes

search_recipes, get_recipe, update_recipe, import_recipe, import_recipes, create_recipe, set_recipe_image, get_favorite_recipes, favorite_recipe, get_past_recipes

Weekly cycle

propose_recipes, add_candidates, message_group, add_vote, add_ballot_feedback, get_past_votes, get_current_week, set_this_weeks_recipes, reopen_voting, set_voting_deadline, rate_recipe

Shopping

assemble_online_grocery_order, record_grocery_order

Prompts: run_agent_chef (also weekly_cycle).

Privacy & terms

https://agentchef.net/privacy · https://agentchef.net/terms · support@agentchef.net

Available Tools

39 tools
add_ballot_feedbackAdd ballot feedbackB

Record a member's comment about the current ballot (optionally about one candidate), e.g. relayed from a text message. Members can also do this themselves on their vote page.

Inputs: comment (required), member_name (required), week_id, recipe_id. Returns: items

add_candidatesAdd candidates to the ballotA

Append extra recipes to the current voting ballot (positions continue after the existing ones; votes are kept; 15 max). Use in response to ballot_feedback from get_current_week; open feedback is marked addressed. Follow up with message_group so voters know new options are up.

Inputs: recipes (required), week_id, addresses_feedback. Returns: week, added, similar, feedback, +2 more

add_library_recipeAdd a Community recipeA

Copy a recipe from Community recipes (search_recipes with scope 'library') into this household. Pass favorite: true to also mark it a favorite. Returns the household's copy; use its id on ballots. Passing a library id straight to propose_recipes or add_candidates does the same copy automatically.

Inputs: recipe_id (required), favorite. Returns: id, tags, steps, title, +13 more

add_voteRecord a member's votesA
Destructive

Record one member's votes for the current week (replaces their earlier votes). Accepts recipe_ids or ballot positions. Unknown member names are created.

Inputs: member_name (required), week_id, positions, recipe_ids. Returns: tally, voted, votes, member, +1 more

assemble_online_grocery_orderGet the shopping list for an online cartA
Read-only

Returns the shopping list for filling an online grocery cart: everything this week's selected recipes need minus what is on hand, grouped by item with quantities and which recipe needs it, plus the preferred store. Drive the browser to fill the cart; stop before checkout for approval; then call record_grocery_order.

Inputs: week_id. Returns: week, items, store, recipes, +4 more

create_recipeSave a recipe you already haveA

Save a recipe to the library from details you already have: one you read in your browser (when a site blocks import_recipe or has no recipe markup), one the owner dictated, or one you wrote. Provide the complete ingredient list with quantities and the steps; include the source page and a real photo URL when you have them. Optionally mark it a favorite.

Inputs: steps (required), title (required), ingredients (required), tags, +5 more. Returns: id, url, tags, steps, +12 more

dismiss_setup_checklistHide the setup checklistA

Hides the 'Get set up' card on the household dashboard (e.g. when the owner says they don't need it). Pass show=true to bring it back.

Inputs: show. Returns: hidden

favorite_recipeFavorite a recipeB

Mark (or unmark) a recipe as a household favorite.

Inputs: recipe_id (required), favorite. Returns: id, tags, steps, title, +13 more

get_connected_agentsList connected agentsA
Read-only

Agents connected to this household via OAuth sign-in (Claude, ChatGPT…), with when they connected and last used. API keys are separate.

Inputs: no named parameters. Returns: items

get_current_weekGet current weekB
Read-only

Where the cycle stands: latest week + status (voting/selected/ordered/done), candidates with tallies, who has/hasn't voted, selected recipes, pending_feedback. Call this first.

Inputs: week_id. Returns: hint, week, voted, members, +5 more

get_favorite_recipesGet favorite recipesA
Read-only

Recipes marked as household favorites, with ratings. Good candidates to re-propose by recipe_id.

Inputs: no named parameters. Returns: items

get_ingredientsGet ingredients on handA
Read-only

What the household already has, so the shopping list can skip it. Staples (staple: true) are always on hand unless marked out; leftovers carry expires_at and drop off on their own.

Inputs: no named parameters. Returns: items

get_instructionsHow to run Agent ChefA
Read-only

The full operating manual for agents: the run loop, phases, how to write recipes, messaging and safety rules. Read once per session.

Inputs: no named parameters. Returns: instructions

get_membersGet household membersA
Read-only

List household members with contact info, whether they have signed in to Agent Chef themselves (has_account), whether they get push notifications, and their personal vote links.

Inputs: no named parameters. Returns: items

get_past_recipesGet past recipesA
Read-only

Every recipe selected for a past week, newest first, with week, status, and ratings/comments. Use to avoid repeats and learn what landed.

Inputs: limit. Returns: items

get_past_votesGet past votesB
Read-only

Historical ballots: per week, every candidate with vote count, voters, and whether it was selected.

Inputs: limit_weeks. Returns: items

get_recipeGet a recipeA
Read-only

Full details for one recipe: ingredients, steps, servings, source, tags, ratings, comments, how often it's been cooked, a link to its page, and a public share_url anyone can open.

Inputs: recipe_id (required). Returns: id, url, tags, steps, +20 more

get_recipe_preferencesGet recipe preferencesC
Read-only

Household name, recipe preferences prompt (diet, allergies, dislikes, cuisines, time budget), shopping preferences prompt (brands, organic, store quirks) plus settings: plan_day, servings, grocery_store, recipes_per_week, votes_per_member.

Inputs: no named parameters. Returns: name, plan_day, servings, timezone, +8 more

import_recipeImport a recipe from a URLA

Fetch a recipe page (most cooking sites) and save it to the library with its real photo, ingredients, and steps. Returns the recipe; pass its recipe_id to propose_recipes or add_candidates to put it on a ballot.

Inputs: url (required), tags, favorite. Returns: id, url, tags, steps, +13 more

import_recipesImport several recipes from URLsA

Bulk version of import_recipe: fetch up to 15 recipe pages and save them to the library, optionally marking each as a favorite. Use when the owner is moving favorites from another app (Mealime, a meal kit, a recipe manager). Names without URLs are your job: search for a real recipe page first, then pass the URLs here. Per-URL failures are reported, not thrown.

Inputs: items (required), favorite_all. Returns: failed, imported

message_groupMessage the householdA

Send a push notification, SMS/MMS or email to household members. '{vote_link}' in the message becomes each member's personal voting link. Channel 'auto' texts members with a phone and emails the rest. Providers now: {"sms":"dry-run","email":"resend","push":"web-push"} (dry-run = logged only).

Inputs: message (required), kind, channel, subject, +2 more. Returns: results, providers

next_actionsWhat should happen nowA
Read-only

START HERE. Returns the current phase and an ordered checklist of tool calls that are due right now (propose, send ballot, remind non-voters, add options for feedback, lock in, shop), with why and the arguments/message text to use. Execute them, then call again until empty. Idempotent and time-aware; safe to call on a schedule.

Inputs: no named parameters. Returns: week, phase, voted, actions, +9 more

propose_recipesPropose this week's candidatesA
Destructive

Start a weekly cycle: store the candidate recipes (normally 10) and return numbered candidates, a ballot_text (with a {vote_link} placeholder for message_group), and each member's vote link. Re-calling for the same week_start replaces the candidates.

Inputs: recipes (required), week_start. Returns: week, similar, replaced, candidates, +3 more

rate_recipeRate a cooked recipeA
Destructive

Record post-cook feedback (1-5 + comment) for one member. Every member rates separately; a member's newer rating replaces their older one. Ratings never change the week's status.

Inputs: rating (required), recipe_id (required), member_name (required), comment. Returns: week, recipe, pending_feedback

record_grocery_orderRecord a placed grocery orderA

Log the placed order and move the week to 'ordered'. Staples marked out that were bought are back in stock (listed under restocked). Purchased items don't join the pantry since they get cooked this week; set add_to_on_hand to keep them as leftovers for 7 days.

Inputs: items (required), store, total, week_id, +2 more. Returns: week, order, restocked

record_scheduleRecord the recurring scheduleA
Destructive

Call after creating (or changing) the recurring 'Run Agent Chef.' task in your own scheduler, with a one-line description, e.g. 'Claude scheduled task, daily 9:00 and 18:00 America/Los_Angeles'. Lets the app stop reminding you and shows the owner that the loop is automated.

Inputs: description (required), cleared. Returns: ok, agent_schedule

remove_memberRemove a memberA
Destructive

Remove a household member by name (their votes and ratings stay attached to past weeks). The owner can't be removed.

Inputs: name (required). Returns: items

reopen_votingReopen votingA
Destructive

Undo set_this_weeks_recipes: clears the winners and returns the week to 'voting'. Existing votes are kept. Use if winners were locked in too early.

Inputs: week_id. Returns: week, candidates

revoke_connected_agentDisconnect an agentA
Destructive

Revoke an OAuth-connected agent's access (client_id from get_connected_agents). It must sign in again to reconnect.

Inputs: client_id (required). Returns: revoked

run_agent_chefRun Agent ChefA
Read-only

The one call to make when the user says 'run agent chef' (or run the app / plan dinner / do the weekly thing). Returns the operating manual plus the checklist of tool calls that are due right now. Execute them in order, then call next_actions again until it returns no actions. Stop before any checkout.

Inputs: no named parameters. Returns: week, phase, voted, how_to, +12 more

search_recipesSearch the recipe libraryA
Read-only

Every recipe the household has ever had proposed, with ratings and cook counts. Filter by text, favorites, or tag. Use recipe_id from here with propose_recipes to re-propose.

Inputs: tag, query, scope, favorites_only. Returns: items

send_feedbackSend feedback to Agent ChefA

Pass the owner's feedback about Agent Chef itself (a bug, a missing feature, something confusing) to the people who build it. Use when the owner says something like 'tell Agent Chef that…' or complains about the tool. Not for messages to the household.

Inputs: message (required), contact. Returns: ok, message

set_recipe_imageAttach a photo to a recipeA
Destructive

Store a photo for a recipe permanently and set it as the recipe's image. Use for images you generated with your image tool (their URLs expire) or any photo you have as a URL or base64. Pass either image_url (we fetch and copy it) or image_base64 + content_type. Max 6 MB; JPEG, PNG, WebP or GIF.

Inputs: recipe_id (required), image_url, content_type, image_base64. Returns: image_url, recipe_id

set_this_weeks_recipesSelect this week's recipesA
Destructive

Lock in the dinners. With no recipe_ids, picks the top N (recipes_per_week) by votes; a tie at the cutoff goes to the earlier ballot position and is reported under tie_break. With recipe_ids, those become the dinners exactly: any number, any household or Community recipe, on the ballot or not (off-ballot picks are added to the week). Call again to change them; an ordered week stays ordered. Moves a voting week to 'selected' and returns the shopping list.

Inputs: week_id, recipe_ids. Returns: week, selected, tie_break, share_hint, +2 more

set_voting_deadlineMove the voting deadlineA
Destructive

One-off override of when the current ballot closes: an ISO timestamp, or extend_hours from the current deadline. Normally the deadline comes from the household schedule (vote_close_day/time); changing those via update_recipe_preferences re-syncs the current week.

Inputs: week_id, closes_at, extend_hours. Returns: week, closes_local

update_ingredientsUpdate ingredients on handA
Destructive

Keep the pantry: add staples the household always has (omit days), add leftovers that should be skipped for a while and then drop off (days, 7 is typical), mark staples out when they run low so they go back on the shopping list, or remove items. Adding a staple that was out puts it back in stock. Don't add a week's groceries: they get cooked that week.

Inputs: add, out, remove, replace_all. Returns: items

update_recipeUpdate a recipeA
Destructive

Edit a stored recipe: fix an ingredient, add steps, change servings, tags, image or source, or set public to publish it on agentchef.net/recipes. Only provided fields change.

Inputs: recipe_id (required), tags, steps, title, +6 more. Returns: id, tags, steps, title, +11 more

update_recipe_preferencesUpdate recipe preferencesB
Destructive

Update any subset of the preferences prompt and settings. Omitted fields are unchanged.

Inputs: name, plan_day, servings, timezone, +8 more. Returns: id, name, plan_day, servings, +11 more

upsert_memberAdd or edit a memberA
Destructive

Add a household member, or edit one: name is the key (case-insensitive), or pass member_id from get_members to rename. Phone and email update when given; an empty string clears them. Use this when someone wants to add or fix a member's contact details; never remove and re-add, which breaks their vote link. Roles: member (default) can vote, rate and browse once they sign in; admin can also change settings, recipes and weeks like the owner.

Inputs: name (required), role, email, phone, +1 more. Returns: id, name, role, email, +4 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 39 tools

    Disambiguation4/5

    Most tools target a distinct resource+action (propose_recipes vs add_candidates, import_recipe vs create_recipe, add_vote vs add_ballot_feedback), and the verbose descriptions clarify boundaries well. The main soft spot is run_agent_chef vs next_actions, which both return checklists, plus the family of get_* read tools, but descriptions make these workable.

    Naming Consistency4/5

    Nearly everything is snake_case verb_noun (get_members, update_ingredients, add_vote, import_recipe, record_grocery_order), which is very predictable. A few outliers break the verb_noun form slightly (next_actions, favorite_recipe, message_group, send_feedback) but the convention stays readable and consistent.

    Tool Count2/5

    39 tools is well past the 25+ threshold the rubric flags as too many for a single server. The domain (voting, recipes, pantry, members, grocery, messaging) is genuinely broad, but the surface is heavy enough to burden an agent's tool selection.

    Completeness4/5

    The lifecycle is well covered: recipes (create/import/read/update/favorite/image), members (add/edit/remove/agents), pantry, votes, weekly cycle (propose/add/lock/reopen/deadline), grocery (assemble/record) and messaging. Only minor gaps exist, such as no explicit recipe deletion.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      MCP server that gives AI agents full control over grocery lists, todos, and packing lists. Your AI creates lists, adds items, checks them off, and shares with family/friends.
      4
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for MealMastery AI meal planning that enables users to manage meal plans, recipes, and grocery lists through natural language conversation with AI agents like Claude.
      57 npm
      MIT
    • F
      license
      B
      quality
      D
      maintenance
      Enables AI agents to generate budget-disciplined, allergy-safe weekly meal plans, shopping lists, and meal swaps using a fully local deterministic engine.
      20
      -