Package Exports
- appointment-mcp-server
- appointment-mcp-server/build/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (appointment-mcp-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Appointment MCP Server
A comprehensive Model Context Protocol (MCP) server for managing appointments, staff, and business operations, built with Node.js and TypeScript.
Features
Core Appointment Management
- Create new appointments with title, date, time, and optional description
- List all appointments with filtering and sorting options
- Get specific appointment details by ID
- Delete appointments by ID
- Update appointment status and details
- Input validation for date and time formats
Staff Management
- Get comprehensive staff information with services and working hours
- View staff availability for specific dates
- Get detailed information about individual staff members
- View staff time off schedules
- Staff service assignments and specializations
Availability & Booking
- Get available time slots for specific services and dates
- Real-time availability checking with booking capacity
- Time slot generation based on service duration and buffer times
- Conflict detection with existing appointments
Customer Management
- Create and manage customer profiles
- Search customers by name, email, or phone
- Update customer information
- View customer appointment history
- Customer reviews and ratings
Business Operations
- Multi-business support with API key authentication
- Business hours management
- Service catalog management
- Business details and configuration
Technical Features
- Persistent storage using PostgreSQL database
- Multi-tenant architecture
- Comprehensive error handling and validation
- TypeScript-first development
- MCP protocol compliance
Prerequisites
- Node.js version 16 or higher
- npm or yarn package manager
- PostgreSQL database (local or cloud)
Installation
- Install dependencies:
npm install
- Build the project:
npm run build
Usage
Configuration
This server is designed to be configured through MCP client settings. Environment variables are passed through the MCP configuration rather than using a .env file.
Required environment variables:
DATABASE_URL
: Your PostgreSQL connection stringBUSINESS_ID
: Default business ID (can be overridden per tool call)
Note: Business IDs are passed dynamically as parameters to each tool call, allowing the server to handle multiple businesses without hardcoded configuration.
Running the Server
npm start
Or for development:
npm run dev
MCP Configuration
To use this server with Claude Desktop or other MCP clients, add the following configuration to your MCP settings:
{
"mcpServers": {
"appointment-mcp": {
"command": "node",
"args": [
"/path/to/appointment_mcp/build/index.js"
],
"env": {
"DATABASE_URL": "postgresql://username:password@localhost:5432/database",
"BUSINESS_ID": "your-default-business-id"
}
}
}
}
Or using npx (recommended for published packages):
{
"mcpServers": {
"appointment-mcp": {
"command": "npx",
"args": [
"-y",
"appointment-mcp-server@latest"
],
"env": {
"DATABASE_URL": "postgresql://username:password@localhost:5432/database",
"BUSINESS_ID": "your-default-business-id"
}
}
}
}
Local Development
For local development, you can run the server directly:
npm start
Or for development with auto-rebuild:
npm run dev
Note: When running locally for development, you'll need to set environment variables manually or use a .env file.
Available Tools
Appointment Management
1. create_appointment
Create a new appointment for a specific business.
Parameters:
business_id
(string, optional): The ID of the businesstitle
(string, required): The title of the appointmentdate
(string, required): The date in YYYY-MM-DD formattime
(string, required): The time in HH:MM formatdescription
(string, optional): Optional descriptioncustomer_id
(string, optional): Customer IDservice_id
(string, optional): Service IDstaff_id
(string, optional): Staff member ID
2. list_appointments
List all appointments for a specific business.
Parameters:
business_id
(string, optional): The ID of the businessstatus
(string, optional): Filter by status (confirmed, pending, completed, cancelled)date
(string, optional): Filter by date (YYYY-MM-DD)
3. get_appointment
Get details of a specific appointment for a business.
Parameters:
business_id
(string, optional): The ID of the businessid
(string, required): The ID of the appointment
4. delete_appointment
Delete an appointment for a specific business.
Parameters:
business_id
(string, optional): The ID of the businessid
(string, required): The ID of the appointment to delete
Staff Management
5. get_staff_availability
Get staff availability for a specific date.
Parameters:
business_id
(string, optional): The ID of the businessdate
(string, required): The date to check availability (YYYY-MM-DD format)
Returns: Staff members with their working hours, availability status, and time off information.
6. get_all_staff_info
Get detailed information about all staff members.
Parameters:
business_id
(string, optional): The ID of the business
Returns: Comprehensive staff information including services provided, working hours, and appointment counts.
7. get_staff_member
Get detailed information about a specific staff member.
Parameters:
business_id
(string, optional): The ID of the businessstaff_id
(string, required): The staff member ID
Returns: Detailed staff information including services, working hours, and appointment history.
8. get_staff_time_off
Get staff time off for a specific date range.
Parameters:
business_id
(string, optional): The ID of the businessstart_date
(string, optional): Start date for time off (YYYY-MM-DD format)end_date
(string, optional): End date for time off (YYYY-MM-DD format)
Availability & Booking
9. get_available_time_slots
Get available time slots for a specific service on a date.
Parameters:
business_id
(string, optional): The ID of the businessservice_id
(string, required): The service IDdate
(string, required): The date to check availability (YYYY-MM-DD format)
Returns: Available time slots with staff information and booking capacity.
Customer Management
10. create_customer
Create a new customer profile.
Parameters:
business_id
(string, optional): The ID of the businessfirst_name
(string, required): Customer's first namelast_name
(string, required): Customer's last nameemail
(string, required): Customer's email addressphone_number
(string, optional): Customer's phone number
11. get_customer
Get customer details by ID.
Parameters:
business_id
(string, optional): The ID of the businesscustomer_id
(string, required): The customer ID
12. search_customers
Search customers by name, email, or phone.
Parameters:
business_id
(string, optional): The ID of the businessquery
(string, required): Search query
13. update_customer
Update customer information.
Parameters:
business_id
(string, optional): The ID of the businesscustomer_id
(string, required): The customer IDfirst_name
(string, optional): Updated first namelast_name
(string, optional): Updated last nameemail
(string, optional): Updated emailphone_number
(string, optional): Updated phone number
14. get_customer_appointments
Get all appointments for a specific customer.
Parameters:
business_id
(string, optional): The ID of the businesscustomer_id
(string, required): The customer ID
15. get_customer_reviews
Get reviews submitted by a customer.
Parameters:
business_id
(string, optional): The ID of the businesscustomer_id
(string, required): The customer ID
16. create_review
Create a new review for an appointment.
Parameters:
business_id
(string, optional): The ID of the businessappointment_id
(string, required): The appointment IDrating
(number, required): Rating (1-5)comment
(string, optional): Review comment
Business Operations
17. get_business_details
Get details of a specific business by business ID.
Parameters:
business_id
(string, required): The business ID to retrieve details for
18. get_business_hours
Get business operating hours.
Parameters:
business_id
(string, optional): The ID of the business
Service Management
19. get_services
Get all services offered by a business.
Parameters:
business_id
(string, optional): The ID of the business
20. get_service
Get details of a specific service.
Parameters:
business_id
(string, optional): The ID of the businessservice_id
(string, required): The service ID
Database Schema
The server uses a comprehensive PostgreSQL schema that includes:
- businesses: Business information and configuration
- staff: Staff member profiles and details
- customers: Customer profiles and contact information
- services: Service offerings with pricing and duration
- appointments: Appointment bookings and scheduling
- staff_working_hours: Staff availability schedules
- staff_time_off: Staff time off and vacation tracking
- staff_services: Staff service assignments
- reviews: Customer reviews and ratings
See database_schema.sql
for the complete schema definition.
Development
Project Structure
appointment_mcp/
├── src/
│ ├── index.ts # Main server implementation and tool definitions
│ └── database.ts # Database operations and queries
├── build/ # Compiled JavaScript output
├── database_schema.sql # Complete database schema
├── customer_inquiry_prompt.md # Customer service prompts
├── customer_inquiry_resources.md # Customer service resources
├── mcp-config-example.json # Example MCP configuration
├── test-availability-tools.js # Test script for new tools
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
└── README.md # This file
Building
npm run build
Testing
Run the test script to verify the new availability tools:
node test-availability-tools.js
Important Notes
- This server uses STDIO transport, so avoid using
console.log()
in the code as it will corrupt JSON-RPC messages - Use
console.error()
for logging instead - All data is stored persistently in PostgreSQL database
- Date format must be YYYY-MM-DD
- Time format must be HH:MM (24-hour format)
- Environment variables must be configured through MCP client settings
- Business IDs are scoped to ensure multi-tenant security
Version History
v1.4.0 (Current)
- ✨ Added 5 new availability and staff management tools
- ✨ Enhanced staff information retrieval with services and working hours
- ✨ Added time slot generation for booking availability
- ✨ Improved customer management with reviews and ratings
- ✨ Enhanced business operations and service management
- 🔧 Updated to use direct PostgreSQL queries for better performance
- 📚 Comprehensive documentation and examples
v1.3.x
- Core appointment management functionality
- Basic customer and business operations
- Multi-tenant support
License
MIT License - see LICENSE file for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Support
For issues and questions:
- GitHub Issues: https://github.com/arimunandar/appointment-mcp-server/issues
- NPM Package: https://www.npmjs.com/package/appointment-mcp-server