NYCfoodie

io.github.tireniajilore由 GitHub 账号 tireniajilore 发布v1.0.0更新于 Oct 24, 2026

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

已验证Streamable HTTP可网页运行位置与生活网页搜索与抓取

概览

AI 生成的概览

一个托管型 MCP 服务器,让助手获取纽约餐厅的精选编辑推荐:搜索、详情、对比、榜单与评分。

可以做什么
按自由文本、菜系、街区、场合或价位搜索餐厅,可选按地点附近筛选;也可按菜系、街区和价位筛选出评分最高的餐厅。获取单家餐厅的完整信息:评分、价位、地址、订位链接、订位提示、评论摘要、标签及其收录的榜单。对 2 至 5 家指定餐厅按评分、价位、标签和评论摘要进行横向对比。按主题查找精选编辑榜单,含排名条目与简介;并按被多少个榜单收录对餐厅排名。根据菜系、场合、街区标签、价位接近度和榜单共现找出与指定餐厅相似的餐厅。记录 1 至 5 分的反馈及可选评论。
适用场景
适合在对话助手中获取纽约餐饮推荐:描述想吃的菜或用餐场合、在几家指定餐厅间做选择、索取编辑精选榜单或最稳妥的选择,或寻找某家喜欢餐厅的替代选项。对于支持远程 MCP 服务器的客户端,它是无需安装的托管方案。
运行要求
需要远程 Streamable HTTP 端点;未声明认证、安装或 API 密钥。README 给出托管地址以及 Cursor、Claude Code、Claude 应用等 MCP 客户端的配置方式。需要能访问该托管服务的网络。
安装前请注意
submit_feedback 工具每次调用都会写入一条新的反馈记录,评论和评分会存储在服务器端,请避免包含个人或敏感信息。推荐内容来自第三方编辑来源,可能不完整或已过时。README 说明当前 MVP 城市为纽约。

安装

在 SourceWeft 中

  1. 打开 控制台中的 NYCfoodie,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.tireniajilore%2Fnycfoodie/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "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.

来源:README.md,提交 c1c92f4

工具

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.

输入参数latlngcity必填sortlimitquerycuisineoccasionradius_kmmin_ratingprice_tierneighborhood另有 1 个

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.

输入参数idcity必填nameinclude_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.

输入参数idscity必填restaurants

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.

输入参数city必填limitqueryinclude_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.

输入参数idcity必填namelimit

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.

输入参数city必填limittheme

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.

输入参数latlngcity必填limitcuisineoccasionradius_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.

输入参数toolratingcomment

版本历史

1
  1. v1.0.0最新Sep 20, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。