MC

MCP-Amadeus MCP Server for Flight Offers

Search flights with the MCP-Amadeus MCP server integrating Amadeus Flight Offers Search API for natural-language queries from MCP-compatible clients.

Quick Install
npx -y @donghyun-chae/mcp-amadeus

Overview

MCP-Amadeus is a community-developed Model Context Protocol (MCP) server that connects MCP-compatible clients to the Amadeus Flight Offers Search API. It exposes a simple tool interface so an LLM-based assistant (for example, Claude Desktop) can handle natural-language flight search requests and return structured flight offers from Amadeus.

This server is helpful when you want to combine conversational AI with real-time flight data: users can ask in plain English (e.g., “nonstop flights from JFK to LHR on June 15 for 1 adult”) and the assistant will invoke the Amadeus API via MCP to fetch matching flight options. The project uses the official amadeus-python SDK and runs as a local MCP server process that your client can call as a tool.

Note: This project is open-source and not affiliated with or endorsed by Amadeus IT Group. Amadeus® is a registered trademark of Amadeus IT Group.

Features

  • Flight Offers Search via Amadeus Flight Offers Search API
  • Natural-language integration: MCP tool enables assistants to translate user intent into API queries
  • Support for one-way and round-trip searches (departure/return dates)
  • Passenger configuration (adults, children, infants) and cabin class
  • Optional filters: non-stop, currency, max price, and maximum number of results
  • Returns structured JSON with airlines, times, durations, and pricing details
  • Easy to register with MCP-compatible clients (e.g., Claude Desktop)

Installation / Configuration

Prerequisites: Python environment, Amadeus developer account (Client ID & Client Secret), and an MCP-compatible client.

  1. Install via Smithery (automated for Claude Desktop)
npx -y @smithery/cli install @donghyun-chae/mcp-amadeus --client claude
  1. Clone and install manually
git clone https://github.com/donghyun-chae/mcp-amadeus.git
cd mcp-amadeus
# install Python dependencies (project uses uv for launching locally)
pip install -r requirements.txt
# or use the project's helper if provided:
uv sync
  1. Configure environment variables

Copy the example env file and add your Amadeus credentials:

cp .env.example .env

Edit .env:

AMADEUS_CLIENT_ID=your_client_id
AMADEUS_CLIENT_SECRET=your_client_secret
# Optional: override behavior (see repo README for additional variables)

Create an Amadeus app and obtain credentials at: https://developers.amadeus.com/.

  1. Register the server with your MCP client

Example configuration for Claude Desktop (path and uv binary will vary):

{
  "mcpServers": {
    "amadeus": {
      "command": "/ABSOLUTE/PATH/TO/uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/mcp-amadeus/src/",
        "run",
        "--env-file",
        "/ABSOLUTE/PATH/TO/mcp-amadeus/.env",
        "server.py"
      ]
    }
  }
}

Replace paths with your actual locations. Start the server and connect your client so the tool becomes available to the assistant.

Available Tools

get_flight_offers — Fetch flight offers from Amadeus

Request (tool invocation from MCP client):

{
  "action": "tool",
  "name": "get_flight_offers",
  "params": {
    "origin": "JFK",
    "destination": "LHR",
    "departure_date": "2025-06-15"
  }
}

Parameters

NameTypeRequiredDescription
originstringYesIATA code of departure airport (e.g., JFK)
destinationstringYesIATA code of arrival airport (e.g., LHR)
departure_datestringYesDeparture date in YYYY-MM-DD
return_datestringNoReturn date in YYYY-MM-DD (omit for one-way)
adultsintegerYesNumber of adults (1–9). Default: 1
childrenintegerNoNumber of children (2–11)
infantsintegerNoNumber of infants (≤2)
travel_classstringNoCabin: ECONOMY, PREMIUM_ECONOMY, BUSINESS, FIRST
non_stopbooleanNotrue to require non-stop flights
currency_codestringNoISO 4217 currency code (e.g., USD)
max_priceintegerNoMax price per traveler
maxintegerNoMax number of offers to return (default 250)

Output: JSON array of flight offers returned by the Amadeus API. Each offer typically includes itinerary segments, departure/arrival times, airline codes, duration, and price breakdown.

Minimal sample response (simplified):

[
  {
    "id": "1",
    "itineraries": [
      {
        "segments": [
          {
            "departure": {"iataCode": "JFK", "at": "2025-06-15T19:00"},
            "arrival": {"iataCode": "LHR", "at": "2025-06-16T07:00"},
            "carrierCode": "BA",
            "duration": "PT7H"
          }
        ]
      }
    ],
    "price": {"currency": "USD", "total": "650.00"}
  }
]

Use Cases

  • Conversational travel assistant: Let users request flights in plain language (dates, airlines, nonstop) and return structured options for the assistant to present or compare.
  • Backend integration for travel chatbots: Use MCP-Amadeus as a tool endpoint so your LLM can call it as needed without embedding credentials in prompts.
  • Rapid prototyping: Experiment with itinerary filters (cabin class, stops, max price) from an LLM-driven workflow.
  • Multi-step planning flows: Combine flight searches with hotel or car rental tools in an MCP-enabled assistant to build end-to-end travel itineraries.

Example natural-language prompt handled by the assistant: “I’m looking for nonstop flights from New York (JFK) to London (LHR) on 2025-06-15 for 1 adult, economy — show top 5 cheapest.”

The assistant translates this into a get_flight_offers invocation and returns a list of offers the user can select from.

References & License

  • Amadeus Python SDK: https://github.com/amadeus4dev/amadeus-python
  • Model Context Protocol (MCP): https://github.com/modelcontextprotocol
  • Amadeus API docs: https://developers.amadeus.com/

License: MIT License. See the repository for full details.

Tags:search