Skip to main content
Glama

Travel MCP Server

A Model Context Protocol (MCP) server for comprehensive travel planning, providing flight search, accommodation booking, currency exchange, weather forecasting, and trip budget calculation capabilities.

Features

  • šŸ›« Flight Search: Find and compare flights with various options

  • šŸØ Accommodation Search: Search for hotels, vacation rentals, and other accommodations

  • šŸ’± Currency Exchange: Get real-time exchange rates for travel budgeting

  • šŸŒ¤ļø Weather Forecast: Check weather conditions for your travel dates

  • šŸ’° Trip Budget Calculator: Calculate and plan your travel expenses

Related MCP server: Ingrids Reisetjenester

Installation

  1. Clone the repository:

git clone <repository-url>
cd travel-mcp-server
  1. Install dependencies:

npm install
  1. Set up environment variables:

API Keys Setup

You'll need to obtain API keys from the following services:

  1. Flight API: Amadeus, Skyscanner, or similar flight data provider

  2. Accommodation API: Booking.com, Airbnb, or similar accommodation service

  3. Currency Exchange API: Fixer.io, ExchangeRate-API, or similar service

  4. Weather API: OpenWeatherMap, WeatherAPI, or similar weather service

  5. Google Places API: For attractions and restaurant recommendations

Update your .env file with these keys:

FLIGHT_API_KEY=your_flight_api_key
BOOKING_API_KEY=your_booking_api_key
EXCHANGE_API_KEY=your_exchange_api_key
WEATHER_API_KEY=your_weather_api_key
GOOGLE_PLACES_API_KEY=your_google_places_api_key

Usage

Development

Run the server in development mode with hot reload:

npm run dev

Production

Build and start the server:

npm run build
npm start

Watch Mode

Run with automatic restart on file changes:

npm run watch

Available Tools

The MCP server provides the following tools:

1. Search Flights (search_flights)

Search for flights between destinations with customizable options.

Parameters:

  • origin: Departure airport/city

  • destination: Arrival airport/city

  • departureDate: Departure date

  • returnDate: Return date (optional for one-way)

  • passengers: Number of passengers

  • class: Flight class (economy, business, first)

2. Search Accommodation (search_accommodation)

Find hotels, vacation rentals, and other accommodation options.

Parameters:

  • destination: City or location

  • checkIn: Check-in date

  • checkOut: Check-out date

  • guests: Number of guests

  • rooms: Number of rooms

  • type: Accommodation type (hotel, apartment, etc.)

3. Get Exchange Rate (get_exchange_rate)

Get current exchange rates between currencies.

Parameters:

  • from: Source currency code (e.g., USD)

  • to: Target currency code (e.g., EUR)

  • amount: Amount to convert (optional)

4. Get Weather Forecast (get_weather_forecast)

Check weather conditions for your travel destination.

Parameters:

  • location: City or location

  • date: Date for forecast

  • days: Number of days to forecast (optional)

5. Calculate Trip Budget (calculate_trip_budget)

Calculate estimated trip costs including flights, accommodation, and daily expenses.

Parameters:

  • destination: Travel destination

  • duration: Trip duration in days

  • travelers: Number of travelers

  • category: Budget category (budget, mid-range, luxury)

Project Structure

travel-mcp-server/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts              # Main server entry point
│   └── services/
│       ā”œā”€ā”€ FlightService.ts       # Flight search functionality
│       ā”œā”€ā”€ AccommodationService.ts # Accommodation search
│       ā”œā”€ā”€ CurrencyService.ts     # Currency exchange
│       └── WeatherService.ts      # Weather forecasting
ā”œā”€ā”€ dist/                     # Compiled TypeScript output
ā”œā”€ā”€ package.json             # Project dependencies and scripts
ā”œā”€ā”€ tsconfig.json           # TypeScript configuration
ā”œā”€ā”€ .env                    # Environment variables (not in repo)
ā”œā”€ā”€ .gitignore             # Git ignore rules
└── README.md              # This file

Integration with MCP Clients

This server can be used with any MCP-compatible client such as:

  • Claude Desktop

  • Other AI assistants supporting MCP

  • Custom MCP client applications

Add the server to your MCP client configuration:

{
  "mcpServers": {
    "travel-planner": {
      "command": "npx",
      "args": ["travel-mcp-server"]
    }
  }
}

Development Guide

Tech Stack

  • TypeScript: Type-safe JavaScript development

  • Node.js: Runtime environment

  • MCP SDK: Model Context Protocol implementation

  • Axios: HTTP client for API requests

  • Zod: Schema validation

  • dotenv: Environment variable management

Adding New Services

  1. Create a new service class in src/services/

  2. Implement the required methods

  3. Register the service in src/index.ts

  4. Add corresponding tools and handlers

Running Tests

npm test

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature-name

  3. Make your changes

  4. Run tests: npm test

  5. Commit your changes: git commit -m 'Add feature'

  6. Push to the branch: git push origin feature-name

  7. Submit a pull request

License

This project is licensed under the ISC License - see the LICENSE file for details.

Support

If you encounter any issues or have questions:

  1. Check the Issues section

  2. Create a new issue with detailed information

  3. Provide logs and reproduction steps

Roadmap

  • Add more travel service integrations

  • Implement caching for API responses

  • Add travel itinerary planning

  • Support for group travel coordination

  • Integration with calendar services

  • Mobile app companion


Note: Remember to keep your API keys secure and never commit them to version control. Always use environment variables for sensitive configuration.

Available Tools

5 tools
calculate_trip_budgetB

Calculate total estimated budget for a trip

ParametersJSON Schema
NameRequiredDescriptionDefault
durationYesTrip duration in days
travelersNoNumber of travelers
budgetLevelYesBudget level preference
destinationsYesList of destination cities

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It only states 'Calculate total estimated budget' without indicating side effects, required permissions, or whether it is a read-only operation. No mention of data sources or accuracy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately communicates the tool's purpose. It is efficient with no wasted words. Could be slightly more informative while maintaining brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fails to explain what the output looks like, as there is no output schema. It does not specify whether the budget includes breakdowns, currency, or assumptions. For a tool that computes a value, this is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters are described in the input schema (100% coverage). The description adds no additional meaning beyond what the schema provides. It does not clarify relationships between parameters or provide examples of valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: calculating a total estimated budget for a trip. It is distinct from sibling tools (exchange rate, weather, accommodation, flights) which cover different aspects of trip planning. However, it could be more specific about what factors into the budget (e.g., based on destinations, duration, budget level).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus siblings. However, the sibling tools are clearly in different domains (exchange rates, weather, accommodation, flights), so usage context is implied. The description lacks when-not or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_exchange_rateB

Get current currency exchange rates

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget currency code (e.g., EUR)
fromYesSource currency code (e.g., USD)
amountNoAmount to convert

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits like data freshness, authentication needs, or rate limits. It only states the basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that conveys the core purpose without any wasted words. Appropriate length for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should indicate what the tool returns (e.g., rate or converted amount), but it does not. The description is incomplete for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with parameter descriptions, but the tool description adds no additional meaning or context beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'current currency exchange rates', which is specific and distinguishes it from sibling tools like calculate_trip_budget or search_accommodation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., calculate_trip_budget might also involve conversions). No explicit when-not or context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_weather_forecastB

Get weather forecast for travel dates

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name
countryYesCountry name
endDateYesEnd date (YYYY-MM-DD)
startDateYesStart date (YYYY-MM-DD)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must carry full burden. It only states 'Get weather forecast for travel dates', omitting details like forecast period units, data source, or whether it is forecast or historical. Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no unnecessary words. Efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite simple parameters, no output schema or annotations means the description should compensate with more context (e.g., return format, temperature units, daily vs hourly). Missing details for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters have descriptions. The description adds no extra meaning beyond the schema, but the baseline is 3 for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets weather forecasts for travel dates using a specific verb ('Get') and resource ('weather forecast'). It is distinct from sibling tools which cover budget, exchange, accommodation, and flights, so no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Sibling tools are clearly different (budget, exchange, accommodation, flights), so usage is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_accommodationC

Search for hotels and accommodations

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name
budgetNoMaximum budget per night in USD
guestsNoNumber of guests
checkInYesCheck-in date (YYYY-MM-DD)
checkOutYesCheck-out date (YYYY-MM-DD)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It does not mention that the tool is read-only, what the output format is, or any side effects. This is insufficient for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It is appropriately brief but could be more informative without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks context about the tool's behavior, return values, and constraints (e.g., required parameters). Given no output schema, a more complete description is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Search for hotels and accommodations,' which clearly identifies the verb and resource. However, it lacks explicit differentiation from sibling tools, though the sibling tools are in different domains (budget, exchange rate, weather, flights).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description offers no context about prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_flightsC

Search for flight prices and schedules

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin city/airport code
departDateYesDeparture date (YYYY-MM-DD)
passengersNoNumber of passengers
returnDateNoReturn date (YYYY-MM-DD)
destinationYesDestination city/airport code

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only says 'search for flight prices and schedules'. It does not disclose any behavioral traits such as whether results are real-time, caching behavior, data sources, or limitations, which leaves the agent uninformed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and to the point, with no wasted words. It earns its place by stating the core purpose, though it could be slightly more informative without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of flight search (5 parameters, no output schema, no annotations), the description is insufficient. It does not explain the return format, round-trip behavior, or any constraints, leaving significant gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all parameters with descriptions (100% coverage). The description adds no additional meaning beyond what is already in the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for flight prices and schedules, with a specific verb and resource. While it does not explicitly distinguish from siblings, the siblings are different travel tools, making the purpose sufficiently clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description lacks context about scenarios where flight search is appropriate or when to consider other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct aspect of travel planning: budget, exchange rates, weather, accommodation, and flights. There is no overlap in purpose, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., calculate_trip_budget, search_flights), with the verb describing the action and the noun the entity, ensuring predictability.

Tool Count5/5

With 5 tools, the server is well-scoped for a travel planning assistant, covering the essential tasks without being too sparse or overwhelming.

Completeness4/5

The set covers core travel planning needs (budget, exchange, weather, flights, accommodation), leaving only minor gaps such as destination information or itinerary management, which agents can work around.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables 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.
    6
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables intelligent travel planning by combining weather forecasts and route calculations for destinations. Provides personalized travel recommendations based on weather conditions and supports trip planning with persistent conversation memory.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive travel planning copilot that provides geographic data, weather forecasts, transportation details, currency exchange rates, and contextual content to create personalized travel experiences. Enables users to plan itineraries, check real-time conditions, and gather inspirational content for destinations.
    2
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gs-ysingh/travel-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server