
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
appointment-mcp-server
Advanced tools
Customer-focused MCP Server for appointment management with comprehensive service discovery, availability checking, and booking capabilities
A comprehensive Model Context Protocol (MCP) server for managing appointments, staff, and business operations, built with Node.js and TypeScript.
npm install
npm run build
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.
npm start
Or for development:
npm run dev
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"
}
}
}
}
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.
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 IDList 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)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 appointmentDelete an appointment for a specific business.
Parameters:
business_id (string, optional): The ID of the businessid (string, required): The ID of the appointment to deleteGet 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.
Get detailed information about all staff members.
Parameters:
business_id (string, optional): The ID of the businessReturns: Comprehensive staff information including services provided, working hours, and appointment counts.
Get detailed information about a specific staff member.
Parameters:
business_id (string, optional): The ID of the businessstaff_id (string, required): The staff member IDReturns: Detailed staff information including services, working hours, and appointment history.
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)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.
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 numberGet customer details by ID.
Parameters:
business_id (string, optional): The ID of the businesscustomer_id (string, required): The customer IDSearch customers by name, email, or phone.
Parameters:
business_id (string, optional): The ID of the businessquery (string, required): Search queryUpdate 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 numberGet all appointments for a specific customer.
Parameters:
business_id (string, optional): The ID of the businesscustomer_id (string, required): The customer IDGet reviews submitted by a customer.
Parameters:
business_id (string, optional): The ID of the businesscustomer_id (string, required): The customer IDCreate 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 commentGet details of a specific business by business ID.
Parameters:
business_id (string, required): The business ID to retrieve details forGet business operating hours.
Parameters:
business_id (string, optional): The ID of the businessGet all services offered by a business.
Parameters:
business_id (string, optional): The ID of the businessGet details of a specific service.
Parameters:
business_id (string, optional): The ID of the businessservice_id (string, required): The service IDThe server uses a comprehensive PostgreSQL schema that includes:
See database_schema.sql for the complete schema definition.
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
npm run build
Run the test script to verify the new availability tools:
node test-availability-tools.js
console.log() in the code as it will corrupt JSON-RPC messagesconsole.error() for logging insteadMIT License - see LICENSE file for details.
For issues and questions:
FAQs
Customer-focused MCP Server for appointment management with comprehensive service discovery, availability checking, and booking capabilities
We found that appointment-mcp-server demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.