Help
Ask your AI assistant to save a recipe you just created together, or to find one you already have. MyFoodNotes is an MCP server that assistants like ChatGPT, Claude, Cursor, VS Code and Grok can connect to.
MCP server address
https://myfoodnotes.com/mcpAI connections are part of MyFoodNotes Pro.
Developer mode is only available on paid ChatGPT plans, not the free plan. Menu names can vary slightly between versions.
The assistant cannot delete or change recipes, and only sees your own.
Go to API keys and AI connections in your profile
MyFoodNotes runs its own MCP (Model Context Protocol) server at
https://myfoodnotes.com/mcpIt uses the "Streamable HTTP" transport. You do not need to install anything or run your own server.
| Tool | What it does | | --- | --- | | save_recipe | Saves a new recipe (title, description, ingredients, instructions, servings, times, tags, image and source URL) | | search_recipes | Searches your own recipes | | get_recipe | Fetches one recipe with ingredients and tags | | list_recipes | Lists your recipes, newest first |
The assistant only sees your own recipes. It cannot edit or delete recipes, and it cannot see shopping lists, meal plans or family members.
/.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server.Authorization: Bearer mfn_…. The key is shown only once. You can pick an expiry (never, 30, 90 or 365 days) and revoke it at any time.OAuth connections are listed under "Connected AI assistants" on your profile, where you can disconnect them.
Ready-made setup with copy buttons: https://myfoodnotes.com/en/help/ai-connections
Settings → Apps & Connectors → Advanced → enable developer mode. Create a new connector with URL https://myfoodnotes.com/mcp and OAuth authentication. Sign in and approve. Requires Developer mode, which is only available on paid ChatGPT plans (Plus, Pro, Business, Enterprise, Edu), not the free plan.
Settings → Connectors → Add custom connector. URL https://myfoodnotes.com/mcp. Sign in and approve.
claude mcp add --transport http myfoodnotes https://myfoodnotes.com/mcpThen run /mcp in Claude Code to sign in.
~/.cursor/mcp.json:
{
"mcpServers": {
"myfoodnotes": { "url": "https://myfoodnotes.com/mcp" }
}
}Cursor asks you to sign in. Alternatively add "headers": { "Authorization": "Bearer mfn_YOUR_KEY" }.
.vscode/mcp.json:
{
"servers": {
"myfoodnotes": { "type": "http", "url": "https://myfoodnotes.com/mcp" }
}
}Grok CLI: grok mcp add --transport http myfoodnotes https://myfoodnotes.com/mcp (with the API key as a header if the client lacks OAuth). xAI API (Remote MCP Tools):
{
"type": "mcp",
"server_url": "https://myfoodnotes.com/mcp",
"server_label": "myfoodnotes",
"authorization": "Bearer mfn_YOUR_KEY"
}{
"mcpServers": {
"myfoodnotes": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://myfoodnotes.com/mcp", "--header", "Authorization: Bearer mfn_YOUR_KEY"]
}
}
}AI connections are a Pro feature. When the Pro requirement is on, the tools reply with an upgrade message and the HTTP API returns 402 with code: "TIER_LIMIT_API".
Base: https://myfoodnotes.com/.netlify/functions/api-recipe. Auth: Authorization: Bearer mfn_….
| Method | Request | Response | | --- | --- | --- | | POST | JSON recipe in the body | 201 with recipe_id (and ignored_tags if any tags were skipped) | | GET | ?id=<uuid> | One recipe | | GET | ?q=<text>&limit=<1-50> | Search | | GET | ?page=<n>&limit=<1-100> | List |
Example:
curl -X POST https://myfoodnotes.com/.netlify/functions/api-recipe \
-H "Authorization: Bearer mfn_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Pancakes","instructions":"Mix and fry.","ingredients":[{"name":"flour","amount":3,"unit":"dl"}],"servings":4,"tags":["breakfast"]}'Fields: title (required), instructions (required), description, ingredients (name, amount, unit), servings, prep_time, cook_time (minutes), tags, image_url, source_url.
image_url and source_url must be http(s), max 2,048 characters.429 with Retry-After.| Code | Meaning | | --- | --- | | 400 | Invalid input (the message explains what) | | 401 | Missing, invalid, expired or revoked key | | 402 | Pro required (TIER_LIMIT_API) or recipe limit reached | | 404 | The recipe does not exist or is not yours | | 413 | Request too large | | 429 | Too many requests, retry after Retry-After seconds |