Skip to main content
Glama
ExpediaGroup

expedia-travel-recommendations-mcp

Official
by ExpediaGroup
README.md
# 🌍 Expedia Travel Recommendations MCP Server

This project provides an **MCP (Model Context Protocol)** server that exposes Expedia Travel Recommendations (hotels, flights, activities, and cars) via both **stdio** and **streamable-http** protocolsβ€”ideal for LLM integrations and web-based applications.

---

## ✨ Features

- πŸ”Œ MCP server integration for Expedia's travel recommendation APIs  
- πŸ“¦ Supports both `stdio` and `streamable-http` protocols  
- 🏨 Hotel, ✈️ Flight, πŸ—ΊοΈ Activity, and πŸš— Car rental recommendations  
- πŸ” API key-based secure access  

---

## πŸ›  Prerequisites

- Python **3.11+**
- Expedia **API key**

---

## ⚑ Running the MCP Server

### Run with `stdio` protocol (LLM Integration)

```bash
export EXPEDIA_API_KEY="your_api_key_here"
uvx expedia_travel_recommendations_mcp --protocol "stdio"
```

### Run with `streamable-http` protocol (Web Clients)

```bash
export EXPEDIA_API_KEY="your_api_key_here"
uvx expedia_travel_recommendations_mcp --protocol "streamable-http"
```

> Access it at: `http://0.0.0.0:9900/mcp`

---

## 🐳 Running with Docker

### Using Docker Compose (Recommended)

```bash
docker run \
  -p 9900:9900 \
  -e EXPEDIA_API_KEY=your_api_key_here \
  expediagroup/expedia-travel-recommendations-mcp
```

> Accessible at: `http://0.0.0.0:9900/mcp`

---

## βš™οΈ MCP Client Configuration

### Using streamable-http (Recommended)

```json
{
  "mcpServers": {
    "expedia-recommendation": {
      "url": "http://localhost:9900/mcp"
    }
  }
}
```

### Using stdio
```json
{
	"mcpServers": {
	 "expedia-travel-recommendations": { 
	   "command": "uvx", 
	   "args": [
	     "expedia_travel_recommendations_mcp", 
	     "--protocol", 
	     "stdio" 
	   ],
	   "env": { 
	     "EXPEDIA_API_KEY": "your_api_key_here" 
	   }
	 }
	}
}
```

---

## πŸ§ͺ Example Query (Hotel)

```json
{
  "query": {
    "destination": "Seattle",
    "check_in": "2025-05-01",
    "check_out": "2025-05-05",
    "property_types": ["HOTEL", "RESORT"],
    "amenities": ["POOL", "SPA"],
    "guest_rating": "WONDERFUL",
    "sort_type": "CHEAPEST"
  }
}
```

---

## πŸ”— API Endpoints

> These are exposed when using the `streamable-http` protocol.

- `POST /expedia/hotels` β†’ Hotel recommendations  
- `POST /expedia/flights` β†’ Flight recommendations  
- `POST /expedia/activities` β†’ Activity recommendations  
- `POST /expedia/cars` β†’ Car rental recommendations  

---

## πŸ§‘β€πŸ’» Example Clients

See the `examples/` folder for client scripts.

### 1️⃣ stdio-based Client

Make sure the virtual env is activated (`install.sh` must be run first):

```bash
source install_env/bin/activate
python examples/mcp_client_stdio.py
```

### 2️⃣ streamable-http Client

Ensure MCP server is running:

```bash
python examples/mcp_client_streamable_http.py
```

---

## πŸ“„ License

Licensed under the [Apache License 2.0](LICENSE).