Amadeus MCP Server
by fiqcodes
README.md
# Amadeus MCP Server
[](https://www.npmjs.com/package/amadeus-mcp-server)
A Model Context Protocol (MCP) server that provides access to Amadeus Travel API functionality, including flights, hotels, tours, and city information with automatic USD currency conversion.
## Features
- **Flight Search**: Search for flights with detailed information (prices in USD, airlines, duration, stops)
- **City Information**: Get city details including coordinates and IATA codes
- **Tours & Activities**: Discover activities and tours by location with USD pricing
- **Hotel Search**: Find hotels with ratings and locations
- **Live Exchange Rates**: Automatic currency conversion to USD for all prices
## Prerequisites
- Node.js 18 or higher
- Amadeus API credentials (get them from [Amadeus for Developers](https://developers.amadeus.com/))
## Installation
### Install from npm
```bash
npm install -g @fiqcodes/amadeus-mcp-server
```
### Install from source
```bash
# Clone the repository
git clone https://github.com/fiqcodes/amadeus-mcp-server.git
cd amadeus-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
# Link globally (optional)
npm link
```
## Configuration
### 1. Get Amadeus API Credentials
1. Go to [Amadeus for Developers](https://developers.amadeus.com/)
2. Sign up or log in
3. Create a new app in the dashboard
4. Copy your API Key and API Secret
### 2. Configure Claude Desktop
Add the server to your Claude Desktop configuration file:
**On macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**On Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
**On Linux**: `~/.config/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"amadeus": {
"command": "amadeus-mcp-server",
"env": {
"AMADEUS_API_KEY": "your_api_key_here",
"AMADEUS_API_SECRET": "your_api_secret_here"
}
}
}
}
```
Or if running from source:
```json
{
"mcpServers": {
"amadeus": {
"command": "node",
"args": ["/absolute/path/to/amadeus-mcp-server/build/index.js"],
"env": {
"AMADEUS_API_KEY": "your_api_key_here",
"AMADEUS_API_SECRET": "your_api_secret_here"
}
}
}
}
```
### 3. Restart Claude Desktop
Completely quit and reopen Claude Desktop for the changes to take effect.
## Available Tools
### 1. get_flights
Search for flight offers between cities. All prices returned in USD.
**Parameters**:
- `origin` (required): Origin airport IATA code (e.g., "JFK", "CGK")
- `destination` (required): Destination airport IATA code (e.g., "LAX", "DPS")
- `departureDate` (required): Departure date (YYYY-MM-DD)
- `returnDate` (optional): Return date for round trips (YYYY-MM-DD)
- `adults` (optional): Number of adults (default: 1)
- `travelClass` (optional): ECONOMY, PREMIUM_ECONOMY, BUSINESS, FIRST
- `maxResults` (optional): Max results to return (default: 5)
**Example with Claude**:
```
Find me flights from Jakarta (CGK) to Bali (DPS) on January 20, 2026
```
### 2. get_city
Get information about a city including name, country, IATA code, and geographic coordinates.
**Parameters**:
- `cityName` (required): Name of the city
**Example with Claude**:
```
Get information about Tokyo
```
### 3. get_tours_activities
Search for tours and activities by location. Prices automatically converted to USD.
**Parameters**:
- `latitude` (required): Latitude coordinate
- `longitude` (required): Longitude coordinate
- `radius` (optional): Search radius in km (default: 1)
**Example with Claude**:
```
Find activities in Paris at coordinates 48.8566, 2.3522
```
### 4. get_hotels
Search for hotels in a city using IATA code.
**Parameters**:
- `cityCode` (required): City IATA code (e.g., "PAR", "NYC", "LON")
- `checkInDate` (optional): Check-in date (YYYY-MM-DD)
- `checkOutDate` (optional): Check-out date (YYYY-MM-DD)
- `adults` (optional): Number of guests (default: 1)
- `radius` (optional): Search radius (default: 5)
- `radiusUnit` (optional): KM or MILE (default: KM)
- `ratings` (optional): Filter by ratings (e.g., "3,4,5")
- `priceRange` (optional): Price range (e.g., "50-200")
**Example with Claude**:
```
Find hotels in Paris for March 15-20, 2026
```
## Usage with Claude
Once configured, you can ask Claude naturally:
- "Find cheap flights from New York to London next month"
- "Show me activities in Tokyo"
- "What hotels are available in Paris for my trip?"
- "Get me flight options from Jakarta to Singapore on January 25th"
Claude will automatically use the appropriate tools and present the results in a user-friendly format.
## Development
### Running in development mode
```bash
npm run dev
```
This will watch for changes and rebuild automatically.
### Testing the server
Test the API integration:
```bash
export AMADEUS_API_KEY="your_key"
export AMADEUS_API_SECRET="your_secret"
npm run build && node build/test-amadeus.js
```
### Using MCP Inspector
```bash
npx @modelcontextprotocol/inspector node build/index.js
```
## Currency Conversion
The server automatically fetches live exchange rates from exchangerate-api.com and caches them for 24 hours. All non-USD prices are converted and returned with both original and USD amounts:
```json
{
"price": {
"amount": "199.0",
"currencyCode": "EUR",
"usdAmount": 218.90,
"originalAmount": 199.0,
"originalCurrency": "EUR"
}
}
```
## Project Structure
```
amadeus-mcp-server/
├── src/
│ ├── index.ts # Main server implementation
│ └── test-amadeus.ts # Test script
├── build/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
├── README.md
└── .gitignore
```
## Troubleshooting
### "Authentication failed"
- Verify your API key and secret are correct
- Check if the environment variables are properly set in Claude config
- Ensure you're using valid Amadeus credentials (test or production)
### "Tool not found" or tools not showing
- Make sure the server is properly configured in `claude_desktop_config.json`
- Verify the path is absolute (not relative)
- Restart Claude Desktop completely (quit and reopen)
- Check Claude logs: Help → View Logs
### "Rate limit exceeded"
- Amadeus test API has rate limits (free tier)
- Wait a few minutes before retrying
- Consider upgrading to production API for higher limits
### Build errors
```bash
rm -rf node_modules package-lock.json build
npm install
npm run build
```
## API Documentation
For more details about the Amadeus API:
- [Flight Offers Search](https://developers.amadeus.com/self-service/category/flights/api-doc/flight-offers-search)
- [Hotel Search](https://developers.amadeus.com/self-service/category/hotels/api-doc/hotel-search)
- [Tours and Activities](https://developers.amadeus.com/self-service/category/destination-experiences/api-doc/tours-and-activities)
- [City Search](https://developers.amadeus.com/self-service/category/destination-experiences/api-doc/city-search)
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
**Note**: This MCP server uses the Amadeus Test API by default. For production use, update the `BASE_URL` in the code to `https://api.amadeus.com` and use production credentials.TDQS
A4/5.0
Scored across 4 tools
Disambiguation5/5
Each tool targets a distinct travel domain: flights, city info, tours/activities, and hotels. There is no overlap in their intended purposes.
Naming Consistency5/5
All tool names follow the consistent get_<noun> pattern, making the interface predictable and easy to navigate.
Tool Count5/5
With 4 tools, the set is well-scoped for a travel search server. Each tool serves a clear and essential function without redundancy or bloat.
Completeness4/5
The tools cover the main search needs for travel (flights, hotels, activities, and city info). However, they are all read-only and lack booking or management capabilities, which would be a natural next step for a full travel service.
Maintenance
ActivityInactive
ResponsivenessNo issues