Koskamo

BangkokVacay Connector MCP

A read-only MCP server providing structured access to the BangkokVacay directory and live Viator tour listings. It enables AI assistants to search and filter local businesses, hotels, and activities by category, area, and amenities, while retrieving full listing details and pre-set hotel booking links.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

BangkokVacay Connector MCP logo, by Cloudalien Technologies LLCCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Cloudalien Technologies LLC
MCP endpoint (Streamable HTTP)
https://bangkokvacay-connector.michael-b38.workers.dev/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 0 of 3 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search and filter local businesses by keyword, category, or area
  • Retrieve full listing details including address, hours, and photos
  • Find bookable tours with live prices and ratings
  • Get hotel booking links pre-set to specific dates

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
bangkokvacay-connector 2.2.1
MCP protocol negotiated in check
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

BangkokVacay connector, operated by Cloudalien Technologies LLC. Read-only access to the BangkokVacay directory of Bangkok, Thailand businesses and to live Viator tour listings. search_listings searches and filters listings (filter values come from list_filters and list_categories); get_listing returns full details for one listing; search_tours returns Viator tours with live starting prices. No tool books, pays or changes anything. Booking links lead to the named provider, which confirms price and availability; links with affiliate:true are affiliate links. Each listing includes its source page url.

Tools

5 advertised

search_listings — Search BangkokVacay listings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search BangkokVacay's curated directory of Bangkok, Thailand businesses (hotels, restaurants, bars, activities, attractions, shops and services). Read-only. Filters: keyword, category, area/neighborhood, price tier, amenities (e.g. pool, spa, river_view, rooftop, michelin), tag, and distance from a lat/lng or from another listing. Returns compact plain-text listings (description shortened; use get_listing for the full text, hours and FAQ) with the listing page URL, address, phone, website, up to 2 credited photos, and booking links. Booking links are the path to book with the named provider (Expedia for hotels, plus Viator/Klook where the listing has one), not ads; those marked affiliate:true are affiliate links, and BangkokVacay may earn a commission if the user books, at no extra cost to them. Results are not ranked by commission. Pass check_in/check_out to get date-specific Expedia hotel links (live rates are shown on Expedia, not in this result).

search_listings input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Keywords, e.g. 'rooftop bar', 'temple', 'tasting menu'"
    },
    "tag": {
      "type": "string",
      "description": "Exact listing tag, see list_filters"
    },
    "area": {
      "type": "string",
      "description": "Area/neighborhood, e.g. 'Pathum Wan', 'Sukhumvit', 'Riverside', 'Bang Rak'. See list_filters."
    },
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1
    },
    "sort": {
      "enum": [
        "relevance",
        "distance",
        "name"
      ],
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1
    },
    "adults": {
      "type": "integer",
      "default": 2,
      "maximum": 14,
      "minimum": 1
    },
    "category": {
      "type": "string",
      "description": "Category name or id from list_categories, e.g. 'Hotels'"
    },
    "check_in": {
      "type": "string",
      "description": "YYYY-MM-DD (hotels)"
    },
    "near_lat": {
      "type": "number"
    },
    "near_lng": {
      "type": "number"
    },
    "amenities": {
      "type": "array",
      "items": {
        "enum": [
          "ski_in_ski_out",
          "walk_to_lifts",
          "pool",
          "hot_tub",
          "spa",
          "fitness_center",
          "pet_friendly",
          "parking",
          "shuttle",
          "family_friendly",
          "breakfast",
          "kitchen",
          "rooftop",
          "river_view",
          "outdoor_seating",
          "apres_ski",
          "live_music",
          "free_entry",
          "michelin",
          "wheelchair_accessible"
        ],
        "type": "string"
      },
      "description": "All must match"
    },
    "check_out": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "radius_km": {
      "type": "number",
      "description": "Max distance (km) when near_* is set"
    },
    "price_tier": {
      "enum": [
        "budget",
        "moderate",
        "upscale",
        "luxury"
      ],
      "type": "string"
    },
    "near_listing_id": {
      "type": "string",
      "description": "Rank by distance from this listing"
    },
    "has_booking_link": {
      "type": "boolean",
      "description": "Only listings with a booking link"
    }
  },
  "additionalProperties": false
}
search_listings output schema
{
  "type": "object",
  "required": [
    "status",
    "total",
    "listings"
  ],
  "properties": {
    "page": {
      "type": "integer"
    },
    "total": {
      "type": "integer"
    },
    "status": {
      "type": "string"
    },
    "has_more": {
      "type": "boolean"
    },
    "listings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "lat": {
            "type": [
              "number",
              "null"
            ]
          },
          "lon": {
            "type": [
              "number",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Listing page on bangkokvacay.com"
          },
          "area": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "booking": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "provider": {
                  "type": "string"
                },
                "affiliate": {
                  "type": "boolean"
                }
              }
            }
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "price_tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": "string",
            "description": "Plain text"
          },
          "distance_km": {
            "type": "number"
          },
          "booking_link": {
            "type": [
              "string",
              "null"
            ],
            "description": "First affiliate booking link, if any"
          },
          "photo_details": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "credit": {
                  "type": "string"
                },
                "source": {
                  "type": "string"
                },
                "caption": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "per_page": {
      "type": "integer"
    },
    "returned": {
      "type": "integer"
    },
    "data_fetched_at": {
      "type": "string"
    },
    "affiliate_disclosure": {
      "type": "string"
    }
  }
}
search_listings annotations
{
  "title": "Search BangkokVacay listings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_listing — Get a BangkokVacay listing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read-only. Full details for one BangkokVacay listing by id: complete plain-text description, FAQ, hours, up to 10 gallery photos with captions and credits (e.g. 'Photo via Expedia'), listing page URL, and booking links (the path to book with the named provider, not ads). Links marked affiliate:true are affiliate links; BangkokVacay may earn a commission at no extra cost to the user. Returns NOT_FOUND for an unknown id.

get_listing input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Listing id from search_listings"
    },
    "adults": {
      "type": "integer",
      "maximum": 14,
      "minimum": 1
    },
    "check_in": {
      "type": "string"
    },
    "check_out": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_listing output schema
{
  "type": "object",
  "required": [
    "status",
    "listing"
  ],
  "properties": {
    "status": {
      "type": "string"
    },
    "listing": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "lat": {
          "type": [
            "number",
            "null"
          ]
        },
        "lon": {
          "type": [
            "number",
            "null"
          ]
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Listing page on bangkokvacay.com"
        },
        "area": {
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "phone": {
          "type": [
            "string",
            "null"
          ]
        },
        "photos": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "address": {
          "type": [
            "string",
            "null"
          ]
        },
        "booking": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "provider": {
                "type": "string"
              },
              "affiliate": {
                "type": "boolean"
              }
            }
          }
        },
        "website": {
          "type": [
            "string",
            "null"
          ]
        },
        "category": {
          "type": [
            "string",
            "null"
          ]
        },
        "amenities": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "price_tier": {
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": "string",
          "description": "Plain text"
        },
        "distance_km": {
          "type": "number"
        },
        "booking_link": {
          "type": [
            "string",
            "null"
          ],
          "description": "First affiliate booking link, if any"
        },
        "photo_details": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "credit": {
                "type": "string"
              },
              "source": {
                "type": "string"
              },
              "caption": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          }
        }
      }
    },
    "affiliate_disclosure": {
      "type": "string"
    }
  }
}
get_listing annotations
{
  "title": "Get listing details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_categories — List BangkokVacay categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read-only. List the BangkokVacay directory's top-level categories with listing counts.

list_categories input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_categories output schema
{
  "type": "object",
  "required": [
    "status",
    "categories"
  ],
  "properties": {
    "total": {
      "type": "integer"
    },
    "status": {
      "type": "string"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Category id; null for categories that exist only as listing group names (filter by name instead)"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "listing_count": {
            "type": "integer"
          }
        }
      }
    }
  }
}
list_categories annotations
{
  "title": "List categories",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_filters — List search filters
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read-only. Values usable in search_listings: areas/neighborhoods, price tiers, amenities and tags, each with listing counts, plus notes on how each is derived.

list_filters input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_filters output schema
{
  "type": "object",
  "required": [
    "status"
  ],
  "properties": {
    "tags": {
      "type": "array"
    },
    "areas": {
      "type": "array"
    },
    "status": {
      "type": "string"
    },
    "amenities": {
      "type": "array"
    },
    "price_tiers": {
      "type": "array"
    }
  }
}
list_filters annotations
{
  "title": "List filters",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_tours — Search Bangkok, Thailand tours and activities (Viator)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Read-only. Live search of bookable tours and activities in Bangkok, Thailand from Viator's partner API. Returns title, live starting ('from') price and currency, rating, review count, duration, free-cancellation flag, image and a booking_url. Optional start_date/end_date return only products Viator lists as available on those dates. Default order: keyword relevance when q is given, otherwise traveler rating; 'featured' uses Viator's own default order. booking_url is the Viator booking page and a Viator affiliate link: BangkokVacay may earn a commission if the user books, at no extra cost to them. Viator confirms the final price, availability and cancellation terms before payment.

search_tours input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Keywords, e.g. 'floating market', 'food tour', 'Ayutthaya'"
    },
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1
    },
    "sort": {
      "enum": [
        "relevance",
        "rating",
        "price_low",
        "price_high",
        "featured"
      ],
      "type": "string",
      "description": "Default: relevance to q when q is given (Viator keyword match), otherwise rating (highest traveler rating first). featured = Viator's own default order."
    },
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 20,
      "minimum": 1
    },
    "currency": {
      "enum": [
        "USD",
        "EUR",
        "GBP",
        "CAD",
        "AUD",
        "THB"
      ],
      "type": "string",
      "default": "USD"
    },
    "end_date": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "max_price": {
      "type": "number"
    },
    "min_rating": {
      "type": "number",
      "maximum": 5,
      "minimum": 0
    },
    "start_date": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "free_cancellation": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
search_tours output schema
{
  "type": "object",
  "required": [
    "status",
    "tours"
  ],
  "properties": {
    "total": {
      "type": "integer"
    },
    "tours": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": "string"
          },
          "affiliate": {
            "type": "boolean"
          },
          "from_price": {
            "type": "number"
          },
          "booking_url": {
            "type": "string"
          },
          "product_code": {
            "type": "string"
          },
          "review_count": {
            "type": "integer"
          }
        }
      }
    },
    "status": {
      "type": "string"
    },
    "prices_checked_at": {
      "type": "string"
    },
    "affiliate_disclosure": {
      "type": "string"
    }
  }
}
search_tours annotations
{
  "title": "Search tours (Viator)",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
239 ms
95th percentile latency
239 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 239 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http bangkokvacay-connector-mcp https://bangkokvacay-connector.michael-b38.workers.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add bangkokvacay-connector-mcp --url https://bangkokvacay-connector.michael-b38.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable bangkokvacay-connector-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "bangkokvacay-connector-mcp": {
      "url": "https://bangkokvacay-connector.michael-b38.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "bangkokvacay-connector-mcp": {
      "type": "streamableHttp",
      "url": "https://bangkokvacay-connector.michael-b38.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start bangkokvacay-connector-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "bangkokvacay-connector-mcp": {
      "type": "http",
      "url": "https://bangkokvacay-connector.michael-b38.workers.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http bangkokvacay-connector-mcp https://bangkokvacay-connector.michael-b38.workers.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://bangkokvacay-connector.michael-b38.workers.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "bangkokvacay-connector-mcp": {
      "serverUrl": "https://bangkokvacay-connector.michael-b38.workers.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like BangkokVacay Connector MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.