关于 ThaiData UK
ThaiData UK 为英国泰餐经营者提供基于食品标准局检查数据的餐厅信息与经营工具,涵盖餐厅和城市页面、市场数据及 MCP 端点。
主要功能
- 01FSA 卫生评级与餐厅数据
- 02城市统计和连锁品牌档案
- 03工资与外卖利润计算器
- 04餐厅认领及资料编辑系统
- 05免费的城市数据 API
适用场景
- 01查询餐厅卫生评级
- 02比较各城市泰餐市场
- 03估算工资或外卖利润
- 04认领并更新餐厅页面
MCP 相关
`/mcp` 端点通过 JSON-RPC 2.0 提供可供 AI 调用的工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
服务地址
https://thaidata.uk/mcp一键复制安装命令
Claude CodeTerminal
claude mcp add --transport http uk-thaidata https://thaidata.uk/mcpCursor.cursor/mcp.json
{"mcpServers":{"uk-thaidata":{"type":"http","url":"https://thaidata.uk/mcp"}}}在 Cursor 中打开VS Code.vscode/mcp.json
{"servers":{"uk-thaidata":{"type":"http","url":"https://thaidata.uk/mcp"}}}在 VS Code 中打开Claude Desktopclaude_desktop_config.json
{"mcpServers":{"uk-thaidata":{"type":"http","url":"https://thaidata.uk/mcp"}}}Windsurf~/.codeium/windsurf/mcp_config.json
{"mcpServers":{"uk-thaidata":{"serverUrl":"https://thaidata.uk/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
ThaiData UK — 餐厅数据与认领系统
https://thaidata.uk — 面向英国泰国餐厅经营者的商业情报与交互式工具。免费,无需注册。
内容一览
- 1,594 个餐厅页面 — 根据 FSA 数据自动生成,每家英国泰国餐厅各一个页面
- 253 个城市页面 — 各英国城市的市场数据,包含 FSA 卫生评级
- 28 个连锁品牌档案 — 泰国餐厅连锁品牌的详细情报
- 8 个交互式工具:工资计算器、外卖利润计算器、卫生评级查询、人员配置计算器、市场报告、供应商价格追踪器、餐厅估值、竞争对手雷达
- 8 篇内容指南:开餐厅、厨师签证、营销、收入基准、菜单定价、开业时间线、英国概览、城市细分
- 5 篇城市指南:针对曼彻斯特、利兹、伯明翰、爱丁堡、布里斯托尔的增强版落地页
- 35 个术语词条:行业术语及交叉引用
- 免费 API v1:Cities.json 端点——无需身份验证,无速率限制
- MCP 服务:可由 AI 调用的工具,位于
/mcp(JSON-RPC 2.0) - 认领系统:餐厅所有者可以认领并完善自己的信息页
快速开始
# Clone
git clone https://github.com/swifttiger888-commits/thaidata.git
cd thaidata
# Python deps (stdlib only currently)
pip install -r requirements.txt # or skip — no external deps needed
# Copy env template
cp .env.example .env
# Edit .env with your values
# Copy wrangler config
cp wrangler.toml.example wrangler.toml
# Edit wrangler.toml with your D1 database ID
架构
┌─────────────────────┐
│ FSA API (Gov UK) │
└────────┬────────────┘
│ weekly cron (Mon 9am)
▼
┌─────────────────────┐
│ fetch_all_thai_data │──→ data/restaurants.json
│ .py (pipeline) │──→ api/v1/cities.json
└────────┬────────────┘──→ api/v1/data.json
│
┌──────────────┼──────────────┐
▼ ▼ ▼
generate_ generate_ generate_
restaurant_ menu_price_ city_links_
pages.py page.py .py
│ │ │
▼ ▼ ▼
r/[city]/ thai-menu- cities/[city]
[slug]/ price-index .html
index.html .html
┌──────────────────────────────────────────┐
│ Cloudflare Pages (static deploy) │
│ git push → auto-build → thaidata.uk │
│ │
│ functions/ ← API + MCP endpoints │
│ api/ │
│ claim.js POST /api/claim │
│ admin.js POST/PUT /api/admin │
│ listing.js GET/PUT /api/listing │
│ search.js GET /api/search │
│ upload.js POST /api/upload │
│ claimed.js GET /api/claimed │
│ diag.js GET /api/diag │
│ mcp.js POST /mcp │
│ _middleware.js CORS │
│ │
│ D1 Database (SQLite) │
│ claims, listings, auth_tokens │
└──────────────────────────────────────────┘
项目结构
thaidata/
├── scripts/
│ ├── fetch_all_thai_data.py # Main data pipeline (FSA API → JSON)
│ ├── generate_restaurant_pages.py # 1,594 individual restaurant pages
│ ├── generate_menu_price_page.py # Menu price index page
│ ├── collect_menu_prices.py # Manual price survey tool
│ ├── add_city_restaurant_links.py # Link city pages → restaurant pages
│ └── websub-ping.py # WebSub/IndexNow notification
├── functions/
│ ├── _middleware.js # CORS handler
│ ├── mcp.js # MCP server (AI tools)
│ └── api/
│ ├── admin.js # Admin panel API
│ ├── claim.js # Claim submission
│ ├── claimed.js # Claimed listing queries
│ ├── diag.js # Diagnostics
│ ├── listing.js # Listing management
│ ├── search.js # FSA proxy search
│ └── upload.js # Photo upload
├── data/
│ ├── restaurants.json # 1,594 restaurants (SINGLE SOURCE OF TRUTH)
│ └── postcode_geocodes.json # Geocoded postcodes
├── api/v1/
│ ├── cities.json # 253 city statistics
│ └── data.json # Overview data
├── schema.sql # D1 database schema
├── wrangler.toml # Cloudflare Pages config (LIVE)
├── wrangler.toml.example # Template for new devs
├── .env.example # Environment variable template
├── .gitignore
└── requirements.txt # Python dependencies
数据管道
每周数据刷新任务由 cron 作业(Hermes Agent)在每周一上午 9:00运行。
管道步骤:
scripts/fetch_all_thai_data.py— 获取 FSA FHRS + FHIS API 数据- 使用“Thai”关键词搜索所有经营类别
- 搜索 11 个指定连锁品牌(Giggling Squid、Busaba 等),以查找名称中不含“Thai”的餐厅
- 按 FHRSID 去重(保留首次匹配结果)
- 通过 85 项对照表将地方政府区域映射到城市
- 计算城市统计数据(人口密度、平均卫生评级)
- 保存到:
data/restaurants.json、api/v1/cities.json、api/v1/data.json
scripts/generate_restaurant_pages.py— 生成单独的 /r/ 页面scripts/add_city_restaurant_links.py— 向城市页面添加餐厅链接- 推送到 git → Cloudflare Pages 自动部署
手动运行:
python3 scripts/fetch_all_thai_data.py
python3 scripts/generate_restaurant_pages.py
python3 scripts/add_city_restaurant_links.py
git add -A && git commit -m "weekly data refresh" && git push origin main
**注意:**管道脚本默认写入 /tmp/thaidata-repo/。如果工作目录不同,请编辑 scripts/fetch_all_thai_data.py 顶部的 REPO_DIR。
环境变量
在 Cloudflare Dashboard(Workers & Pages → thaidata-uk → Settings → Variables)中设置:
| 变量 | 必需 | 说明 |
|---|---|---|
ADMIN_PASSWORD | 是 | /admin 面板的密码 |
MAGIC_LINK_SECRET | 是 | 用于签署认领令牌的 64 位以上随机密钥 |
RESEND_API_KEY | 是 | Resend.com API 密钥(以 re_ 开头),用于发送魔法链接邮件 |
SITE_URL | 是 | https://thaidata.uk |
D1 数据库设置
# Create database
wrangler d1 create thaidata-db
# Update wrangler.toml with the returned database ID
# Initialize schema
wrangler d1 execute thaidata-db --file=schema.sql
# Bind in Cloudflare Dashboard:
# Workers & Pages → thaidata-uk → Settings → Functions → D1 database bindings
# Bind thaidata-db with variable name DB
部署
# Push to main — Cloudflare Pages auto-deploys
git add -A && git commit -m "your message" && git push origin main
认领系统流程
- 所有者访问
/claim/,搜索自己的餐厅 - 提交认领申请,填写姓名、电子邮件、电话和验证说明
- 管理员在
/admin/审核(受密码保护) - 批准后:创建信息页,并通过 Resend 向所有者发送魔法链接邮件
- 所有者通过
/listing/manage?token=...编辑信息页——描述、照片、营业时间等
安全性:
- 魔法链接令牌:单次使用,经过 SHA-256 哈希处理,1 小时后过期
- 管理员会话:24 小时后过期
- 管理员登录限速:每个 IP 每 15 分钟最多尝试 5 次
数据来源
- Food Standards Agency (FSA) — 通过 FHRS API 提供卫生评级和经营场所数据
- Food Hygiene Information Scheme (FHIS) — 苏格兰数据
- 手动菜单价格调查 — 5 个城市中的 75 组菜品价格数据
- ONS 2024 年年中人口估算(用于城市人均计算)
许可证
MIT — 数据来源于 FSA(Open Government Licence)。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。