NYT Cooking MCP
This server lets an AI assistant interact with New York Times Cooking to search, retrieve, and manage recipes.
Search recipes (
search_recipes): Find recipes using natural-language queries (e.g., "chicken parmesan") and get back results with recipe IDs, names, URLs, and authors — no login needed.Get full recipe details (
get_recipe): Fetch complete information for a specific recipe by its numeric ID, including ingredients, step-by-step instructions, cook time, servings, rating, and description — no login needed.List saved recipes (
list_saved_recipes): Browse your personal NYT Cooking recipe box with pagination support — requires authentication.Login (
login): Store your NYT Cooking session credentials (NYT-S cookie and user ID) server-side; credentials are verified with a live request before being saved.Logout (
logout): Delete stored NYT Cooking credentials from the server.Check auth status (
auth_status): Verify whether valid credentials are currently configured without revealing their values — useful for diagnosing authentication issues.
Provides tools to search recipes, get full recipe details, and browse saved recipes from New York Times Cooking.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NYT Cooking MCPsearch for chocolate chip cookies"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NYT Cooking MCP
An MCP server that lets an AI assistant (Claude, etc.) search New York Times Cooking, fetch full recipes, and browse your saved recipe box.
NYT Cooking has no official public API, so this reads the same JSON endpoints the website itself uses. The recipe paywall is enforced client-side, so searching and reading full recipes needs no login at all — only your personal saved recipe box requires a session cookie.
Tools
Tool | Auth needed | Description |
| no | Search recipes by natural-language query. |
| no | Full recipe: ingredients, steps, time, rating. |
| yes | Your saved recipe box. |
| — | Store credentials server-side and verify them. |
| — | Delete the stored credentials. |
| — | Check whether credentials are configured. |
Related MCP server: Mealie MCP Server
Install & run
Requires Python 3.10+. With uv:
git clone https://github.com/bramboe/nyt-cooking-mcp
cd nyt-cooking-mcp
uv run nyt-cooking-mcp # stdio (default)
uv run nyt-cooking-mcp --transport streamable-http --port 3001Or with pipx / pip:
pipx install git+https://github.com/bramboe/nyt-cooking-mcp
nyt-cooking-mcpUse with Claude Desktop / Claude Code
Add to your MCP config (claude_desktop_config.json, or via claude mcp add):
{
"mcpServers": {
"nyt-cooking": {
"command": "uv",
"args": ["run", "--directory", "/path/to/nyt-cooking-mcp", "nyt-cooking-mcp"]
}
}
}Then ask: "search NYT Cooking for marry me chicken" or "get NYT recipe 1024503".
Saved recipes (optional login)
list_saved_recipes is the only tool that needs your account. NYT Cooking has
no OAuth, so credentials are harvested once from your logged-in browser and
persisted server-side (like a session token). Call the login tool with:
nyt_s_cookie— value of theNYT-Scookie oncooking.nytimes.com(DevTools → Application → Cookies).user_id— theregi_idvalue inside theregi_cookie.
login verifies the cookie with a live request and writes it to the
credentials file (--credentials-file, default
~/.config/nyt-cooking-mcp/credentials.json). Environment variables
NYT_S_COOKIE / NYT_USER_ID override the stored file. The NYT-S cookie is
long-lived; when calls start returning auth_required, run login again.
Self-hosting as an always-on service
Run it as a systemd service over streamable-HTTP so it is always available:
# /etc/systemd/system/nyt-cooking-mcp.service
[Unit]
Description=NYT Cooking MCP Server
After=network.target
[Service]
User=nyt-cooking
ExecStart=/opt/nyt-cooking-mcp/.venv/bin/nyt-cooking-mcp \
--transport streamable-http --host 0.0.0.0 --port 3001 \
--credentials-file /var/lib/nyt-cooking-mcp/credentials.json
# Permit LAN access while keeping DNS-rebinding protection on (localhost always allowed):
Environment=NYT_MCP_ALLOWED_HOSTS=your.server.ip:*
Restart=on-failure
[Install]
WantedBy=multi-user.targetThe HTTP endpoint is then http://your.server:3001/mcp. Put a reverse proxy
(TLS) and an auth token in front before exposing it beyond your trusted network.
Disclaimer
For personal use. This is an unofficial tool not affiliated with The New York Times; respect NYT Cooking's Terms of Service and use your own account.
Support
If this project is useful to you, consider buying me a coffee ☕
License
MIT — see LICENSE.
Available Tools
6 toolsauth_statusA
Report whether NYT credentials (session cookie and user id) are configured.
Does not reveal the values. Useful for diagnosing auth_required errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool reports whether credentials are configured without revealing values, indicating it is a safe read-only operation. No behavioral contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences convey the entire purpose and a key use case with no redundant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and the existence of an output schema (not shown), the description sufficiently covers what the tool does and its utility. It could hint at the output format, but the output schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so schema coverage is 100% trivially. The description does not need to add parameter details; it is adequate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports whether NYT credentials are configured, which is a specific verb and resource. It distinguishes itself from sibling tools like login, logout, and recipe-related tools by focusing on auth status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is useful for diagnosing auth_required errors, providing a clear use case. However, it does not mention when not to use it or provide explicit alternatives, though siblings implicitly cover related actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recipeA
Fetch full details for a single NYT Cooking recipe by its numeric id.
Args: recipe_id: The recipe id, e.g. "1019049" (from a search result or URL).
Returns name, author, time, servings, rating, description, ingredients and step-by-step instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lists all return fields (name, author, time, etc.) and notes id format. No annotations, but description adequately discloses output contents. Lacks mention of error handling or authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded main sentence, uses structured Args section. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Single parameter, output schema exists, siblings cover other actions. Description covers what, how, and what is returned completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has only title and type for recipe_id; description adds example ('1019049') and source ('from a search result or URL'), fully compensating for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Fetch full details for a single NYT Cooking recipe by its numeric id', with specific verb and resource. Distinguishes from sibling search_recipes which likely returns list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after obtaining a recipe_id from search or URL. Mentions the id origin. Could be more explicit about when not to use, but sufficient for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_saved_recipesA
List recipes saved in the user's NYT Cooking recipe box.
Requires a configured user id and a valid session cookie (see login).
Args: page: 1-indexed page number. per_page: Number of results per page (default 48).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided so description carries full burden. Discloses authentication requirement but omits behavioral aspects like read-only nature, rate limits, or pagination limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences; purpose line is clear, followed by prerequisites and parameter explanations. Efficient without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites and parameter semantics. Output schema exists so return value not needed. Sufficient for a list tool with two parameters, though could note the object shape briefly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description is the sole source. Explains page as 1-indexed and per_page default 48, adding meaningful detail beyond the schema's defaults and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists saved recipes from the user's recipe box. The verb 'list' and resource 'saved recipes' are specific, but it doesn't explicitly distinguish from search_recipes, though the context makes it clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions prerequisites (user id and session cookie) and references the login tool. Does not contrast with alternatives like search_recipes, but provides actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
Store your NYT Cooking credentials so the server stays logged in.
NYT Cooking has no OAuth, so credentials are harvested once from your logged-in browser and persisted server-side (like a session token):
nyt_s_cookie: value of the
NYT-Scookie on cooking.nytimes.com (DevTools -> Application -> Cookies).user_id: the
regi_idvalue inside theregi_cookie(needed only for list_saved_recipes).
The credentials are written to the server's credentials file and verified with a live request before returning.
| Name | Required | Description | Default |
|---|---|---|---|
| nyt_s_cookie | Yes | ||
| user_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: credentials are harvested once, persisted server-side like a session token, and verified with a live request before returning. This is exceptional transparency for a login tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a short opening sentence stating the purpose, followed by a paragraph explaining the rationale and a bullet-like list for each parameter. Every sentence adds value without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that no annotations are present and schema coverage is 0%, the description does a good job covering the login process. It explains parameter usage, persistence, and verification. However, it does not mention the tool's return value (though an output schema exists) or error scenarios, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries full burden. It explains the meaning and source of nyt_s_cookie (NYT-S cookie value) and user_id (regi_id from regi_cookie), and clarifies that user_id is optional and only needed for list_saved_recipes. This adds essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: storing NYT Cooking credentials to keep the server logged in. It distinguishes from siblings like login-related tools by focusing on credential storage and verification, not authentication status or logout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to obtain the parameters (NYT-S cookie and user_id) and notes that user_id is only needed for list_saved_recipes. However, it does not explicitly state when to use this tool versus alternatives like auth_status or logout, though the context implies it is the first step after obtaining cookies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutA
Delete the stored NYT Cooking credentials from the server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It mentions deletion of credentials, implying a destructive action, but does not disclose prerequisites (e.g., must be logged in) or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is appropriately front-loaded but could benefit from a slightly more structured format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with zero parameters and a simple action, the description is complete enough. It covers the core functionality, though it could mention return values or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4. The description does not need to add parameter info, and the schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete stored credentials) and the resource (NYT Cooking credentials). It distinguishes from siblings like login and auth_status by indicating it removes stored data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. However, given the simplicity and zero parameters, the context is implied, but it lacks when-not or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_recipesA
Search NYT Cooking for recipes matching a natural-language query.
Args: query: Search terms, e.g. "chicken parmesan" or "vegetarian chili".
Returns a list of results with id, name, url and author. Use the id with get_recipe to fetch full ingredients and steps.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears full responsibility. It explains the return structure (id, name, url, author) and suggests using the id with get_recipe. However, it does not disclose authentication needs, rate limits, or whether the search is read-only, which leaves some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a clear structure: purpose, parameter explanation, and return value usage. Every sentence is meaningful with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (single parameter, no annotations), the description covers the core workflow: search, obtain id, then use get_recipe for details. It could mention constraints like result limits or login requirement, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds crucial meaning: it clarifies that the query is natural-language and provides examples (e.g., 'chicken parmesan'). This goes beyond the schema's simply 'string' type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'NYT Cooking for recipes', with additional detail about natural-language query. It distinguishes from siblings like get_recipe and list_saved_recipes by implying that this tool performs searches based on query text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides query examples and explicitly ties to get_recipe for fetching full details, guiding the agent on when to use this tool vs. sibling. However, it does not mention when not to use this tool or alternatives like list_saved_recipes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
auth_status - First observed
get_recipe - First observed
list_saved_recipes - First observed
login - First observed
logout - First observed
search_recipes
TDQS
Each tool has a distinct purpose: authentication status, login/logout, search, recipe retrieval, and saved recipes listing. No two tools perform overlapping functions.
All tools use consistent snake_case naming (e.g., search_recipes, get_recipe, list_saved_recipes), following a clear verb_noun pattern.
Six tools cover the essential operations for a recipe service (auth, search, read, list saved) without unnecessary bloat. The count is appropriate for the domain.
Core workflows are covered: login, search, get recipe, list saved recipes, and logout. However, there is no tool to save a recipe or manage the saved list (e.g., remove), which are minor gaps for a complete lifecycle.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search, save, organize, cook, and share recipes with any AI assistant.
Scraps Kitchen gives any AI agent a persistent, household-aware kitchen memory. Unlike generic chatbot recall, Scraps maintains structured cooking data: what's in your fridge (with freshness tracking), who you cook for (with allergens, dietary restrictions, and preferences), your recipe collection (with cook notes and per-diner ratings), your shopping list, and your kitchen equipment. 27 tools across 6 domains let agents read kitchen context, suggest meals that respect dietary safety, update the pantry after cooking, and build a history of what works for your household. Every interaction makes the data richer. Cooking history, preference signals, kitchen awareness = better suggestions next time. All tools work via oAuth and a free scraps.kitchen account.
- SpoonjoyOAuthapp.spoonjoy
Your personal recipe kitchen: save, fork, and cook recipes, build cookbooks, and shopping lists.
Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to search, read, and update recipes in Paprika Recipe Manager, allowing natural language interaction with your recipe collection including ingredients, directions, and metadata.44MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Mealie recipe databases, allowing users to manage and query their recipes through natural language conversations.27MIT
- AlicenseNot gradedqualityCmaintenanceHousehold-aware kitchen brain for AI agents: manage pantry inventory with freshness tracking, shopping lists, recipe collections with cook notes and per-diner ratings, dietary profiles with allergen safety, and kitchen equipment — all through 27 tools with OAuth 2.1 authentication. Includes a free tool for ingredient-based recipe generation without an account (accounts are free!).MIT
- AlicenseBqualityCmaintenanceEnables AI assistants to search for recipes, get nutritional information, find ingredients, and more through the Spoonacular Food API using natural language.6145ISC
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bramboe/nyt-cooking-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server