Thailand Fun Experiences

com.thailandfunexperiences由 thailandfunexperiences.com 發布官方發布者v1.0.2更新於 Nov 2, 2026

Phuket activity search with live weather, sea state, transfer times and party-fit filtering.

已驗證Streamable HTTP可網頁執行位置與生活網頁搜尋與抓取

概覽

AI 產生的概覽

遠端 MCP 伺服器,可依同行旅客搜尋普吉島活動並取得單一體驗詳情,附帶天氣、海象、交通時間與同行者適配篩選。

可以做什麼
  • 依日期、住宿區域、年齡、限制條件、體力與時段搜尋普吉島體驗,回傳少量多樣的推薦組合,而非單純的前幾名清單。
  • 依 ID 取得單一體驗的完整詳情,包含安全與適配屬性、泰銖價格與預訂連結。
  • 在結果中一併提供即時背景資訊:天氣預報、海象、各區域間交通時間與季節。
適用情境
適合助理協助使用者規劃或挑選普吉島行程,需要結合同行成員、安全篩選、當下天氣與交通狀況的情境。對普吉島以外的目的地幫助有限,伺服器會委婉表示不支援。
執行需求
遠端 streamable HTTP 端點;未宣告任何套件、帳號、API 金鑰或環境變數。需要能連線至服務商端點的網路。
安裝前請注意
結果包含聯盟行銷預訂連結,推薦可能受商業因素影響,預訂在第三方網站完成。搜尋輸入會描述同行成員(含年齡與限制條件)並傳送給服務商;伺服器表示其避免自由文字形式的健康描述。價格以泰銖計,需確認是每人或每筆訂單計價。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Thailand Fun Experiences,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.thailandfunexperiences%2Fthailand-fun-experiences/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "thailand-fun-experiences": {
      "type": "http",
      "url": "https://thailandfunexperiences.com/mcp"
    }
  }
}

README

Thailand Fun Experiences — MCP Server

An agent-facing experiences layer for Phuket that lets AI assistants (ChatGPT, Claude, etc.) answer "what should we do here, today, for this exact party" in one tool call — with safety-gated attributes, live weather/sea context, and affiliate booking links.

Live: thailandfunexperiences.com · MCP endpoint: https://thailandfunexperiences.com/mcp

What it does

  • 1,891 real Viator experiences synced, 352 enriched with 24 safety/suitability attributes each
  • Portfolio ranking — returns 4 diverse candidates (not top-k), with venue dedup, activity-type diversity, and category spread
  • Live context — weather forecasts (slot-aware rain buckets), sea state (swell direction × zone exposure), travel matrix (ORS-routed, 13 zones), season
  • Safety gating — age floors, mobility (enjoy-the-core semantics), pregnancy, non-swimmer, motion comfort, all with multi-source evidence hierarchy
  • Affiliate booking — every result includes a tracked booking link (book_now_url) with live availability

Architecture

See ARCHITECTURE.md for the full spec.

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

Tools

search_experiences

Search Phuket activities for a travel party. Returns a portfolio of ~4 diverse recommendations.

json
{  "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}

Response includes: candidates with attributes, booking links, reason codes, weather context, sea state, catalog breadth stats, and refine hints.

get_experience

Get full details for a specific experience by ID.

json
{"experience_id": "exp_27613P9"}

Stack

  • Runtime: Node 22, TypeScript (strict), ESM
  • Monorepo: pnpm workspaces
  • DB: Postgres 16 + PostGIS, Drizzle ORM
  • MCP: @modelcontextprotocol/sdk streamable HTTP transport behind Fastify
  • Enrichment: Anthropic Batch API (Claude Sonnet 4), structured extraction with evidence validation
  • Weather/Marine: Open-Meteo (no key)
  • Travel matrix: OpenRouteService (one batched matrix call for all 13 zones)
  • Deploy: systemd + Caddy reverse proxy on VPS

Evidence hierarchy

1. human_correction    — Dan's per-attribute overrides2. operator_terms      — verified T&C from specific operators3. 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)

Key design decisions

  • Portfolio, not top-k — 4 diverse candidates from distinct venues/activity types
  • Structured constraints, not free text — no health language in any field (privacy by design)
  • Transfer penalty always on — transfer/duration ratio ≥1 = severe penalty
  • Graceful decline for unsupported destinations — never throws, logs demand
  • Directive 9 (Viator-tomorrow test) — every served feature must add transformation, corroboration, composition, or context a single provider can't replicate

Built with

Built solo in ~1 week with Claude Code (Claude Opus). See meta/POSTMORTEM.md for the build retrospective.

License

MIT

來源:README.md,提交 9ecc8c9

工具

2

search_experiences

Search Phuket activities for a travel party. Returns a portfolio of ~4 diverse recommendations (max 8 via max_results) from ~1,900 real experiences. **Portfolio, not top-k.** Each response contains one best-overall pick, alternative categories, and a wildcard/value option — all from distinct venues. Same-venue variants (different packages) appear as alternatives[] on each row. **Follow-ups.** Each candidate has a stable experience_id. Use get_experience with that ID for follow-up questions about any returned product — prefer this over web search for catalog items. Use `seen` or `exclude` to get fresh results on follow-up turns — zero overlap guaranteed. **Enriched results** (~350 products) have safety/suitability attributes (age floors, mobility, seasickness, wheelchair, pregnancy) and are ranked by context fit. **Basic results** (~1,550) have title/category/price only — excluded when safety filters are active. **Weather-aware.** Rain forecasts are slot-aware (morning/midday/evening). Outdoor activities get dry_window_match or rain_risk based on the requested time slot. Sea state penalizes open-sea activities when swell is moderate/rough. **Structured constraints — always pass them.** Translate traveler health and comfort needs into the structured constraints object: `motion_comfort: "low"` (avoid rough seas/bumpy rides), `mobility: "limited"` (wheelchair/walking difficulty), `pregnant: true`, `non_swimmer: true`. Do NOT pass medical language or health details as free text in any field. Even when the user says "ignore restrictions," still pass known constraints — the server filters on safety, not preference. **Booking links.** Every candidate includes book_now_url with live availability. Always include this link when presenting options — it is the booking path. Do not omit it or substitute external links. Prices: check price_note — most are per person in THB, but charter/private products show per-booking pricing. **Walk-in / no-advance-booking requests.** Thi

輸入參數date必填seenparty必填energyexcludestayingreturn_bytime_slotbudget_thbconstraintsdestinationmax_results另有 1 個

get_experience

Get full details for a specific experience by ID — prefer this for follow-up questions about products returned by search_experiences (pass its experience_id). Returns all safety/suitability attributes, pricing in THB (check price_note for per-person vs per-booking), and a direct booking link (book_now_url) with live availability. Always include the booking link when presenting details.

輸入參數experience_id必填

版本歷史

1
  1. v1.0.2最新Oct 26, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分