AI-native restaurant discovery with verified Menu Protocol data.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Food Near Me.
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
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)
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)
β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).
| Tool | Description |
|---|---|
search_restaurants | Three-tier geo search by lat/lng β verified β menu_indexed β discovered; check menu_available before get_menu |
get_restaurant | Restaurant profile with Schema.org JSON-LD + Menu Protocol extensions |
get_menu | Full Menu Protocol v1.0 menu (dietary flags, allergens, signatures) |
get_ado_score_breakdown | ADO score factors and improvement recommendations |
validate_menu_protocol | Validate a Menu Protocol JSON payload before publish |
explore_area_for_diet | Composite: bucketed neighborhood overview (verified / menu_indexed / discovered); optional dietary filter narrows the verified tier only |
compare_restaurants_for_diet | Composite: compare 2β5 known restaurants by dietary-eligible menu items and trust tier ranking |
find_restaurants_along_route | Composite: route-adjacent restaurant discovery between origin/destination with optional dietary ranking |
| URI | Content |
|---|---|
foodnearme://spec/menu-protocol | Menu Protocol v1.0 specification |
foodnearme://spec/openapi | OpenAPI 3.1 spec pointer |
foodnearme://agent/skill | Agent skill summary |
foodnearme://examples/search-flow | Example search β menu flow |
| Prompt | Args | Guides agent to |
|---|---|---|
find_dinner_near_me | location (required), cuisine?, dietary? | search_restaurants β get_menu |
dietary_constrained_menu | restaurant_id, restrictions | get_menu with explicit MP flags/allergens |
validate_my_menu | strict? (true for strict mode) | validate_menu_protocol |
| Setting | Value |
|---|---|
| MCP URL | https://foodnear.me/mcp |
| Transport | HTTP JSON-RPC (POST); discovery via GET /mcp |
| Auth | None during beta (rate limits apply) |
| Registry | me.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.
Implementation: apps/web/app/mcp/route.ts Β· Flow runner: apps/web/lib/mcp/mcp-flow-runner.ts
Failed tools/call responses include structured metadata in _meta.error:
| Field | Meaning |
|---|---|
code | VALIDATION_ERROR Β· NOT_FOUND Β· UPSTREAM Β· RATE_LIMITED Β· UNKNOWN |
message | What went wrong |
hint | How to fix the request |
retryable | Whether the agent should retry |
docs | https://foodnear.me/docs#quick-start |
Human-readable text is still in content[0].text for hosts that ignore _meta.
From repo root (with apps/web dev server running for localhost):
Production monitoring: GitHub Actions workflow MCP Production Smoke runs smoke:mcp daily and on manual dispatch (.github/workflows/mcp-smoke.yml).
| File | URL |
|---|---|
llms.txt | https://foodnear.me/llms.txt |
llms-full.txt | https://foodnear.me/llms-full.txt |
| MCP manifest | https://foodnear.me/.well-known/mcp-server.json |
| AgentRoot | https://foodnear.me/.well-known/agentroot.json |
| Skill file | https://foodnear.me/SKILL.md |
| OpenAPI | https://foodnear.me/openapi.json |
| Web quick reference | https://foodnear.me/docs |
Scripted flows: apps/web/docs/example-agent-flows.md
search_restaurants returns verified β menu_indexed β discovered.verification_status and menu_available. Call get_menu only when menu_available is true.discovered β menu_indexed β verified. See https://foodnear.me/attribution for data sources.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.
This repository ships the MCP server inside the foodnear.me web app:
| Path | Purpose |
|---|---|
apps/web | Next.js app β MCP at /mcp, landing, API routes |
packages/menu-protocol | Menu Protocol schema + validators |
database | Migrations, seeds, schema |
server.json | Official 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.
menu_indexed website ingestPromote 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.
No Uber Eats / DoorDash / Grubhub / RapidAPI scrapers. See apps/web/docs/example-agent-flows.md.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/food-near-me)<a href="https://allmcps.com/mcp/food-near-me"><img src="https://allmcps.com/api/badge/food-near-me?style=directory" alt="Food Near Me on AllMCPs" /></a>