An MCP server that enables users to book, cancel, reschedule, and list appointments
MCP Appointment Booking Server
📌 Overview
This project implements an **MCP (Modular Conversational Protocol) server** for appointment booking. It leverages **agent.yaml** and **functions.yaml** files from the `Result` folder to define conversational behavior and available tools. The server enables users to **book, cancel, reschedule, and list appointments** through conversational interactions. All appointments can be access through appointment.yaml file
📂 Project Structure

Architecture diagram for MCP Appointment Booking Server Workflow

⚙️ Features
- Check Availability: Verify if a time slot is free.
- Book Appointment: Reserve a slot for a customer.
- Cancel Appointment: Delete an appointment by ID.
- Reschedule Appointment: Change date/time of an existing appointment.
- List Appointments: Retrieve all appointments for a given user.
🚀 Installation
Clone the repo
git clone
Ensure you have Python >=3.10 <=3.13 installed on your system to install CrewAI.
Install dependencies
pip install -r requirements.txt
Customizing
Replace agent and function files as you need

Run the Code
uv run mcp install main.py
Connect MCP with your custom chatbot
OR
Connect MCP with chatbot app like Claude
📑 Example Workflow
Agent Conversation
- Guided by
agent.yaml - Defines persona, conversation flow, and instructions for the appointment assistant
Functions
- Defined in
functions.yaml - Provide backend logic for booking, canceling, rescheduling, and listing appointments
Workflow Steps
- User requests an appointment
- Agent asks for required details (customerName, service, date, time, durationMinutes)
- Server executes the appropriate tool from
functions.yaml - Results are stored in
appointments.yamlfor persistence
Chatbot plug with MCP Appointment Booking Server

Tools (5)
check_availabilityVerify if a specific time slot is free.book_appointmentReserve a slot for a customer.cancel_appointmentDelete an appointment by ID.reschedule_appointmentChange date or time of an existing appointment.list_appointmentsRetrieve all appointments for a given user.Configuration
{"mcpServers": {"appointment-booking": {"command": "uv", "args": ["run", "main.py"]}}}