Food Near Me

me.foodnearPublished by foodnear.meOfficial publisherv1.1.0Updated Nov 2, 2026

AI-native restaurant discovery: verified/menu-indexed/discovered tiers + signed allergy-safety data.

VerifiedStreamable HTTPWeb executableLocation & LifestyleKnowledge & Memory

Overview

AI-generated overview

Remote MCP server for AI-native restaurant discovery: geo search across trust tiers, Menu Protocol menus, dietary comparison and signed allergy-safety data.

What you can do
  • Search restaurants by coordinates across verified, menu-indexed and discovered tiers, and read a restaurant profile.
  • Fetch full Menu Protocol menus with dietary flags and allergens, and validate a menu payload before publishing.
  • Explore a neighborhood for a diet, compare two to five restaurants by dietary-eligible items, and find places along a route.
  • Retrieve signed allergy-safety attestations and a short curated list of safe places for an allergy need.
  • Read bundled resources (Menu Protocol spec, OpenAPI pointer, agent skill, example flow) and use three guided prompts.
When to use it
Useful when an assistant should recommend places to eat near a location, filter by cuisine or dietary needs, show menus, or answer allergy-safety questions with explicit trust tiers. Best suited to hosts that can reach a remote HTTP MCP endpoint.
Requirements
A remote MCP endpoint at foodnear.me/mcp over HTTP JSON-RPC; the README suggests bridging it with npx mcp-remote for hosts such as Cursor or Claude Desktop, which needs Node.js. No API key during beta, but rate limits apply. Coverage is concentrated in seeded US metros.
Before you install
No authentication is required in beta, so requests are unauthenticated and rate-limited; future paid tiers may use API keys or crypto payment. Menu data varies in trust: only verified menus are authoritative for dietary and allergen claims, and discovered places should not be cited for menu items. Allergy-safety statements may be unknown and advisory when a place is uncurated.

Installation

In SourceWeft

  1. Open Food Near Me 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/me.foodnear%2Ffoodnear-me/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": {
    "food-near-me": {
      "type": "http",
      "url": "https://foodnear.me/mcp"
    }
  }
}

README

Food Near Me — MCP Server

Model Context Protocol server for AI-native restaurant discovery — three-tier search (verified → menu_indexed → discovered), Menu Protocol menus, and structured menu validation. Plug into Claude Desktop, Cursor, ChatGPT, or any MCP host in about 30 seconds.

[MCP Registry]

Production endpoint: https://foodnear.me/mcp · 8 tools · 4 resources · 3 prompts · No API key (beta)


Quick start {#quick-start}

1. Add this to your MCP host config

Cursor — ~/.cursor/mcp.json (macOS/Linux) or %USERPROFILE%\.cursor\mcp.json (Windows)

Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), %APPDATA%\Claude\claude_desktop_config.json (Windows)

json
{  "mcpServers": {    "foodnear-me": {      "command": "npx",      "args": ["-y", "mcp-remote", "https://foodnear.me/mcp"]    }  }}

2. Restart your MCP host

3. Try a prompt

“Find vegan Thai restaurants near Brooklyn Bridge and show me a menu for the top result.”

Your agent should call search_restaurants → get_menu (or get_restaurant first).


What you get

Tools (8)

ToolDescription
search_restaurantsThree-tier geo search by lat/lng — verified → menu_indexed → discovered; check menu_available before get_menu
get_restaurantRestaurant profile with Schema.org JSON-LD + Menu Protocol extensions
get_menuFull Menu Protocol v1.0 menu (dietary flags, allergens, signatures)
get_ado_score_breakdownADO score factors and improvement recommendations
validate_menu_protocolValidate a Menu Protocol JSON payload before publish
explore_area_for_dietComposite: bucketed neighborhood overview (verified / menu_indexed / discovered); optional dietary filter narrows the verified tier only
compare_restaurants_for_dietComposite: compare 2–5 known restaurants by dietary-eligible menu items and trust tier ranking
find_restaurants_along_routeComposite: route-adjacent restaurant discovery between origin/destination with optional dietary ranking
get_safety_attestationSigned (Ed25519, fnm-safety-v1) allergy-safety tier statement for one restaurant; unknown + advisory when uncurated
find_safe_places_near_meThe pack: at most 3 human-curated places for an allergy need, each with curator_checked_at; left_out cut line; explicit empty_state

Resources (4)

URIContent
foodnearme://spec/menu-protocolMenu Protocol v1.0 specification
foodnearme://spec/openapiOpenAPI 3.1 spec pointer
foodnearme://agent/skillAgent skill summary
foodnearme://examples/search-flowExample search → menu flow

Prompts (3)

PromptArgsGuides agent to
find_dinner_near_melocation (required), cuisine?, dietary?search_restaurants → get_menu
dietary_constrained_menurestaurant_id, restrictionsget_menu with explicit MP flags/allergens
validate_my_menustrict? (true for strict mode)validate_menu_protocol

Configuration

SettingValue
MCP URLhttps://foodnear.me/mcp
TransportHTTP JSON-RPC (POST); discovery via GET /mcp
AuthNone during beta (rate limits apply)
Registryme.foodnear/foodnear-me (official MCP Registry)

Preview / local: Replace the URL with http://localhost:3000/mcp when running npm run dev in apps/web.

Operational tool filter: set FNM_MCP_ENABLED_TOOLS=search_restaurants,get_menu to expose only a comma-separated subset in tools/list and GET /mcp. Leave unset or * to expose all tools. This is for temporary degradation/context control, not privacy or auth.


Architecture

┌─────────────────────┐     POST /mcp (JSON-RPC)     ┌─────────────────────────┐│  MCP host           │ ────────────────────────────▶│  apps/web/app/mcp       ││  (Cursor / Claude)  │     GET /mcp (discovery)     │  Next.js route handler  │└─────────────────────┘                              └────────────┬────────────┘                                                                │                                                                ▼                                                   ┌─────────────────────────┐                                                   │  Supabase + PostGIS     │                                                   │  Menu Protocol (MP)     │                                                   └─────────────────────────┘

Implementation: apps/web/app/mcp/route.ts · Flow runner: apps/web/lib/mcp/mcp-flow-runner.ts


Tool error contract

Failed tools/call responses include structured metadata in _meta.error:

FieldMeaning
codeVALIDATION_ERROR · NOT_FOUND · UPSTREAM · RATE_LIMITED · UNKNOWN
messageWhat went wrong
hintHow to fix the request
retryableWhether the agent should retry
docshttps://foodnear.me/docs#quick-start

Human-readable text is still in content[0].text for hosts that ignore _meta.


Verify

From repo root (with apps/web dev server running for localhost):

bash
# Automated agent flows (14 flows when Supabase + seed configured; 11 without DB)npm run test:mcp-flows
# Against productionnpm run test:mcp-flows:http
# Discovery GETs + MCP tools/list countnpm run smoke:mcp
# Three-tier trust model copy parity (local files)npm run check:discovery-copy
# Full deploy gate (13 checks + discovery copy on production URL)npm run preflight -w web# or: ./apps/web/scripts/deploy-preflight.sh https://foodnear.me

Production monitoring: GitHub Actions workflow MCP Production Smoke runs smoke:mcp daily and on manual dispatch (.github/workflows/mcp-smoke.yml).


Agent discovery

Scripted flows: apps/web/docs/example-agent-flows.md


Data trust model (three-tier search)

  • search_restaurants returns verified → menu_indexed → discovered.
  • Every result includes verification_status and menu_available. Call get_menu only when menu_available is true.
  • Verified — owner-approved MP; authoritative for dietary/allergen claims.
  • menu_indexed — automated/public MP menu; cite with caveat — not owner-verified.
  • discovered — place only; do not cite menu items.
  • Trust progression: discovered → menu_indexed → verified. See https://foodnear.me/attribution for data sources.

FAQ

Do I need an API key?
No for beta MCP access. Future paid tiers may use API keys or x402 (USDC on Base). See x402-prepaid-spec.md in your local docs/Food Near Me playbook.

Tools not showing after restart?
Confirm the config URL ends with /mcp. Restart the host completely. Run npm run smoke:mcp against your target base URL.

Empty search results?
Beta verified menus are seeded for specific metros (e.g. Williamsburg, NYC). 7 menu_indexed restaurants in Williamsburg have automated menus from website ingest. Discovered place listings cover many US metros — use coordinates in an imported region. Demo coords: 40.7128, -74.006. Run npm run db:seed -w web locally for verified test data.

Cursor vs Claude config path?
See Quick start above — each host uses a different JSON file; only the mcpServers block matters.

How is this different from DoorDash / Uber Eats APIs?
We expose owner-verified Menu Protocol data for agents — not scraped aggregator menus or ordering checkout.


Monorepo layout

This repository ships the MCP server inside the foodnear.me web app:

PathPurpose
apps/webNext.js app — MCP at /mcp, landing, API routes
packages/menu-protocolMenu Protocol schema + validators
databaseMigrations, seeds, schema
server.jsonOfficial MCP Registry metadata

Business strategy and runbooks live in a separate local docs folder (not in this repo) — see your team's docs/Food Near Me playbook.


Development

bash
npm installcd apps/web && cp .env.example .env.local   # Supabase keysnpm run dev                                 # http://localhost:3000npm run test:mcp-flows                      # POST localhost:3000/mcp

Operator: menu_indexed website ingest

Promote discovered → menu_indexed via free website/ordering-platform parsers (ChowNow API, order.online, Sauce, Squarespace, BentoBox, Toast, Playwright). Always dry-run first — headless is slow.

bash
cd apps/webnpm run db:probe:menu-batch -- --headless --limit=10npm run db:import:menu-indexed:website:headless:dry-run -- --limit=10npm run db:import:menu-indexed:website:headless -- --limit=10   # live

No Uber Eats / DoorDash / Grubhub / RapidAPI scrapers. See apps/web/docs/example-agent-flows.md.


Links

Source: README.md at commit 7c5156a

Tools

0
SourceWeft has not read this server's tools yet.

Version history

1
  1. v1.1.0LatestSep 16, 2026

Score

75% 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

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.