Skip to main content
Glama
tehprof

TehProf Booking MCP Server

by tehprof
README.md
# TehProf Booking MCP Server

> Reservations & online scheduling via [Model Context Protocol](https://modelcontextprotocol.io). Connect any MCP-compatible assistant (Claude, ChatGPT, Cursor, Cline) to a live booking system — check real-time availability and create reservations, no custom integration code.

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![MCP Protocol](https://img.shields.io/badge/MCP-2025--06--18-blue)](https://modelcontextprotocol.io)
[![Node](https://img.shields.io/badge/node-%E2%89%A5%2020-brightgreen)](package.json)
[![Transport: HTTP](https://img.shields.io/badge/transport-Streamable%20HTTP-green)](https://spec.modelcontextprotocol.io/specification/basic/transports/)
[![Tools](https://img.shields.io/badge/tools-8-blueviolet)](#tools)
[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-kz.tehprof.booking%2Freservations-orange)](https://registry.modelcontextprotocol.io/v0.1/servers?search=kz.tehprof.booking)

**TehProf Booking** ([booking.tehprof.kz](https://booking.tehprof.kz/lp)) is a SaaS reservation and online-scheduling platform for hotels, resorts, nightly rentals, salons, clinics and real-estate agencies — a single resource calendar with money tracking, a public booking page, an embeddable widget and native Bitrix24 integration. This server exposes **8 AI tools** over the platform's public REST API.

Zero installation: use the hosted endpoint at `https://booking.tehprof.kz/mcp`.

Published in the **official MCP Registry** as [`kz.tehprof.booking/reservations`](https://registry.modelcontextprotocol.io/v0.1/servers?search=kz.tehprof.booking).

## Quick Start

**Claude Code:**

```bash
claude mcp add --transport http tehprof-booking https://booking.tehprof.kz/mcp
```

**Claude Desktop / other MCP clients** (Streamable HTTP):

```json
{
  "mcpServers": {
    "tehprof-booking": {
      "type": "streamable-http",
      "url": "https://booking.tehprof.kz/mcp"
    }
  }
}
```

With an API key (enables reservation management):

```json
{
  "mcpServers": {
    "tehprof-booking": {
      "type": "streamable-http",
      "url": "https://booking.tehprof.kz/mcp",
      "headers": { "Authorization": "Bearer bk_live_..." }
    }
  }
}
```

## Tools

Anonymous (by a company's public slug — e.g. the slug from its public booking page `booking.tehprof.kz/p/<slug>/`):

| Tool | What it does |
|------|--------------|
| `get_branding` | Company profile: name, tagline, contacts, branding |
| `list_resources` | Bookable resources (rooms, cabins, specialists, properties) with pricing info |
| `list_groups` | Resource groups/categories |
| `check_availability` | Real-time availability for a resource and date range |

With an API key `bk_live_...` (issued in the Booking developer portal, scoped per tenant):

| Tool | What it does |
|------|--------------|
| `create_reservation` | Create a reservation (guest name, phone, dates) |
| `list_reservations` | List reservations with filters |
| `get_reservation` | Reservation status by id |
| `cancel_reservation` | Cancel a reservation |

## Server Discovery

- Discovery card: [`https://booking.tehprof.kz/.well-known/mcp.json`](https://booking.tehprof.kz/.well-known/mcp.json)
- AI manifest: [`https://booking.tehprof.kz/llms.txt`](https://booking.tehprof.kz/llms.txt) · extended: [`/llms-full.txt`](https://booking.tehprof.kz/llms-full.txt)
- REST API docs (Redoc): [`https://booking.tehprof.kz/api/public/v1/docs`](https://booking.tehprof.kz/api/public/v1/docs)
- OpenAPI 3.1 contract: [`https://booking.tehprof.kz/api/public/v1/openapi.json`](https://booking.tehprof.kz/api/public/v1/openapi.json)

## Architecture

This server is a thin, stateless Streamable HTTP wrapper over the Booking **public REST API** (`/api/public/v1`). It holds no data and no secrets:

- **Bearer pass-through** — your `bk_live_` API key is never validated or stored by the MCP layer; it is forwarded to the REST API, where tenant isolation and scopes are enforced.
- Anonymous tools work without any key.
- DNS-rebinding protection, loopback-bound upstream, no `Authorization` logging.

```
MCP client ──Streamable HTTP──▶ booking-mcp ──HTTPS──▶ Booking public REST API
                                (this repo)            (auth, scopes, tenant isolation)
```

## Self-Hosting

The hosted endpoint is the recommended way to use this server. Running your own copy is mostly useful for development:

```bash
npm ci && npm run build
BOOKING_API_URL=https://booking.tehprof.kz MCP_HOST=0.0.0.0 npm start
```

Or with Docker:

```bash
docker build -t booking-mcp .
docker run -p 8107:8107 booking-mcp
```

Environment variables: `MCP_PORT` (default 8107), `MCP_HOST` (default 127.0.0.1), `MCP_PUBLIC_URL`, `BOOKING_API_URL`.

## Security

- The MCP layer is read-only with respect to credentials: keys pass through to the REST API.
- Reservation writes require an API key with the `reservations:write` scope; keys are tenant-scoped.
- Anonymous surface exposes only what a company already publishes on its public booking page.

## License

[MIT](LICENSE) © TehProf.kz