TRAVEL PLANNER MCP Server

Local 2025-08-31 23:43:19 0

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.


smithery badge

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.

Travel Planner Server MCP server

Installation & Usage

Installing via Smithery

To install Travel Planner for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @GongRzhe/TRAVEL-PLANNER-MCP-Server --client claude

Installing Manually

# 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

Components

Tools

  • searchPlaces
  • Search for places using Google Places API
  • Input:

    • query (string): Search query for places
    • location (optional): Latitude and longitude to bias results
    • radius (optional): Search radius in meters
  • getPlaceDetails

  • Get detailed information about a specific place
  • Input:

    • placeId (string): Google Place ID to retrieve details for
  • calculateRoute

  • Calculate route between two locations
  • Input:

    • origin (string): Starting location
    • destination (string): Ending location
    • mode (optional): Travel mode (driving, walking, bicycling, transit)
  • getTimeZone

  • Get timezone information for a location
  • Input:
    • location: Latitude and longitude coordinates
    • timestamp (optional): Timestamp for time zone calculation

Configuration

Usage with Claude Desktop

To 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"
      }
    }
  }
}

Development

Building from Source

  1. Clone the repository
  2. Install dependencies:
    npm install
  3. Build the project:
    npm run build

Environment Variables

  • GOOGLE_MAPS_API_KEY (required): Your Google Maps API key with the following APIs enabled:
  • Places API
  • Directions API
  • Geocoding API
  • Time Zone API

License

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"
  }
]