Jake Shore f8e0b3246f feat: Complete Acuity Scheduling MCP server with 40+ tools and 14 React apps
- Full API client with Basic Auth and OAuth2 support
- 40+ tools across 10 categories (appointments, availability, clients, calendars, products, forms, labels, webhooks, coupons, blocks)
- 14 interactive React-based MCP apps for rich UI experiences
- Comprehensive error handling and pagination
- TypeScript implementation with full type definitions
- Complete documentation and examples
2026-02-12 17:41:55 -05:00

222 lines
5.2 KiB
Markdown

# Acuity Scheduling MCP Server
A comprehensive Model Context Protocol (MCP) server for Acuity Scheduling API integration.
## Features
### 40+ Tools Across 10 Categories
- **Appointments** (8 tools): List, get, create, update, cancel, reschedule, list types, get type
- **Availability** (4 tools): Get dates, get times, get classes, check availability
- **Clients** (5 tools): List, get, create, update, delete
- **Calendars** (4 tools): List, get, create, update
- **Products** (6 tools): List products by type (add-ons, packages, subscriptions, gift certificates)
- **Forms** (3 tools): List forms, get fields, get intake form responses
- **Labels** (5 tools): List, create, delete, add to appointment, remove from appointment
- **Webhooks** (3 tools): List, create, delete
- **Coupons** (5 tools): List, get, create, update, delete
- **Blocks** (3 tools): List, create, delete time blocks
### 14 Interactive MCP Apps
1. **Appointment Dashboard** - Overview dashboard with stats and upcoming appointments
2. **Appointment Detail** - Detailed view of individual appointments
3. **Appointment Grid** - Filterable table view of all appointments
4. **Availability Calendar** - Interactive calendar showing available time slots
5. **Client Directory** - Searchable directory of all clients
6. **Client Detail** - Comprehensive client profiles with appointment history
7. **Calendar Manager** - Manage staff calendars and settings
8. **Product Catalog** - Browse products, packages, and add-ons
9. **Form Responses** - View and manage intake form submissions
10. **Label Manager** - Create and manage appointment labels
11. **Coupon Manager** - Create and track promotional coupons
12. **Booking Flow** - Interactive multi-step booking interface
13. **Schedule Overview** - Week-view schedule across all calendars
14. **Blocked Time Manager** - Manage blocked time slots and staff availability
## Installation
```bash
npm install
npm run build
```
## Configuration
Create a `.env` file with your Acuity Scheduling credentials:
```bash
# Required
ACUITY_USER_ID=your_user_id
ACUITY_API_KEY=your_api_key
# Optional (for OAuth2)
ACUITY_OAUTH2_TOKEN=your_oauth2_token
```
### Getting API Credentials
1. Log in to your Acuity Scheduling account
2. Go to Business Settings → Integrations → API
3. Enable API access and copy your User ID and API Key
## Usage
### As MCP Server
Add to your MCP client configuration (e.g., Claude Desktop):
```json
{
"mcpServers": {
"acuity-scheduling": {
"command": "node",
"args": ["/path/to/acuity-scheduling/dist/main.js"],
"env": {
"ACUITY_USER_ID": "your_user_id",
"ACUITY_API_KEY": "your_api_key"
}
}
}
}
```
### Standalone
```bash
npm start
```
## API Reference
### Authentication
The server supports two authentication methods:
1. **Basic Auth** (recommended): Uses User ID and API Key
2. **OAuth2**: Uses OAuth2 access token
### Tool Examples
#### List Appointments
```json
{
"tool": "acuity_list_appointments",
"arguments": {
"minDate": "2024-01-01",
"maxDate": "2024-01-31",
"calendarID": 1
}
}
```
#### Create Appointment
```json
{
"tool": "acuity_create_appointment",
"arguments": {
"appointmentTypeID": 1,
"datetime": "2024-01-15T10:00:00",
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "555-1234"
}
}
```
#### Get Availability
```json
{
"tool": "acuity_get_availability_times",
"arguments": {
"appointmentTypeID": 1,
"date": "2024-01-15"
}
}
```
## MCP Apps
Access interactive apps through MCP resources:
- `acuity://apps/appointment-dashboard`
- `acuity://apps/availability-calendar`
- `acuity://apps/client-directory`
- And 11 more...
Each app provides a rich, interactive UI for managing different aspects of your Acuity Scheduling account.
## Architecture
```
src/
├── clients/
│ └── acuity.ts # API client with auth & pagination
├── tools/
│ ├── appointments-tools.ts
│ ├── availability-tools.ts
│ ├── clients-tools.ts
│ ├── calendars-tools.ts
│ ├── products-tools.ts
│ ├── forms-tools.ts
│ ├── labels-tools.ts
│ ├── webhooks-tools.ts
│ ├── coupons-tools.ts
│ └── blocks-tools.ts
├── types/
│ └── index.ts # TypeScript type definitions
├── ui/
│ └── react-app/ # 14 interactive MCP apps
├── server.ts # MCP server implementation
└── main.ts # Entry point
```
## Development
```bash
# Build
npm run build
# Watch mode
npm run dev
# Run server
npm start
```
## Error Handling
The server includes comprehensive error handling:
- API rate limit detection
- Network error retries
- Invalid credential detection
- Missing required parameters validation
## Rate Limits
Acuity Scheduling API has rate limits. The client handles:
- Automatic pagination for large result sets
- Error responses with status codes
- Request throttling (if needed)
## Support
For issues or questions:
- Acuity Scheduling API Documentation: https://developers.acuityscheduling.com/
- MCP Documentation: https://modelcontextprotocol.io/
## License
MIT
## Version
1.0.0