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