Skip to main content
Glama
Nandhinimahadev

mcp-hotel-booking-agent

README.md
# mcp-hotel-booking-agent
<img width="1901" height="747" alt="image" src="https://github.com/user-attachments/assets/0754b0df-f5a3-44d1-813b-ecdaf10c0fdc" />


A hotel booking assistant built with the [Model Context Protocol](https://modelcontextprotocol.io/) (MCP). A FastMCP server exposes hotel search/booking tools over stdio, and a Streamlit chat client drives an agent loop with Claude (Anthropic) to call those tools on the user's behalf.

## Project structure

```
mcp-hotel-booking-agent/
├── server/
│   ├── mcp_server.py        
│   └── data/
│       ├── hotels.json      # mock data
│       └── bookings.json    
├── client/
│   └── app.py               
├── requirements.txt
├── .env                     
└── README.md
```

## Tools exposed by the MCP server

| Tool | Description |
| --- | --- |
| `search_hotels` | Search hotels by city with rooms free for given dates |
| `get_hotel_details` | Get full details for a hotel by id |
| `check_availability` | Check if a hotel has enough free rooms for a date range |
| `book_hotel` | Create a new booking |
| `get_booking` | Look up a booking by id |
| `cancel_booking` | Cancel an existing booking |

## Setup

1. Create and activate a virtual environment (recommended):
   ```run
   python -m venv .venv
   .venv\Scripts\Activate.ps1
   ```
2. Install dependencies:
   ```run
   pip install -r requirements.txt
   ```
3. Add your Anthropic API key to `.env` create your .env file:
   ```
   ANTHROPIC_API_KEY=your_anthropic_api_key_here
   ```

## Running

The Streamlit client launches the MCP server
```run
streamlit run client/app.py
```

Then chat with the assistant, e.g.:
- "Find hotels in goaunder budget 3000"
- "Book the Sunset Beach Resort for John Smith, same dates, 1 room"

### Optional: run the MCP server standalone

Useful for quick manual testing/debugging with an MCP inspector:
```run
python server/mcp_server.py
```

## Notes

- `server/data/hotels.json` is static mock data;
  `server/data/bookings.json` is created/updated automatically as bookings are made 
- Never commit your real `.env` file or API key.