mcpField
R
Restaurant Health Inspections

Restaurant Health Inspections

远程服务
food.ian.sh法律与政务04 天前更新

关于 Restaurant Health Inspections

Restaurant Health Inspections 是一个 MCP 服务,可查询美国、英国、加拿大和法国 20 个地区的餐厅检查等级、分数及违规记录。它使用政府公开数据,无需 API 密钥。

主要功能

  1. 01按城市和名称搜索餐厅
  2. 02查看等级、分数或结果
  3. 03查询检查历史和违规记录
  4. 04了解当地评级体系
  5. 05使用公开数据且无需 API 密钥

适用场景

  1. 01查看餐厅当前检查情况
  2. 02核查餐厅过往违规记录
  3. 03比较不同地区的评级体系

MCP 相关

该服务向 MCP 客户端提供餐厅搜索、检查历史和评级体系工具。托管端点使用无需身份验证的 Streamable HTTP,也提供本地 stdio Python 版本。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://food.ian.sh/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

restaurant-health MCP 服务

查询20 个地区的餐厅卫生检查结果:

  • **美国:**纽约市、纽约州(纽约市以外地区)、旧金山、洛杉矶县、圣克拉拉县、马林县、萨克拉门托县、拉斯维加斯、芝加哥、波士顿、奥斯汀、罗利/韦克县、路易斯维尔、底特律、辛辛那提、奥马哈/道格拉斯县、费尔法克斯县
  • **其他地区:**伦敦和英国、多伦多、巴黎和法国

使用政府公开数据,无需 API 密钥。

托管地址:https://food.ian.sh。 MCP 端点为 https://food.ian.sh/mcp(Streamable HTTP,无需身份验证)。

claude mcp add --transport http restaurant-health https://food.ian.sh/mcp

工具

工具功能
search_restaurants(city, name, address?, zip_code?, limit?)查找餐厅并显示其当前等级、分数或结果
get_inspection_history(city, restaurant_id, max_inspections?)查询以往检查记录、分数和违规情况(城市公开这些信息时)
rating_systems()列出各城市,并说明各自的评级方式

每个城市的 ID、评级系统和数据来源都在其 src/cities/ 模块中。rating_systems 会返回相同的信息。

数据获取方式

  • 实时 API,缓存 1 天(Cloudflare Cache API,按地区缓存)。除洛杉矶和拉斯维加斯外,其他地区均采用此方式:
    • Socrata:纽约市、旧金山、芝加哥、奥斯汀、圣克拉拉、马林、辛辛那提、纽约州
    • ArcGIS:罗利、路易斯维尔、底特律、萨克拉门托、奥马哈、费尔法克斯
    • CKAN:波士顿、多伦多
    • Opendatasoft:法国
    • FSA ratings API:英国
  • **批量导入 D1:**洛杉矶县和拉斯维加斯仅发布大型 CSV 和 zip 文件(约 75 MB)。每日 cron 会在文件发生变化时重新导入。

已知限制:

  • 英国仅发布当前评级,不提供检查历史记录。
  • 法国仅发布概要级别的数据,且只涵盖最近 12 个月。
  • 奥马哈仅提供自 2025 年 12 月以来的检查记录,违规信息位于关联的 PDF 中。
  • 费尔法克斯不发布违规详情。
  • 洛杉矶县不包括帕萨迪纳、长滩和弗农。

着陆页会根据 Cloudflare 的请求地理位置信息选择默认城市(src/geo.ts)。可通过 ?city=<id> 覆盖。

托管部署(Cloudflare Workers)

路径用途
src/index.ts路由、MCP 工具(通过 @modelcontextprotocol/sdk 实现无状态 Streamable HTTP)及 cron 处理程序
src/cities/每个城市对应一个模块:搜索、历史记录、评级说明和着陆页徽章(index.ts 为注册表)
src/lib/http.ts缓存请求,以及 Socrata/ArcGIS 查询辅助工具
src/geo.ts根据访客所在位置选择默认城市
src/bulk.ts将洛杉矶和拉斯维加斯的数据导入 D1,并执行相关查询
src/landing.ts/ 路径的着陆页。搜索框会调用 /api/search,展开结果会调用 /api/history
migrations/D1 架构
npm install
npm run dev                  # local; apply schema first: npx wrangler d1 migrations apply restaurant-health --local
npm run deploy

每次导入都会写入新一代数据行,将 meta.gen:<city> 切换到该代数据,然后删除旧数据行。导入失败不会留下不完整的数据。若要强制重新导入,请运行:

curl -X POST -H "Authorization: Bearer $ADMIN_TOKEN" "https://food.ian.sh/admin/refresh?force=1"

推送到 main 后会通过 .github/workflows/deploy.yml 自动部署。该流程会应用 D1 迁移,然后运行 wrangler deploy。需要在仓库中配置密钥 CLOUDFLARE_API_TOKEN 和 CLOUDFLARE_ACCOUNT_ID。

ADMIN_TOKEN 是 Worker 密钥(wrangler secret put ADMIN_TOKEN)。SOCRATA_APP_TOKEN 是可选密钥,可提高纽约市和旧金山的速率限制。/api/status 会显示各批量导入城市最近一次导入的时间。

本地 stdio 版本(Python)

server.py 是原始的独立版本。它会自行下载批量文件,并将其缓存到 ~/.cache/restaurant-health-mcp。

需要 uv。依赖项以内联方式声明在 server.py 中。

Claude Code:

claude mcp add restaurant-health --scope user -- uv run --script /path/to/server.py

Claude Desktop(claude_desktop_config.json):

{
  "mcpServers": {
    "restaurant-health": {
      "command": "uv",
      "args": ["run", "--script", "/path/to/server.py"]
    }
  }
}

可选:设置 SOCRATA_APP_TOKEN,以提高纽约市和旧金山的速率限制。也可以设置 RESTAURANT_HEALTH_CACHE 来更改缓存存储位置。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。