Flight + Stay Search MCP (TypeScript)
A TypeScript implementation of a flight & Stay search MCP server that uses the Duffel API to search for flights. This MCP server provides tools to search for one-way, round-trip, and multi-city flights.
Features
Search for one-way, round-trip, and multi-city flights
Get detailed information about specific flight offers
Specify cabin class, number of passengers, and connection preferences
Filter by departure and arrival time windows
Search for travel stays (hotels/accommodations)
Get guest reviews for a specific stay/hotel
Setup
Install dependencies:
npm installBuild the project:
npm run buildStart the server:
npm start
Environment Variables
Create a .env file with:
You can start with a test API key (duffel_test) to try the functionality.
Using with Smithery
To publish this MCP to Smithery:
To run the published MCP:
Available Tools
This MCP provides the following tools:
search_flights- Search for one-way, round-trip, or multi-city flightsget_offer_details- Get detailed information about a specific flight offersearch_multi_city- A specialized tool for multi-city flight searchessearch_stays- Search for travel stays (hotels/accommodations)get_stay_reviews- Get guest reviews for a specific stay/hotel
Example Queries
"Find flights from SFO to NYC on May 15, 2025"
"Search for a round-trip flight from LAX to LHR departing June 10 and returning June 20"
"Find business class flights from Tokyo to Paris for 2 adults"
"Get details for flight offer [offer_id]"
"Find hotels in London for 2 guests from 2025-06-10 to 2025-06-12"
"Get reviews for stay [hotel_id]"
Stays/Hotel Search and Reviews
1. Search for Stays (search_stays)
Parameters:
location(string): City, airport code, or area to search for stayscheck_in_date(string): Check-in date (YYYY-MM-DD)check_out_date(string): Check-out date (YYYY-MM-DD)guests(number): Number of guestsrooms(number, optional): Number of roomsradius_km(number, optional): Search radius in kilometers
Example Request:
Example Response:
Note: Use the hotel_id from the search results as the stay_id for reviews.
2. Get Stay Reviews (get_stay_reviews)
Parameters:
stay_id(string): The unique Duffel stay/hotel ID (from the search_stays result)after(string, optional): Pagination cursor (after)before(string, optional): Pagination cursor (before)limit(number, optional): Max reviews to return (1-200)
Example Request:
Example Response:
Local Development
For development with automatic reloading:
License
MIT
This server cannot be installed