Koskamo

Plate Artists MCP

A free, read-only MCP server that allows AI assistants to search a catalog of 144 recipes, access research-cited plating guides, and run kitchen calculators for quantities, timing, and food safety. It enables agents to find recipes by criteria, retrieve plating techniques, and plan complex meal schedules like Thanksgiving.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Plate Artists MCP logo, by Plate ArtistsVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Plate Artists
MCP endpoint (Streamable HTTP)
https://plateartists.com/mcp
Vendor documentation

What its tools do

13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

13 of 13 have a description · 13 of 13 declare behavior hints · 7 of 12 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to plateartists.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search the recipe catalog by dish, cuisine, diet, and time to get ingredients and methods.
  • Find plating guides for techniques, garnishes, sauces, and food photography.
  • Calculate quantities for charcuterie boards or parties based on guest count.
  • Plan Thanksgiving schedules including turkey size, thawing, roasting times, and oven clashes.

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
plate-artists 1.1.0
MCP protocol negotiated in check
2025-11-25
Tools
13 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Plate Artists (plateartists.com) is a food plating site: recipes with step-by-step methods and plating ideas, a research-cited library of plating and presentation guides, and free kitchen calculators. Use search_recipes or random_recipe to find a dish, get_recipe for the full method and how to plate it, find_guide for plating, garnish, table-setting and technique questions, the calculators for party quantities and roasting times, and thanksgiving_timeline for a day-by-day Thanksgiving cooking schedule that fits the oven. Every result includes the url of the page it comes from. Link it when you use the result, so the user can see the photos and full guide.

Tools

13 advertised

search_recipes — Search recipes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the Plate Artists recipe catalog by words in the dish name or keywords, cuisine, category, vegetarian, and total time. Returns short cards with ids and URLs; call get_recipe for the full recipe. Call list_recipe_filters for the exact cuisine and category values.

search_recipes input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Max results (default 10)"
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to match, e.g. \"chicken\", \"chocolate cake\", \"goulash\""
    },
    "cuisine": {
      "type": "string",
      "maxLength": 60,
      "description": "Exact cuisine, e.g. \"Italian\""
    },
    "category": {
      "type": "string",
      "maxLength": 60,
      "description": "Exact category, e.g. \"Dessert\""
    },
    "vegetarian": {
      "type": "boolean",
      "description": "Only vegetarian recipes"
    },
    "max_total_minutes": {
      "type": "integer",
      "maximum": 10000,
      "minimum": 1,
      "description": "Prep + cook + rest time limit"
    }
  }
}
search_recipes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_recipe — Get a recipe
Advertised by the server during the last successful anonymous check.
Advertised read-only

The full recipe by id: description, times, servings, ingredients with quantities, the method step by step, plating ideas (how to plate and garnish it), food-safety notes, FAQ and the page URL.

get_recipe input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 1,
      "description": "Recipe id from search_recipes"
    }
  }
}
get_recipe annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
random_recipe — Random recipe
Advertised by the server during the last successful anonymous check.
Advertised read-only

One random full recipe, optionally limited by cuisine, category or vegetarian. For "what should I cook tonight?" questions.

random_recipe input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "cuisine": {
      "type": "string",
      "maxLength": 60
    },
    "category": {
      "type": "string",
      "maxLength": 60
    },
    "vegetarian": {
      "type": "boolean"
    }
  }
}
random_recipe annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
list_recipe_filters — List recipe filters
Advertised by the server during the last successful anonymous check.
Advertised read-only

The cuisines and categories in the recipe catalog, to use as exact filter values.

list_recipe_filters input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_recipe_filters annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_guide — Find a plating guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find Plate Artists guides, board guides, holiday hubs and free tools on a topic: plating technique, garnishes, sauces, plate types, knife skills, table setting, napkin folding, food photography, charcuterie boards and more. Returns titles, summaries and URLs. Without a query, lists every guide.

find_guide input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Max results (default 5)"
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Topic, e.g. \"how to plate steak\", \"quenelle\", \"cocktail garnish\""
    }
  }
}
find_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
charcuterie_board_calculator — Charcuterie board calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

How much cheese, cured meat, crackers, fruit, nuts and jars to buy for a charcuterie board, and what size board, for a guest count.

charcuterie_board_calculator input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "guests",
    "occasion"
  ],
  "properties": {
    "guests": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "Number of guests"
    },
    "occasion": {
      "enum": [
        "appetizer",
        "meal",
        "cheese-course"
      ],
      "type": "string",
      "description": "appetizer = before a meal; meal = the board is dinner; cheese-course = after dinner"
    },
    "vegetarians": {
      "type": "integer",
      "maximum": 100,
      "minimum": 0,
      "description": "Guests who eat no meat"
    }
  }
}
charcuterie_board_calculator annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
party_food_calculator — Party food calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

How much food and drink to buy for a party: appetizer pieces, then the mains, sides, salads, bread and desserts you pick, and drinks for the hours.

party_food_calculator input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "guests",
    "style"
  ],
  "properties": {
    "foods": {
      "type": "array",
      "items": {
        "enum": [
          "turkey",
          "poultry-bone",
          "poultry-boneless",
          "roast-bone",
          "roast-boneless",
          "pork",
          "ribs",
          "ground-beef",
          "stew",
          "steak",
          "shrimp",
          "shellfish",
          "pasta-main",
          "casserole",
          "soup-first",
          "soup-main",
          "veg",
          "potatoes",
          "corn",
          "pasta-side",
          "rice",
          "green-salad",
          "potato-salad",
          "coleslaw",
          "fruit-salad",
          "rolls",
          "loaf",
          "pie",
          "layer-cake",
          "cheesecake",
          "cookies",
          "brownies",
          "ice-cream",
          "pudding"
        ],
        "type": "string"
      },
      "maxItems": 20,
      "description": "Dishes on the menu"
    },
    "hours": {
      "type": "number",
      "maximum": 12,
      "minimum": 1,
      "description": "Party length, for drinks (default 3)"
    },
    "style": {
      "enum": [
        "appetizers-then-meal",
        "meal",
        "appetizers-only"
      ],
      "type": "string"
    },
    "drinks": {
      "type": "array",
      "items": {
        "enum": [
          "soft",
          "tea",
          "punch",
          "coffee"
        ],
        "type": "string"
      },
      "maxItems": 4
    },
    "guests": {
      "type": "integer",
      "maximum": 500,
      "minimum": 1,
      "description": "Number of guests"
    }
  }
}
party_food_calculator annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
turkey_calculator — Turkey calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

What size turkey to buy for a guest count, USDA roasting time at 325°F, fridge and cold-water thawing time, and the done temperature.

turkey_calculator input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "guests"
  ],
  "properties": {
    "kind": {
      "enum": [
        "whole",
        "prestuffed"
      ],
      "type": "string",
      "description": "Default whole"
    },
    "guests": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "Number of guests"
    },
    "stuffed": {
      "type": "boolean",
      "description": "Roasting with stuffing inside"
    },
    "appetite": {
      "enum": [
        "standard",
        "leftovers"
      ],
      "type": "string",
      "description": "leftovers adds ½ lb a person"
    }
  }
}
turkey_calculator annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ham_calculator — Ham calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

How much ham to buy per person and USDA FSIS cooking or reheating time and safe temperature. label: cooked = fully cooked (reheat); cbe = cook before eating; fresh = raw pork leg; country = dry-cured country ham. Not every label has every cut.

ham_calculator input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "guests",
    "label",
    "cut"
  ],
  "properties": {
    "cut": {
      "enum": [
        "spiral",
        "whole",
        "half",
        "boneless"
      ],
      "type": "string"
    },
    "label": {
      "enum": [
        "cooked",
        "cbe",
        "fresh",
        "country"
      ],
      "type": "string"
    },
    "guests": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1,
      "description": "Number of guests"
    },
    "appetite": {
      "enum": [
        "dinner",
        "leftovers"
      ],
      "type": "string"
    },
    "store_wrapped": {
      "type": "boolean",
      "description": "Fully cooked ham repackaged at the store or deli (reheat to 165°F, not 140°F)"
    }
  }
}
ham_calculator annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
prime_rib_calculator — Prime rib calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

How big a prime rib (standing rib roast) to buy for a guest count, roasting time, the pull temperature for the doneness you want, and the rest. Classic 350°F roast or reverse sear.

prime_rib_calculator input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "guests"
  ],
  "properties": {
    "bone": {
      "enum": [
        "bone-in",
        "boneless"
      ],
      "type": "string"
    },
    "guests": {
      "type": "integer",
      "maximum": 60,
      "minimum": 1,
      "description": "Number of guests"
    },
    "method": {
      "enum": [
        "classic",
        "reverse-sear"
      ],
      "type": "string"
    },
    "appetite": {
      "enum": [
        "light",
        "standard"
      ],
      "type": "string",
      "description": "light = plenty else on the table"
    },
    "doneness": {
      "enum": [
        "rare",
        "medium-rare",
        "medium",
        "usda",
        "medium-well",
        "well"
      ],
      "type": "string"
    },
    "leftovers": {
      "type": "boolean"
    }
  }
}
prime_rib_calculator annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
thanksgiving_timeline — Thanksgiving timeline planner
Advertised by the server during the last successful anonymous check.
Advertised read-only

A Thanksgiving cooking schedule worked back from the dinner time: what to do on each day before (thawing, make-ahead dishes), when the turkey goes in and comes out, which oven each side dish goes in and when, and any dish that does not fit the ovens, with fixes. Turkey times are USDA FSIS's; dish times are each recipe's own. Every setting is optional.

thanksgiving_timeline input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "date": {
      "type": "string",
      "maxLength": 10,
      "description": "Dinner date YYYY-MM-DD (default: the next US Thanksgiving)"
    },
    "thaw": {
      "enum": [
        "fridge",
        "water",
        "fresh"
      ],
      "type": "string",
      "description": "fridge (default), cold water, or fresh = no thawing"
    },
    "dishes": {
      "type": "array",
      "items": {
        "enum": [
          "mashed",
          "gravy",
          "stuffing",
          "green-beans",
          "sweet-potato",
          "scalloped",
          "mac",
          "sprouts",
          "rolls",
          "cranberry",
          "pumpkin-pie",
          "pecan-pie"
        ],
        "type": "string"
      },
      "maxItems": 12,
      "description": "Dishes on the menu (default: mashed, gravy, stuffing, green-beans, rolls, cranberry, pumpkin-pie, pecan-pie). mashed = Mashed potatoes, gravy = Turkey gravy, stuffing = Stuffing, baked in a dish, green-beans = Green bean casserole, sweet-potato = Sweet potato casserole, scalloped = Scalloped potatoes, mac = Baked mac and cheese, sprouts = Roasted Brussels sprouts, rolls = Dinner rolls, cranberry = Cranberry sauce, pumpkin-pie = Pumpkin pie, pecan-pie = Pecan pie"
    },
    "kitchen": {
      "enum": [
        "one",
        "countertop",
        "two"
      ],
      "type": "string",
      "description": "one oven (default), one oven plus a countertop oven, or two ovens"
    },
    "stuffed": {
      "type": "boolean",
      "description": "Roasting with stuffing inside the bird"
    },
    "turkey_lb": {
      "type": "number",
      "maximum": 24,
      "minimum": 4,
      "description": "Turkey weight in pounds, 4 to 24 (default 16; kg × 2.2)"
    },
    "dinner_time": {
      "type": "string",
      "maxLength": 5,
      "description": "24-hour HH:MM the food is on the table (default \"16:00\")"
    },
    "dish_beside_turkey": {
      "type": "boolean",
      "description": "A side dish fits on a rack beside the turkey"
    }
  }
}
thanksgiving_timeline annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
knife_cut_size — Knife cut sizes
Advertised by the server during the last successful anonymous check.
Advertised read-only

The size and method of a classic knife cut (julienne, brunoise, batonnet, small dice, chiffonade, paysanne, tourné, mirepoix and more), in inches and millimetres. Without a cut, lists every cut with its size.

knife_cut_size input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "cut": {
      "type": "string",
      "maxLength": 60,
      "description": "e.g. \"brunoise\", \"allumette\""
    }
  }
}
knife_cut_size annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plate_color_pairing — Plate colour pairing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Which plate colour flatters a dish and which makes it disappear, by the food's dominant colour; or which foods a plate you own suits. Call with neither to see the colour families and plates.

plate_color_pairing input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "plate": {
      "enum": [
        "white",
        "white-rim",
        "cream-rings",
        "black",
        "speckled",
        "fog-speckle",
        "slate",
        "navy",
        "sage",
        "blush",
        "terracotta",
        "white-bowl",
        "slate-board"
      ],
      "type": "string"
    },
    "food_color": {
      "enum": [
        "golden",
        "darkbrown",
        "red",
        "orange",
        "green",
        "pale",
        "purple",
        "multi"
      ],
      "type": "string"
    }
  }
}
plate_color_pairing annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 2 of 2 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1356 ms
95th percentile latency
1356 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1356 ms · metadata changed · 13 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http plate-artists-mcp https://plateartists.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add plate-artists-mcp --url https://plateartists.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable plate-artists-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "plate-artists-mcp": {
      "url": "https://plateartists.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "plate-artists-mcp": {
      "type": "streamableHttp",
      "url": "https://plateartists.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start plate-artists-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "plate-artists-mcp": {
      "type": "http",
      "url": "https://plateartists.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http plate-artists-mcp https://plateartists.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://plateartists.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "plate-artists-mcp": {
      "serverUrl": "https://plateartists.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Plate Artists MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Plate Artists MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing