travel-mcp-server
Integrates with Google Maps API for location-based services, such as distance calculations and nearby places.
Integrates with Booking.com API via RapidAPI to search for flights and hotels.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@travel-mcp-server I need a flight to London and a hotel near Big Ben."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
โ๏ธ Multi Context Protocol (MCP) Server
๐ Overview
This is a generalized travel mcp server that allows you to ask complex travel planning questions. Try the following
I need to be at the Google office tomorrow by 4pm. What is the latest flight I need to take?
I would like to stay at a reasonably priced hotel 15 minutes walk from the Eiffel tower, recommend some options.
Related MCP server: MCP Travel Concierge Server
๐ง Supported Functions
๐ซ search-flights
Searches for available flights between two airports via Booking.com's API.
๐
today
Provides the current date to the LLM, ensuring it has up-to-date temporal context.
๐จ search-hotels
Search for available hotels and accommodations.
๐ฎ Features to Come
๐ search-car-rentals
Find car rental options at your destination.
โญ hotel-reviews
Access reviews for hotels and accommodations.
๐ search-taxis
Find taxi and transfer services at your destination.
๐ฆ Installation
This MCP server can be used with either Claude Desktop or your own client.
Pre-requisites
Go to RapidAPI, and look for the booking.com API. Issue yourself a key
Go to google cloud and issue yourself a Google Maps API key.
Use with Claude Desktop
In order to work with Claude Desktop, use the below claude_desktop_config.json
{
"mcpServers": {
"travel": {
"command": "npx",
"args": ["travel-mcp-server"],
"env": {
"BOOKING_COM_API_KEY": "<YOUR_BOOKING_DOT_COM_API_KEY>"
}
},
"google-maps": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GOOGLE_MAPS_API_KEY",
"mcp/google-maps"
],
"env": {
"GOOGLE_MAPS_API_KEY": "<YOUR_GOOGLE_MAPS_API_KEY>"
}
}
}
}You will need to go get a google maps API key in order to use this.
Programmatic Use
If you want to use this programmatically, here is a code snippet.
class TravelClient {
private flightsClient: Client;
private mapsClient: Client;
private toolDefinitions: any[] = [];
constructor() {
this.flightsClient = new Client(
{ name: "FlightsApp", version: "1.0.0" },
{ capabilities: { tools: {}, resources: {}, prompts: {} } }
);
this.mapsClient = new Client(
{ name: "MapsApp", version: "1.0.0" },
{ capabilities: { tools: {}, resources: {}, prompts: {} } }
);
}
async initialize() {
console.log("Initializing MCP clients...");
try {
const flightsTransport = new StdioClientTransport({
command: "node",
args: ["../../node_modules/travel-mcp-server/build/index.js"],
});
console.log("GOOGLE MAPS API KEY", process.env.GOOGLE_MAPS_API_KEY);
const mapsTransport = new StdioClientTransport({
command: process.execPath,
args: [
"../../node_modules/@modelcontextprotocol/server-google-maps/dist/index.js",
],
env: {
GOOGLE_MAPS_API_KEY: process.env.GOOGLE_MAPS_API_KEY || "",
},
});
await Promise.all([
this.flightsClient.connect(flightsTransport),
this.mapsClient.connect(mapsTransport),
]);
// Discover tools from both servers
console.log("Discovering tools...");
const [flightsTools, mapsTools] = await Promise.all([
this.flightsClient.listTools(),
this.mapsClient.listTools(),
]);
// Combine tools from both servers
this.toolDefinitions = [
...flightsTools.tools.map((tool) => ({
name: tool.name,
description: tool.description || `Tool: ${tool.name}`,
input_schema: tool.inputSchema,
})),
...mapsTools.tools.map((tool) => ({
name: tool.name,
description: tool.description || `Tool: ${tool.name}`,
input_schema: tool.inputSchema,
})),
];
console.log(`Discovered ${this.toolDefinitions.length} tools`);
return this;
} catch (error) {
console.error("Error initializing MCP clients:", error);
throw error;
}
}
async callTool(toolName: string, parameters: any) {
const tool = this.toolDefinitions.find((t) => t.name === toolName);
if (!tool) {
throw new Error(`Tool ${toolName} not found`);
}
// Determine which client to use based on the tool name
const client = toolName.includes("maps")
? this.mapsClient
: this.flightsClient;
const toolRequest = {
name: toolName,
arguments: parameters,
};
const result = await client.callTool(toolRequest);
return result;
}
async getToolDefinitions() {
return this.toolDefinitions;
}
}
export default TravelClient;Available Tools
3 toolssearch-flightsC
search for flights
Inputs: to (required), from (required), sort (required), cabinClass (required), +2 more.
search-hotels-by-coordinatesC
search for hotels by geographic coordinates
Inputs: latitude (required), longitude (required), arrivalDate (required), departureDate (required), +7 more.
todayA
get today's date
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogโฆ
TDQS
Scored across 3 tools
Each tool addresses a distinct purpose: today provides the current date, search-flights looks up flight options, and search-hotels-by-coordinates finds hotels by geographic location. There is no overlap or ambiguity between these tools.
The two search tools follow a verb_noun pattern (search-flights, search-hotels-by-coordinates), but 'today' breaks this convention, being a simple noun with no verb. This mixed naming style is inconsistent, though the search tools themselves are clear.
With 3 tools, the server is at the lower end of what is considered reasonable for its domain. The tools are focused on search functionality, but the count is slightly thin for a travel server, missing other common actions like booking or trip details.
The server covers only flight search and hotel search by coordinates, lacking essential travel operations such as hotel search by city or landmark, flight status, booking, or itinerary management. The 'today' tool is also unrelated to travel, making the overall surface appear incomplete and somewhat disjointed.
Maintenance
Related MCP Connectors
Your personal AI travel concierge โ flights, hotels, 116M+ POIs, visas, weather & more
Give AI assistants access to real-time data. Search the web, compare flights, find hotels, and more.
Personal AI travel agent. Points optimization, live flight/hotel/award search, trip planning.
Live hotel search and booking for AI agents in DACH, the UK and 10 US cities.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables LLMs to perform travel-related tasks by interacting with Google Maps and travel planning services including location search, place details, and travel time calculations.544 npm98MIT
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive travel planning by integrating Google Travel Services and Amadeus GDS for dual flight and hotel searches, plus event discovery, weather forecasting, currency conversion, and location services. Combines consumer-friendly search with professional travel industry data for optimal trip planning.6MIT
- AlicenseAqualityDmaintenanceEnables comprehensive travel planning by providing tools for flight and accommodation searches, real-time currency exchange, and weather forecasting. It also allows users to calculate estimated trip budgets based on destination, duration, and traveler preferences.514 npm16MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates multiple search APIs (Google Search, Maps, Flights, Hotels) through the Model Context Protocol and Agent-to-Agent protocol, enabling AI assistants to perform diverse searches via natural language queries.MIT