Food Near Me — MCP Server

MCP serverDev tools

Your AI can find restaurants nearby and answer questions about what they serve, including allergy-safety details that come signed. Restaurant information is organized into tiers, so your AI can tell verified listings apart from menu-indexed ones and general discoveries.

Use Food Near Me — MCP Server in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Food Near Me — MCP Server and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use Food Near Me to search restaurants

Details

Available today. Use it from your connected AI after setup.

After adding it, ask your AI to find food near you or look up allergy details for a restaurant you have in mind. Setup and documentation are in the food-near-me platform repository on GitHub.

Food Near Me — MCP ServerStart free

What your AI can do with it

  • Find restaurants near you
  • Look up menu details for a restaurant
  • Check signed allergy-safety information before recommending a place
  • Distinguish verified restaurants from menu-indexed and discovered results

Install Food Near Me — MCP Server

The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.

  • Claude Code

    claude mcp add --transport http --scope user food-near-me-mcp-server 'https://foodnear.me/mcp'

    Run it once in your project, then open /mcp to approve any sign-in the server asks for.

  • Claude Desktop

    https://foodnear.me/mcp

    Add a custom connector in Settings, paste this address, and approve the sign-in.

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=food-near-me-mcp-server&config=eyJ1cmwiOiJodHRwczovL2Zvb2RuZWFyLm1lL21jcCJ9

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://foodnear.me/mcp

    In Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.

  • Codex

    codex mcp add food-near-me-mcp-server --url 'https://foodnear.me/mcp'

    Run it once, then sign in with codex mcp login food-near-me-mcp-server if the server asks for an account.

From the project's README

As published by food-near-me/platform in README.md.

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.

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)

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

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):

# Automated agent flows (14 flows when Supabase + seed configured; 11 without DB)
npm run test:mcp-flows

# Against production
npm run test:mcp-flows:http

# Discovery GETs + MCP tools/list count
npm 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

FileURL
llms.txthttps://foodnear.me/llms.txt
llms-full.txthttps://foodnear.me/llms-full.txt
MCP manifesthttps://foodnear.me/.well-known/mcp-server.json
AgentRoothttps://foodnear.me/.well-known/agentroot.json
Skill filehttps://foodnear.me/SKILL.md
OpenAPIhttps://foodnear.me/openapi.json
Web quick referencehttps://foodnear.me/docs

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

npm install
cd apps/web && cp .env.example .env.local   # Supabase keys
npm run dev                                 # http://localhost:3000
npm 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.

cd apps/web
npm run db:probe:menu-batch -- --headless --limit=10
npm run db:import:menu-indexed:website:headless:dry-run -- --limit=10
npm 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

Tools it offers (9)

What this server listed when Ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.

  • search_restaurants
  • get_restaurant
  • get_menu
  • get_ado_score_breakdown
  • get_safety_attestation
  • validate_menu_protocol
  • explore_area_for_diet
  • compare_restaurants_for_diet
  • find_restaurants_along_route

Signals

Last commit
Sep 2026
Advanced
Delivery
foodnear-me MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
me-foodnear-foodnear-me
Source
github.com/food-near-me/platform
Hosted endpoint
https://foodnear.me/mcp