mcpField
T
ThaiData UK

ThaiData UK

リモート
github.com/swifttiger888-commitsビジネス・マーケティング0今日更新
リポジトリ

ThaiData UK について

ThaiData UKは、英国のタイ料理店運営者向けに、食品基準庁の検査データを使った店舗情報と経営ツールを提供します。店舗・都市の情報、マーケットデータ、MCPエンドポイントを備えています。

主な機能

  1. 01FSAの衛生評価と店舗データ
  2. 02都市統計とチェーン情報
  3. 03賃金・デリバリー利益計算ツール
  4. 04店舗情報の申請・編集機能
  5. 05無料の都市データAPI

活用シーン

  1. 01店舗の衛生評価の確認
  2. 02都市別のタイ料理市場の比較
  3. 03賃金やデリバリー利益の試算
  4. 04店舗情報の申請と更新

MCP 対応

`/mcp`エンドポイントは、JSON-RPC 2.0経由でAIから呼び出せるツールを提供します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://thaidata.uk/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 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

ThaiData UK — レストランデータ&掲載情報の申請システム

https://thaidata.uk — 英国のタイ料理レストラン運営者向けのビジネスインテリジェンスとインタラクティブツールです。無料で、登録は不要です。

内容

  • 1,594件のレストランページ — FSAデータから自動生成。英国のタイ料理レストランごとに1ページ
  • 253件の都市ページ — FSAの衛生評価を含む、英国各都市の市場データ
  • 28件のチェーンプロフィール — タイ料理レストランチェーンの詳細なインテリジェンス
  • 8種類のインタラクティブツール:賃金計算ツール、デリバリー利益計算ツール、衛生情報検索、スタッフ配置計算ツール、市場レポート、仕入先価格トラッカー、レストラン評価額計算ツール、競合レーダー
  • 8件のコンテンツガイド:レストランの開業、シェフのビザ、マーケティング、売上ベンチマーク、メニュー価格設定、開業までのスケジュール、英国の概要、都市別内訳
  • 5件の都市ガイド:マンチェスター、リーズ、バーミンガム、エディンバラ、ブリストルの詳細情報を加えたランディングページ
  • 35語の用語集:相互参照付きの業界用語
  • 無料 API v1:Cities.json エンドポイント — 認証不要、レート制限なし
  • MCP サーバー:/mcp の AI 呼び出し可能なツール(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時に実行されます。

パイプラインの手順:

  1. scripts/fetch_all_thai_data.py — FSA FHRS と FHIS の API からデータを取得します
    • すべての事業種別を対象に、「Thai」のキーワードで検索します
    • 「Thai」を含まない名称のレストランを見つけるため、名称が指定された11のチェーン(Giggling Squid、Busaba など)を検索します
    • FHRSID に基づいて重複を排除します(最初に見つかった項目を採用)
    • 85件のエントリを含むルックアップテーブルで、地方自治体を都市に対応付けます
    • 都市の統計値(人口密度、衛生評価の平均)を算出します
    • 保存先:data/restaurants.json、api/v1/cities.json、api/v1/data.json
  2. scripts/generate_restaurant_pages.py — 個別の /r/ ページを生成します
  3. scripts/add_city_restaurant_links.py — 都市ページにレストランへのリンクを追加します
  4. 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

掲載情報の申請フロー

  1. オーナーが /claim/ にアクセスし、自分のレストランを検索します
  2. 名前、メールアドレス、電話番号、確認メモを入力して申請します
  3. 管理者が /admin/ で審査します(パスワード保護されています)
  4. 承認されると、掲載情報が作成され、オーナーに Resend 経由でマジックリンクメールが届きます
  5. オーナーは /listing/manage?token=... から説明文、写真、営業時間などを編集します

セキュリティ:

  • マジックリンクトークン:1回限りの使用、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)。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。