mcpField
T
Thailand Fun Experiences

Thailand Fun Experiences

リモート
thailandfunexperiences.com地図・旅行02 日前に更新
リポジトリ公式サイト

Thailand Fun Experiences について

Thailand Fun Experiencesは、Phuketでの外出を旅行グループに合わせて探すMCPサーバーです。参加適性の確認に天候・海況・移動時間、多様な候補、追跡可能な予約リンクを組み合わせます。

主な機能

  1. 01グループや条件に応じた体験検索
  2. 02多様な候補の提示
  3. 03最新の天候・海況情報
  4. 04年齢・移動能力・乗り物適性の確認
  5. 05空き状況付き予約リンク
  6. 06体験IDによる詳細取得

活用シーン

  1. 01天気予報に合わせたPhuketの予定作成
  2. 02家族やグループ向け体験の絞り込み
  3. 03移動時間と適性による候補比較

MCP 対応

streamable HTTPエンドポイントを通じて、MCPクライアントに`search_experiences`と`get_experience`ツールを提供します。

設定

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

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

ツール

詳細

Thailand Fun Experiences — MCP サーバー

プーケット向けのエージェント対応型体験レイヤーです。AI アシスタント(ChatGPT、Claude など)が、安全性を考慮した属性、リアルタイムの天候・海況情報、アフィリエイト予約リンクとともに、「ここで、今日、このメンバーで何をすればいいですか?」という質問に、1 回のツール呼び出しで答えられます。

公開中: thailandfunexperiences.com · MCP エンドポイント:https://thailandfunexperiences.com/mcp

できること

  • 実在する Viator の体験 1,891 件を同期し、そのうち 352 件には、それぞれ 24 個の安全性・適性属性を付与しています
  • ポートフォリオランキング — 上位から 4 件を返すのではなく、多様性のある候補を 4 件返します(会場の重複排除、アクティビティの種類の多様化、カテゴリーの分散を実施)
  • リアルタイム情報 — 天気予報(時間帯を考慮した降雨区分)、海況(うねりの方向 × ゾーンの露出度)、移動マトリックス(ORS による経路計算、13 ゾーン)、季節
  • 安全性による絞り込み — 年齢制限、移動能力(中心となる体験を楽しめるかを基準とする意味論)、妊娠、泳げない方、乗り物酔いのしやすさを、複数の情報源に基づくエビデンス階層で考慮します
  • アフィリエイト予約 — すべての結果に、リアルタイムの空き状況を確認できる、追跡可能な予約リンク(book_now_url)が含まれます

アーキテクチャ

詳細な仕様については、ARCHITECTURE.md を参照してください。

Agents (ChatGPT / Claude / REST)
        │
        ▼
  M6 MCP Server (Fastify + streamable HTTP)
        │
  M5 Ranker (pure function, no DB/API calls)
   ├── M1 Experience Graph (Postgres + PostGIS)
   ├── M4 Context (Open-Meteo weather/marine, ORS matrix)
   └── M3 Enrichment (Claude Sonnet, Batch API)
        │
  M8 Router → Viator affiliate links
  M10 Telemetry → session/click/booking events

ツール

search_experiences

旅行メンバーに合わせて、プーケットのアクティビティを検索します。多様性のあるおすすめを約 4 件まとめて返します。

{
  "date": "2026-09-10",
  "staying": "kata",
  "party": [{"role": "adult", "age": 38}, {"role": "child", "age": 9}],
  "constraints": {"motion_comfort": "low"},
  "energy": "high",
  "time_slot": "morning",
  "max_results": 4
}

レスポンスには、属性、予約リンク、理由コード、天候情報、海況、カタログの幅広さを示す統計、検索条件を調整するためのヒントを含む候補が含まれます。

get_experience

ID を指定して、特定の体験の詳細を取得します。

{"experience_id": "exp_27613P9"}

技術スタック

  • ランタイム: Node 22、TypeScript(strict)、ESM
  • モノレポ: pnpm workspaces
  • データベース: Postgres 16 + PostGIS、Drizzle ORM
  • MCP: Fastify の背後で動作する @modelcontextprotocol/sdk のストリーミング可能な HTTP トランスポート
  • エンリッチメント: Anthropic Batch API(Claude Sonnet 4)、エビデンス検証付きの構造化抽出
  • 天候・海洋情報: Open-Meteo(API キー不要)
  • 移動マトリックス: OpenRouteService(13 ゾーンすべてを対象に、1 回のバッチマトリックス呼び出しを実施)
  • デプロイ: VPS 上で systemd + Caddy リバースプロキシ

エビデンス階層

1. human_correction    — Dan's per-attribute overrides
2. operator_terms      — verified T&C from specific operators
3. viator_structured   — supplier-declared flags (stored verbatim)
4. dan-rules           — category/venue-level local knowledge (8 rule groups)
5. derived             — formula-computed (seasickness = vessel × water_exposure)
6. extraction          — LLM structural/textual inference (base)

主な設計上の決定事項

  • 上位候補ではなくポートフォリオ — 異なる会場・アクティビティの種類から多様性のある候補を 4 件提示します
  • 自由記述ではなく構造化された制約 — どのフィールドにも健康に関する表現を含めません(プライバシー・バイ・デザイン)
  • 移動時間のペナルティを常に適用 — 移動時間と所要時間の比率が 1 以上の場合は、重大なペナルティを課します
  • 未対応の目的地には丁寧に対応 — エラーを投げず、需要を記録します
  • ディレクティブ 9(Viator 翌日テスト) — 提供するすべての機能は、単一のプロバイダーでは再現できない変換、裏付け、組み合わせ、またはコンテキストを加える必要があります

使用ツール

Claude Code(Claude Opus)を使い、約 1 週間、1 人で構築しました。開発の振り返りについては、meta/POSTMORTEM.md を参照してください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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