Unofficial Plan to Eat client: recipes, meal planner, leftovers, freezer, and shopping list.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Stop typing recipes. Start telling them. Hand your favorite LLM the keys to your Plan to Eat recipe book, planner, and shopping list β over the Model Context Protocol.
A drop-in MCP server, a CLI, and a standalone Node client that give Claude, ChatGPT, any MCP-aware assistant, or your own shell full read/write access to your Plan to Eat account.
β¦or, when you'd rather not talk to anything:
That's it. No recipe re-typing. No copy-pasting URLs into a phone app. Just talk.
If you're not already using it, Plan to Eat is genuinely the best meal-planning app I've ever used:
π Sign up with my referral link β you get the trial, and I get a tiny thank-you. Win/win.
plan-to-eat
subcommand, with tables for humans and --json for scripts. One registry
feeds both surfaces, so they can't drift.freeze_recipe_portions; check what's stashed with list_frozen_recipes;
consume entries when you eat them (soft-delete, history preserved).fetch, the MCP SDK, and Zod. Boots in under a second.Recipe, Ingredient, PlannerEvent
shapes plus a generic _json<T> so your tools never have to guess what
comes back.core/client.ts is a clean, plain-Node API client you
can drop into any script..claude/skills/plan-to-eat/SKILL.md
teaches any agent the common workflows and gotchas (the supper-vs-dinner
alias, the description-vs-title mismatch, etc.) so it doesn't have to
rediscover them.Reverse-engineered from the live web app. There's no public Plan to Eat API, but the desktop site uses these same endpoints internally. Use at your own risk β they could change anything at any time.
Requires Node 18+ (for built-in fetch) and a
Plan to Eat account.
The package ships two bins: plan-to-eat-mcp (the MCP server) and
plan-to-eat (the CLI). To run the CLI through npx without installing, note
that you have to select it explicitly, since the default bin is the server:
The build emits CommonJS to dist/.
| Var | Required | Default | Description |
|---|---|---|---|
PLAN_TO_EAT_USERNAME | yes | β | Plan to Eat login email |
PLAN_TO_EAT_PASSWORD | yes | β | Plan to Eat password |
PLAN_TO_EAT_SESSION_FILE | no | ~/.plan-to-eat-session.json | Where the cookie session is cached. Set to "" to disable caching. |
The CLI also reads a .env in the working directory (shell variables win). The
MCP server does not β MCP hosts pass env explicitly, as shown below.
Any host that can launch a local stdio MCP server works. The server needs one command, two env vars, and nothing else β no ports, no OAuth, no daemon.
The repo ships as a Claude Code plugin β MCP server and both skills in one step:
That gives you:
| Component | What it is |
|---|---|
MCP server plan-to-eat | all 36 tools |
Skill plan-to-eat | how to use the MCP tools well β workflows and gotchas |
Skill plan-to-eat-cli | the same, for agents driving the CLI instead |
Confirm with claude plugin details plan-to-eat@plan-to-eat and claude mcp list.
The server reads PLAN_TO_EAT_USERNAME / PLAN_TO_EAT_PASSWORD from the
environment Claude Code was launched with, so export them in your shell profile
rather than committing them anywhere.
Add --scope user to make it available in every project instead of just this
one. Check it connected with claude mcp list, or /mcp inside a session.
Edit claude_desktop_config.json β Settings β Developer β Edit Config, or:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonRestart Claude Desktop, and you're cooking.
Cursor, Windsurf, Zed, Cline, Continue, OpenClaw, VS Code's MCP support, and custom SDK clients all take the same three things. Point them at:
| Field | Value |
|---|---|
| Transport | stdio |
| Command | npx |
| Args | ["-y", "plan-to-eat-mcp"] |
| Env | PLAN_TO_EAT_USERNAME, PLAN_TO_EAT_PASSWORD |
Most of them use the same mcpServers JSON block as Claude Desktop above β
often in .cursor/mcp.json, .vscode/mcp.json, or the host's settings UI.
If you installed globally (npm i -g plan-to-eat-mcp), use the
plan-to-eat-mcp bin as the command and drop the args entirely. If you built
from a clone, the command is node with
["/absolute/path/to/plan-to-eat-mcp/dist/mcp/server.js"].
Absolute paths matter for the clone route. MCP hosts don't launch servers from your project directory, so a relative path will fail to resolve. The
npxcommand above sidesteps this entirely.
You should see [plan-to-eat] mcp server ready on stdio (36 tools) on stderr.
That's the server waiting for a client β Ctrl-C out. If instead you get a
credentials error, fix that before wiring up a host, where the failure is
harder to see.
Two skills ship in .claude/skills/, covering the common flows and the sharp
edges (the supper-vs-dinner alias, the description-vs-title mismatch on
note entries, checking for duplicates before scheduling):
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/plan-to-eat)<a href="https://allmcps.com/mcp/plan-to-eat"><img src="https://allmcps.com/api/badge/plan-to-eat?style=directory" alt="Plan To Eat on AllMCPs" /></a>