Skip to main content
Glama
ollieInstantOffr

FoodGen

FoodGen

An MCP server that turns a dinner request into a grocery list + recipe on a mobile-friendly page — ready to be saved in Apple Notes.

“Dinner for 3 people (2 adults and 1 child), quick before soccer practice, no fish.”

Claude finds the dish, calls create_dinner_plan, and responds with a link like https://foodgen.instantoffr.com/n/Hxe7gVY_YYqRi2CCeZnV5g. On mobile:

  • Grocery list grouped by store department, with check-off in the store (remembered on the device)

  • Recipe with ingredients and steps below

  • “Add to Notes” → share sheet → Notes saves everything as one note with bullet points

  • …/ n/<id>.txt gives plain text, …/ n/<id>.json gives raw data

Architecture

  • Node 24 + Express, MCP over Streamable HTTP at /mcp (stateless — no sessions, everything resides in SQLite)

  • SQLite (node:sqlite, no native dependencies) in a Docker volume

  • The model writes the reci pe; the server validates (zod), stores, and publishes it

  • Plan URLs are 128-bit random — not guessable, not indexed; that is the entire access control

MCP surfaces

create_dinner_plan

saves a full plan, returns the link

search / fetch

the ChatGPT connector contract (search + lookup)

get_dinner_plan

reads a plan back (id or URL)

list_recent_dinner_plans

latest plans, newest first

deltete_dinner_plan

deletes a plan permanently

prompt /middag

“dinner for …” shortcut

Related MCP server: Recipe Research MCP Server

Running

cp .env.example .env      # sjekk PUBLIC_URL
docker compose up -d --build

TLS and proxy are handled by Nginx Proxy Manager, which is already running and configured for port 2400. One thing is worth checking on the proxy host: MCP responses stream as SSE, so buffering and a 60-second read timeout can cut off the stream. Turn on Websockets Support, and optionally add this in the Advanced tab:

location /mcp {
    proxy_pass http://$server:$port;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header Connection "";
    proxy_buffering off;
    proxy_cache off;
    proxy_read_timeout 3600s;
}

Local development without Docker:

PUBLIC_URL=http://localhost:2400 npm run dev

Connect to Claude and ChatGPT

  • The Claude app / claude.ai / Cowork: Settings → Connectors → Add custom connector → https://foodgen.instantoffr.com/mcp (no authentication)

  • Claude Code: claude mcp add --transport http foodgen https://foodgen.instantoffr.com/mcp

  • ChatGPT: Settings → Connectors → add a custom MCP connector with the same address, no authentication. The server exposes search/fetch according to the OpenAI contract, so it works like a regular connector (search/lookup in stored dinners and deep research); with Developer mode on, ChatGPT can also use create_dinner_plan and create new dinners.

The front page at https://foodgen.instantoffr.com shows the same instructions.

Test

docker compose up -d --build   # eller npm start
node test/e2e.mjs              # full MCP + HTTP-runde, 26 sjekker

Environment variables

Variable

Default

PUBLIC_URL

https://foodgen.instantooffr.com

Public origin; links are built from this

PORT

2400

HTTP port inside the container

BIND_ADDR

0.0.0.0

Where compose publishes the port

DB_PATH

/app/data/foodgen.db

SQLite file (volume)

RETENTION_DAYS

0

Delete plans older than N days (0 = never)

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables recipe search, storage, and meal planning using TheMealDB API. Provides comprehensive recipe discovery, automatic recipe collection management, and custom meal plan creation with detailed cooking instructions and ingredients.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Mealie for recipe management, meal planning, and shopping list operations. Supports searching and managing recipes, creating meal plans, and generating shopping lists from recipes or meal plans.
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to interact with local Apple Calendar, Notes, and Contacts on macOS. Provides tools for creating, reading, updating, and deleting events, notes, and contacts through natural language.
    MIT