NYCfoodie

io.github.tireniajilorePublished by GitHub account tireniajilorev1.0.0Updated Oct 24, 2026

Editorial NYC restaurant recommendations for AI agents: search, compare, guides, ratings.

VerifiedStreamable HTTPWeb executableLocation & LifestyleWeb Search & Scraping

Overview

AI-generated overview

A hosted MCP server that gives an assistant curated editorial New York restaurant recommendations: search, details, comparisons, guides and ratings.

What you can do
Search restaurants by free text, cuisine, neighbourhood, occasion or price, optionally near a point, and list top-rated places with filters for cuisine, neighbourhood and price tier. Retrieve one restaurant's full profile: rating, price tier, address, reservation link, booking intel, review summary, tags and the guides it appears in. Compare two to five named restaurants head-to-head on rating, price, tags and review summary. Find curated editorial guides by theme, with ranked entries and blurbs, and rank restaurants by how many guides feature them. Find restaurants similar to a named one by shared cuisine, occasion and neighbourhood tags, price proximity and guide co-occurrence. Record 1–5,
When to use it
Useful when someone wants New York dining recommendations in a conversational assistant: describing a craving or occasion, choosing between named places, asking for editorial best-of lists or safest bets, or looking for alternatives to a favourite. It is a hosted, no-install option for clients that support remote MCP servers.
Requirements
A remote Streamable HTTP endpoint; no authentication, installation or API key is declared. The README lists the hosted URL and setup snippets for Cursor, Claude Code, Claude app and other MCP clients. Network access to the hosted service is required.
Before you install
The submit_feedback tool writes a new feedback entry on every call, so comments and ratings are stored server-side; avoid including personal or sensitive details. Recommendations come from third-party editorial sources and may be incomplete or out of date. The README notes the MVP city is New York.

Installation

In SourceWeft

  1. Open NYCfoodie in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.tireniajilore%2Fnycfoodie/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "nycfoodie": {
      "type": "http",
      "url": "https://nycfoodie-production.up.railway.app/mcp"
    }
  }
}

README

NYCfoodie

[NYCfoodie MCP connector – tool definition quality and endpoint health on Glama]

The data layer for restaurant taste: structured, editorial restaurant recommendations served to AI agents over MCP. Not another review scraper — curated guides and reviews normalised into one schema, queryable by tools.

MVP city: New York. The city is a parameter everywhere; nothing NYC-specific is hardcoded.

Use it

Hosted endpoint (Streamable HTTP): https://nycfoodie-production.up.railway.app/mcp

  • Cursor — one-click install
  • Claude Code — claude mcp add --transport http nycfoodie https://nycfoodie-production.up.railway.app/mcp
  • Windsurf / Cline / Roo Code / Zed / VS Code — add to your MCP config:
json
{  "mcpServers": {    "nycfoodie": {      "url": "https://nycfoodie-production.up.railway.app/mcp"    }  }}
  • Claude (app) — Settings → Connectors → Add custom connector → paste the URL.
  • Any MCP client — add the URL above as a remote server (Streamable HTTP). No auth, no install.

Tools

search_restaurants · get_restaurant · compare_restaurants · find_guides · find_similar · guide_consensus · top_rated · submit_feedback

Layout

  • db/ — SQLite storage (better-sqlite3) with numbered SQL migrations written in Postgres-compatible DDL. The migration runner is dialect-agnostic by convention, so a Postgres adapter can replace better-sqlite3 later without touching the migrations.
  • crawler/ — source adapters (starting with The Infatuation) that normalise into the db schema. Endpoint/field mapping: docs/infatuation-data-surface.md (step 2).
  • mcp/ — stdio MCP server (@modelcontextprotocol/sdk) exposing search, detail, comparison and guide tools.

Quickstart

bash
npm installnpm run typechecknpm run buildnode db/dist/migrate.js ./nycfoodie.db   # creates/opens the SQLite db, applies migrationsnode mcp/dist/index.js                   # starts the MCP server on stdio

Roadmap

  1. Scaffold (done) — repo, packages, migration runner, stub MCP tools.
  2. Map The Infatuation's data surface — Next.js pages + GraphQL endpoints → docs/infatuation-data-surface.md.
  3. Database schema proposal — shown for approval before any crawler code is written.
  4. Crawler — only after schema sign-off.

Conventions

  • British English in docs and user-facing text.
  • Migrations: numbered NNN_name.sql, applied once in order; see db/migrations/README.md for the Postgres-compatibility rules.
  • Never commit *.db files or credentials.

Source: README.md at commit c1c92f4

Tools

8

search_restaurants

Search restaurants by free text, cuisine, neighbourhood, occasion or price, optionally near a point. Use when the user describes what they want (e.g. 'Italian date night in the West Village', 'ramen near me') rather than naming a specific restaurant. Free text matches names, tags, review prose and guide blurbs (e.g. 'cacio e pepe'). Returns compact matches with Infatuation rating (0–10), price tier, address_line and tags. Cards carry guide_appearance_count (a number); get_restaurant's guide_appearances is the full entry list. Known-closed venues are excluded by default. Coverage for city='new-york' is the five boroughs plus the immediate metro (within 30 km of Manhattan). With no query or filters, returns the highest-rated venues.

Parameterslatlngcityrequiredsortlimitquerycuisineoccasionradius_kmmin_ratingprice_tierneighborhood+1 more

get_restaurant

Get the full picture for one restaurant in one call: Infatuation rating (0–10), price tier, address, reservation link, booking intel, review summary, tags and every guide it appears in. Use when the user names a specific restaurant. editorial_blurbs carries verbatim Eater guide excerpts (guide title, URL, position, blurb, captured_at) for any venue with Eater guide entries — Eater-only venues have no rating or price, only this prose plus tags. Full review prose is opt-in via include_prose (default: headline and summary only). review.headline is the source's actual headline when one exists, otherwise null — use review.summary for the descriptive text. match_type is 'exact' when the id or name matched verbatim, 'fuzzy' when it was resolved from a partial/typo'd name — never present a fuzzy match as the venue the user named without saying so. booking is null when the source has no booking intel (not the same as walk-in-only); a reservation link alone never implies a booking policy. data_as_of is the dataset vintage and crawled_at is when this venue was last crawled — caveat fast-decaying claims (closures especially) when these are old.

Parametersidcityrequirednameinclude_prose

compare_restaurants

Compare 2–5 named restaurants head-to-head as structured data (rating, price, tags, review summary). Use when the user asks to choose between specific places, e.g. 'should I go to X or Y?' or to compare four options on a budget.

Parametersidscityrequiredrestaurants

find_guides

Find curated editorial guides (ranked lists) matching a theme, e.g. 'best ramen'. Returns each guide with its ranked entries, blurbs and linked restaurants. Use when the user wants the editorial lists themselves rather than individual restaurant picks. Set include_entries=false to list guide titles and metadata without pulling every entry blurb.

Parameterscityrequiredlimitqueryinclude_entries

find_similar

Find restaurants similar to a named one, scored by shared cuisine, occasion and neighbourhood tags, price-tier proximity and guide co-occurrence. Use for 'like X' or 'alternatives to X' requests.

Parametersidcityrequirednamelimit

guide_consensus

Rank restaurants by how many distinct guides feature them, optionally filtered by theme. Use for 'where can't I go wrong' or safest-bet picks. Differs from find_guides: this returns ranked restaurants, not the guides themselves. Each row carries guide_appearance_count (a number); get_restaurant's guide_appearances is the full entry list.

Parameterscityrequiredlimittheme

top_rated

List the highest-rated restaurants (Infatuation 0–10 scale), with optional cuisine, neighbourhood and price filters. Use for 'best in the city' requests. Differs from search_restaurants: no free-text query, strictly rating-ordered.

Parameterslatlngcityrequiredlimitcuisineoccasionradius_kmmin_ratingprice_tierneighborhoodinclude_closed

submit_feedback

Record feedback on a tool result: a 1–5 rating, a comment, or both (at least one is required). Use after showing the user a recommendation to log what was good or wrong. Each call stores a new feedback entry; it changes nothing the user sees.

Parameterstoolratingcomment

Version history

1
  1. v1.0.0LatestSep 20, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.