Partner Booking MCP Server
by s0ham075
README.md
# Partner Booking MCP Server (demo external agent)
A tiny, self-contained **external MCP server** that simulates a *third-party vendor's*
appointment-booking agent. Point your platform's agent at its public URL to demonstrate
**real-time agent-to-agent interoperability** — your agent orchestrating and exchanging
tasks/context with an AI capability that is **not hosted on your platform**.
Transport: **Streamable HTTP** (stateless), so it deploys to any Node host and is reachable
as a normal HTTPS endpoint.
## Tools exposed
| Tool | What it does |
|------|--------------|
| `check_availability` | Open slots for a service + date |
| `book_appointment` | Books a slot, returns a confirmation id |
| `cancel_appointment` | Cancels by confirmation id, frees the slot |
| `list_appointments` | Lists bookings (optional customer filter) |
Services seeded: `haircut`, `dental-checkup`, `car-service`, `consultation`.
Dates seeded: `2026-07-27`, `2026-07-28`, `2026-07-29`. (In-memory — resets on restart.)
## Run locally
```bash
npm install
npm start # -> http://localhost:3000/mcp
```
Quick smoke test:
```bash
curl -X POST http://localhost:3000/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
```
## Deploy to a public URL
**Render** (easiest — `render.yaml` included):
1. Push this folder to a GitHub repo.
2. Render → New → Blueprint → pick the repo. It reads `render.yaml`.
3. You get a URL like `https://partner-booking-mcp.onrender.com`.
Your MCP endpoint is **`https://.../mcp`**.
**Railway / Fly / Cloud Run:** same idea — Node app, start command `node server.js`,
expose `$PORT`. A `Dockerfile` is included if the host prefers containers.
> Free Render instances sleep when idle. Hit the URL once ~30s before the demo to wake it.
## Connect it to your platform (the demo moment)
Register it as a **remote MCP server** in whatever your platform uses:
- **Endpoint / URL:** `https://<your-host>/mcp`
- **Transport:** Streamable HTTP
- **Auth:** none (demo). Add a bearer-token check in `server.js` if your platform requires one.
To try it in a generic MCP client, the connection config looks like:
```json
{
"mcpServers": {
"partner-booking": {
"type": "http",
"url": "https://<your-host>/mcp"
}
}
}
```
## Suggested demo script
1. User asks your platform's agent: *"Book me a haircut next Monday morning."*
2. Your agent calls `check_availability` on **this external server** → shows the slots.
3. Your agent calls `book_appointment` → returns confirmation `BK-XXXXXXXX`.
4. Emphasise: the booking logic + data live in a **separate, third-party service** — your
platform discovered its tools and orchestrated the task live over MCP.
5. Optional: `cancel_appointment` to show a two-way, stateful exchange.
## Notes for a production-shaped story
- Add auth (bearer/OAuth) at the `/mcp` route.
- Swap the in-memory store for a real DB/booking API.
- Same pattern maps to any partner capability — this is intentionally minimal so the
*interoperability* is the star, not the business logic.
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues