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.
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues