关于 Food Near Me
Food Near Me 是面向 AI Agent 的餐厅发现 MCP 服务,按验证状态组织搜索结果和菜单数据。
主要功能
- 01三级餐厅搜索
- 02餐厅资料与菜单
- 03饮食及过敏原数据
- 04Menu Protocol 验证
- 05饮食筛选与路线搜索
适用场景
- 01查找指定地点附近的餐厅
- 02按饮食需求比较餐厅
- 03查看菜单过敏原与限制
- 04发现路线沿途餐厅
MCP 相关
其 MCP 端点提供 8 个工具、4 个资源和 3 个提示词,涵盖餐厅搜索、资料、菜单、饮食比较、路线发现及 Menu Protocol 验证。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://foodnear.me/mcpclaude mcp add --transport http me-foodnear-foodnear-me https://foodnear.me/mcp{"mcpServers":{"me-foodnear-foodnear-me":{"type":"http","url":"https://foodnear.me/mcp"}}}在 Cursor 中打开{"servers":{"me-foodnear-foodnear-me":{"type":"http","url":"https://foodnear.me/mcp"}}}在 VS Code 中打开{"mcpServers":{"me-foodnear-foodnear-me":{"type":"http","url":"https://foodnear.me/mcp"}}}{"mcpServers":{"me-foodnear-foodnear-me":{"serverUrl":"https://foodnear.me/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
9此工具无需参数。
详细介绍
Food Near Me — MCP 服务
面向 AI 原生餐厅发现的模型上下文协议服务 — 三层搜索(已验证 → 菜单已索引 → 已发现)、Menu Protocol 菜单和结构化菜单验证。约 30 秒即可接入 Claude Desktop、Cursor、ChatGPT 或任何 MCP 主机。
生产端点: https://foodnear.me/mcp · 8 个工具 · 4 个资源 · 3 个提示词 · 无需 API 密钥(测试版)
快速开始 {#quick-start}
1. 将以下内容添加到 MCP 主机配置中
Cursor — ~/.cursor/mcp.json(macOS/Linux)或 %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. 重启 MCP 主机
3. 试试这个提示词
“查找 Brooklyn Bridge 附近的纯素泰餐厅,并向我展示排名第一的餐厅菜单。”
你的 Agent 应调用 search_restaurants → get_menu(或先调用 get_restaurant)。
你将获得
工具(8 个)
| 工具 | 描述 |
|---|---|
search_restaurants | 按 lat/lng 进行三层地理搜索——已验证 → 菜单已索引 → 已发现;调用 get_menu 前检查 menu_available |
get_restaurant | 餐厅资料,包含 Schema.org JSON-LD 和 Menu Protocol 扩展 |
get_menu | 完整的 Menu Protocol v1.0 菜单(饮食标记、过敏原、招牌菜) |
get_ado_score_breakdown | ADO 评分因素和改进建议 |
validate_menu_protocol | 发布前验证 Menu Protocol JSON 载荷 |
explore_area_for_diet | 组合工具:按类别汇总的街区概览(verified / menu_indexed / discovered);可选的 dietary 筛选条件仅缩小已验证层级的范围 |
compare_restaurants_for_diet | 组合工具:根据符合饮食要求的菜单项和信任层级排名,对比 2–5 家已知餐厅 |
find_restaurants_along_route | 组合工具:发现起点与目的地之间路线附近的餐厅,并可选择按饮食要求排序 |
资源(4 个)
| URI | 内容 |
|---|---|
foodnearme://spec/menu-protocol | Menu Protocol v1.0 规范 |
foodnearme://spec/openapi | OpenAPI 3.1 规范指针 |
foodnearme://agent/skill | Agent 技能摘要 |
foodnearme://examples/search-flow | 搜索 → 菜单流程示例 |
提示词(3 个)
| 提示词 | 参数 | 引导 Agent 执行 |
|---|---|---|
find_dinner_near_me | location(必填)、cuisine?、dietary? | search_restaurants → get_menu |
dietary_constrained_menu | restaurant_id、restrictions | 使用明确的 MP 标记/过敏原调用 get_menu |
validate_my_menu | strict?(严格模式设为 true) | validate_menu_protocol |
配置
| 设置 | 值 |
|---|---|
| MCP URL | https://foodnear.me/mcp |
| 传输方式 | HTTP JSON-RPC(POST);通过 GET /mcp 发现 |
| 身份验证 | 测试版期间无需身份验证(适用速率限制) |
| 注册表 | me.foodnear/foodnear-me(官方 MCP 注册表) |
预览版 / 本地: 在 apps/web 中运行 npm run dev 时,将 URL 替换为 http://localhost:3000/mcp。
运维工具筛选器: 设置 FNM_MCP_ENABLED_TOOLS=search_restaurants,get_menu,即可在 tools/list 和 GET /mcp 中仅公开以逗号分隔的子集。留空或设为 * 可公开所有工具。此功能用于临时降级/上下文控制,不用于隐私保护或身份验证。
架构
┌─────────────────────┐ POST /mcp (JSON-RPC) ┌─────────────────────────┐
│ MCP host │ ────────────────────────────▶│ apps/web/app/mcp │
│ (Cursor / Claude) │ GET /mcp (discovery) │ Next.js route handler │
└─────────────────────┘ └────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Supabase + PostGIS │
│ Menu Protocol (MP) │
└─────────────────────────┘
实现:apps/web/app/mcp/route.ts · 流程运行器:apps/web/lib/mcp/mcp-flow-runner.ts
工具错误约定
失败的 tools/call 响应会在 _meta.error 中包含结构化元数据:
| 字段 | 含义 |
|---|---|
code | VALIDATION_ERROR · NOT_FOUND · UPSTREAM · RATE_LIMITED · UNKNOWN |
message | 出错原因 |
hint | 如何修正请求 |
retryable | Agent 是否应重试 |
docs | https://foodnear.me/docs#quick-start |
对于忽略 _meta 的主机,人类可读文本仍位于 content[0].text 中。
验证
从仓库根目录运行(需启动 apps/web 开发服务器以使用 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
生产监控: GitHub Actions 工作流 MCP Production Smoke 每天运行 smoke:mcp,并支持手动触发(.github/workflows/mcp-smoke.yml)。
Agent 发现
| 文件 | URL |
|---|---|
llms.txt | https://foodnear.me/llms.txt |
llms-full.txt | https://foodnear.me/llms-full.txt |
| MCP 清单 | https://foodnear.me/.well-known/mcp-server.json |
| AgentRoot | https://foodnear.me/.well-known/agentroot.json |
| 技能文件 | https://foodnear.me/SKILL.md |
| OpenAPI | https://foodnear.me/openapi.json |
| Web 快速参考 | https://foodnear.me/docs |
脚本化流程:apps/web/docs/example-agent-flows.md
数据可信度模型(三级搜索)
search_restaurants按 verified → menu_indexed → discovered 的顺序返回结果。- 每个结果都包含
verification_status和menu_available。仅当menu_available为 true 时才调用get_menu。 - Verified — 所有者批准的 MP;饮食和过敏原声明的权威来源。
- menu_indexed — 自动获取的/公开的 MP 菜单;引用时须注明限制——未经所有者验证。
- discovered — 仅为地点信息;不要引用菜单项目。
- 可信度递进:
discovered→menu_indexed→verified。数据来源见 https://foodnear.me/attribution。
常见问题
我需要 API 密钥吗?
Beta 阶段使用 MCP 无需密钥。未来的付费层级可能会使用 API 密钥或 x402(Base 上的 USDC)。请参阅本地 docs/Food Near Me 操作手册中的 x402-prepaid-spec.md。
重启后没有显示工具?
确认配置 URL 以 /mcp 结尾。完全重启主机。针对目标基础 URL 运行 npm run smoke:mcp。
搜索结果为空?
Beta 阶段已为特定都会区(例如纽约市 Williamsburg)预置经过验证的菜单。Williamsburg 有 7 家 menu_indexed 餐厅,其自动获取的菜单来自网站采集。已发现的地点列表覆盖许多美国都会区——请在导入的区域中使用坐标。演示坐标:40.7128, -74.006。在本地运行 npm run db:seed -w web 以获取已验证的测试数据。
Cursor 和 Claude 的配置路径有何不同?
请参阅上方的快速入门——每个主机使用不同的 JSON 文件;只有 mcpServers 部分需要关注。
这与 DoorDash / Uber Eats API 有何不同?
我们向 Agent 提供经过所有者验证的 Menu Protocol 数据——而非抓取的聚合平台菜单或下单结账功能。
Monorepo 结构
此仓库将 MCP 服务包含在 foodnear.me Web 应用中:
| 路径 | 用途 |
|---|---|
apps/web | Next.js 应用——MCP 位于 /mcp,包含落地页和 API 路由 |
packages/menu-protocol | Menu Protocol 架构和验证器 |
database | 迁移、种子数据、架构 |
server.json | 官方 MCP Registry 元数据 |
业务策略和运行手册位于单独的本地文档文件夹中(不在此仓库内)——请参阅团队的 docs/Food Near Me 操作手册。
开发
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
操作员:menu_indexed 网站采集
通过免费的网页/订购平台解析器(ChowNow API、order.online、Sauce、Squarespace、BentoBox、Toast、Playwright),将 discovered 提升为 menu_indexed。务必先进行试运行——无头模式速度较慢。
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
不提供 Uber Eats / DoorDash / Grubhub / RapidAPI 抓取器。请参阅 apps/web/docs/example-agent-flows.md。
Links
- Website: https://foodnear.me
- GitHub: https://github.com/food-near-me/platform
- Menu Protocol spec: https://github.com/foodnearme/menu-protocol
- Support: https://foodnear.me/support · [email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。