TRAVEL PLANNER MCP Server
Enables LLMs to perform travel-related tasks by interacting with Google Maps and travel planning services including location search, place details, and travel time calculations.
Enables LLMs to perform travel-related tasks by interacting with Google Maps and travel planning services including location search, place details, and travel time calculations.
A Travel Planner Model Context Protocol (MCP) server implementation for interacting with Google Maps and travel planning services. This server enables LLMs to perform travel-related tasks such as location search, place details lookup, and travel time calculations.
To install Travel Planner for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @GongRzhe/TRAVEL-PLANNER-MCP-Server --client claude
# Using npx (recommended)
npx @gongrzhe/server-travelplanner-mcp
# With environment variable for Google Maps API
GOOGLE_MAPS_API_KEY=your_api_key npx @gongrzhe/server-travelplanner-mcp
Or install globally:
# Install globally
npm install -g @gongrzhe/server-travelplanner-mcp
# Run after global installation
GOOGLE_MAPS_API_KEY=your_api_key @gongrzhe/server-travelplanner-mcp
Input:
query
(string): Search query for placeslocation
(optional): Latitude and longitude to bias resultsradius
(optional): Search radius in metersgetPlaceDetails
Input:
placeId
(string): Google Place ID to retrieve details forcalculateRoute
Input:
origin
(string): Starting locationdestination
(string): Ending locationmode
(optional): Travel mode (driving, walking, bicycling, transit)getTimeZone
location
: Latitude and longitude coordinatestimestamp
(optional): Timestamp for time zone calculationTo use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your claude_desktop_config.json
:
{
"mcpServers": {
"travel-planner": {
"command": "npx",
"args": ["@gongrzhe/server-travelplanner-mcp"],
"env": {
"GOOGLE_MAPS_API_KEY": "your_google_maps_api_key"
}
}
}
}
Alternatively, you can use the node command directly if you have the package installed:
{
"mcpServers": {
"travel-planner": {
"command": "node",
"args": ["path/to/dist/index.js"],
"env": {
"GOOGLE_MAPS_API_KEY": "your_google_maps_api_key"
}
}
}
}
npm install
npm run build
GOOGLE_MAPS_API_KEY
(required): Your Google Maps API key with the following APIs enabled:This MCP server is licensed under the MIT License. For more details, please see the LICENSE file in the project repository.
[
{
"description": "Creates a personalized travel itinerary based on user preferences",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"budget": {
"description": "Budget in USD",
"type": "number"
},
"destination": {
"description": "Destination location",
"type": "string"
},
"endDate": {
"description": "End date (YYYY-MM-DD)",
"type": "string"
},
"origin": {
"description": "Starting location",
"type": "string"
},
"preferences": {
"description": "Travel preferences",
"items": {
"type": "string"
},
"type": "array"
},
"startDate": {
"description": "Start date (YYYY-MM-DD)",
"type": "string"
}
},
"required": [
"origin",
"destination",
"startDate",
"endDate"
],
"type": "object"
},
"name": "create_itinerary"
},
{
"description": "Optimizes an existing itinerary based on specified criteria",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"itineraryId": {
"description": "ID of the itinerary to optimize",
"type": "string"
},
"optimizationCriteria": {
"description": "Criteria for optimization (time, cost, etc.)",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"itineraryId",
"optimizationCriteria"
],
"type": "object"
},
"name": "optimize_itinerary"
},
{
"description": "Searches for attractions and points of interest in a specified location",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"categories": {
"description": "Categories of attractions",
"items": {
"type": "string"
},
"type": "array"
},
"location": {
"description": "Location to search attractions",
"type": "string"
},
"radius": {
"description": "Search radius in meters",
"type": "number"
}
},
"required": [
"location"
],
"type": "object"
},
"name": "search_attractions"
},
{
"description": "Retrieves available transportation options between two points",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"date": {
"description": "Travel date (YYYY-MM-DD)",
"type": "string"
},
"destination": {
"description": "Destination point",
"type": "string"
},
"origin": {
"description": "Starting point",
"type": "string"
}
},
"required": [
"origin",
"destination",
"date"
],
"type": "object"
},
"name": "get_transport_options"
},
{
"description": "Searches for accommodation options in a specified location",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"budget": {
"description": "Maximum price per night",
"type": "number"
},
"checkIn": {
"description": "Check-in date (YYYY-MM-DD)",
"type": "string"
},
"checkOut": {
"description": "Check-out date (YYYY-MM-DD)",
"type": "string"
},
"location": {
"description": "Location to search",
"type": "string"
}
},
"required": [
"location",
"checkIn",
"checkOut"
],
"type": "object"
},
"name": "get_accommodations"
}
]