Skip to main content
Glama
MyatThuta158

Hotel Booking MCP Server

by MyatThuta158
README.md
# šŸØ Hotel Booking MCP Server

An **MCP (Model Context Protocol) server** that connects AI assistants like Claude to a **Microsoft SQL Server** hotel booking database. It exposes hotel data as tools that Claude can call naturally in conversation.

---

## šŸ“‹ Features

| Tool | Description |
|---|---|
| `get_all_customers` | Fetch all registered customers |
| `get_all_rooms` | Fetch all rooms with full details |
| `get_available_rooms` | Fetch only rooms with `Available` status |
| `get_all_bookings` | Fetch all bookings with customer & room info |
| `get_active_bookings` | Fetch only `Confirmed` and `Pending` bookings |

---

## šŸ› ļø Tech Stack

- **Python** 3.12+
- **MCP Python SDK** v2.0.0 (`mcp`)
- **pyodbc** — Microsoft SQL Server driver
- **uv** — Fast Python package & project manager
- **SQL Server** with ODBC Driver 17

---

## āš™ļø Prerequisites

1. **Python 3.12+** installed
2. **uv** installed — [Install uv](https://docs.astral.sh/uv/getting-started/installation/)
3. **ODBC Driver 17 for SQL Server** installed — [Download here](https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server)
4. **SQL Server** running locally with the `HotelBookingSystem` database

---

## šŸ—„ļø Database Setup

The server connects to a local SQL Server database using Windows Authentication (Trusted Connection).

**Connection string used:**
```
Driver={ODBC Driver 17 for SQL Server}
Server=localhost
Database=HotelBookingSystem
Trusted_Connection=yes
```

**Required tables:**
- `Customers` — CustomerID, FirstName, LastName, Email, PhoneNumber, City, Country
- `Rooms` — RoomID, RoomNumber, RoomType, Floor, Capacity, PricePerNight, Amenities, Status
- `Bookings` — BookingID, CustomerID, RoomID, CheckInDate, CheckOutDate, TotalPrice, BookingStatus, PaymentStatus

---

## šŸš€ Getting Started

### 1. Clone the repository

```bash
git clone <your-repo-url>
cd HotelBookingMCP
```

### 2. Create virtual environment and install dependencies

```bash
uv sync
```

### 3. Run the MCP server (stdio mode)

```bash
uv run python main.py
```

### 4. Test with the MCP Inspector

```bash
uv run mcp dev main.py
```

Then open the URL shown in the terminal (e.g. `http://localhost:6274`) in your browser.

---

## šŸ¤– Connecting to Claude Desktop

### Option A — Automatic install (recommended)

```bash
uv run mcp install main.py
```

### Option B — Manual config

Edit `%APPDATA%\Claude\claude_desktop_config.json` and add:

```json
{
  "mcpServers": {
    "Hotel Booking MCP Server": {
      "command": "C:\\Users\\<YOUR_USERNAME>\\.local\\bin\\uv.EXE",
      "args": [
        "run",
        "--project",
        "D:\\Path\\To\\HotelBookingMCP",
        "python",
        "D:\\Path\\To\\HotelBookingMCP\\main.py"
      ]
    }
  }
}
```

> āš ļø Replace `<YOUR_USERNAME>` and the paths with your actual values.

After updating the config, **fully restart Claude Desktop** for the changes to take effect.

---

## šŸ”§ Connecting to Claude Code (CLI)

```bash
claude mcp add hotel-booking-mcp -- uv run python main.py
```

---

## šŸ“ Project Structure

```
HotelBookingMCP/
ā”œā”€ā”€ main.py              # MCP server with all tools
ā”œā”€ā”€ pyproject.toml       # Project metadata & dependencies
ā”œā”€ā”€ .python-version      # Python version pin
ā”œā”€ā”€ .gitignore
└── README.md
```

---

## šŸ“ Example Claude Prompts

Once connected, you can ask Claude things like:

- *"Show me all available rooms"*
- *"List all active bookings"*
- *"Which customers are from Yangon?"*
- *"What rooms are available and what are their prices?"*

---

## 🪪 License

MIT