Connects to the TimeZest scheduling platform to let LLMs book technician appointments for MSPs with PSA integration. Exposes agents, teams, appointment types, and the full scheduling request lifecycle (create, list, cancel). The create_request tool wires up to ConnectWise, Autotask, or Halo tickets and supports two trigger modes: firing PSA workflows directly or generating booking URLs for customers. Uses a decision tree navigation system to organize tools by domain, handles IANA timezones explicitly, and supports TQL filtering across all endpoints. Designed to run stateless per request, making it gateway friendly for multi tenant deployments.
MCP (Model Context Protocol) server for TimeZest scheduling platform. Enables LLM agents to create and manage technician scheduling requests with PSA integration.
docker run -it --rm \
-e TIMEZEST_API_TOKEN=your-api-token \
ghcr.io/wyre-technology/timezest-mcp:latest
npm install -g @wyre-technology/timezest-mcp
TIMEZEST_API_TOKEN=your-token timezest-mcp
| Environment Variable | Required | Description |
|---|---|---|
TIMEZEST_API_TOKEN | Yes | TimeZest API token |
MCP_TRANSPORT | No | Transport mode: stdio (default) or http |
MCP_HTTP_PORT | No | HTTP port (default: 8080) |
AUTH_MODE | No | Set to gateway for WYRE gateway integration |
LOG_LEVEL | No | Log level: debug, info (default), warn, error |
The server uses decision-tree navigation to organize tools by domain:
timezest_navigate - Enter a domain to access its toolstimezest_status - Show available domains and current statetimezest_agents_list - List individual technicianstimezest_agents_get - Get agent detailstimezest_teams_list - List teams (round-robin scheduling)timezest_teams_get - Get team detailstimezest_appointment_types_list - List available service typestimezest_appointment_types_get - Get appointment type detailstimezest_resources_list - List all resources (agents + teams)timezest_scheduling_list - List scheduling requeststimezest_scheduling_get - Get request detailstimezest_scheduling_create_request - Create new request (key tool)timezest_scheduling_cancel - Cancel requestUser: "Show me TimeZest domains"
Tools: timezest_status
User: "Go to scheduling"
Tools: timezest_navigate(domain="scheduling")
User: "Book a technician for server repair at Customer Corp tomorrow"
Tools: timezest_scheduling_create_request({
"appointmentTypeId": "repair-onsite",
"triggerMode": "pod",
"endUser": {
"name": "John Doe",
"company": "Customer Corp",
"email": "john@customer.com"
},
"timeRange": {
"earliestDate": "2024-02-01",
"earliestTime": "09:00",
"latestDate": "2024-02-01",
"latestTime": "17:00",
"timezone": "America/New_York"
},
"associatedEntities": [
{"type": "connectwise", "id": "12345", "number": "T20240001"}
]
})
Link scheduling requests to PSA tickets:
{
"associatedEntities": [
{"type": "connectwise", "id": "12345", "number": "T20240001"},
{"type": "autotask", "id": "67890"},
{"type": "halo", "id": "11111"}
]
}
pod: Fires the configured PSA workflow (creates calendar entries, updates tickets)generate_url: Returns a shareable booking URL for customersTimeZest Query Language examples:
# Active agents in IT department
filter: "active:true AND department:\"IT Support\""
# Recent scheduling requests
filter: "createdAt:>=2024-01-01 AND status:pending"
# Specific customer requests
filter: "endUser.company:\"Important Customer\""
CRITICAL: Always specify IANA timezones explicitly. TimeZest interprets scheduling windows in the specified timezone.
{
"timeRange": {
"earliestDate": "2024-02-01",
"earliestTime": "09:00",
"timezone": "America/New_York" // ✅ Required
}
}
# Clone and install
git clone https://github.com/wyre-technology/timezest-mcp.git
cd timezest-mcp
npm install
# Development with file dependency (replace before publish)
# Edit package.json: "@wyre-technology/node-timezest": "file:../node-timezest"
# Build and test
npm run build
npm test
# Run locally
TIMEZEST_API_TOKEN=your-token npm run dev
# Build image
docker build -t timezest-mcp --build-arg NODE_AUTH_TOKEN=$GITHUB_TOKEN .
# Run container
docker run -it --rm \
-e TIMEZEST_API_TOKEN=your-token \
-e LOG_LEVEL=debug \
timezest-mcp
Add to your MCP settings:
{
"mcpServers": {
"timezest": {
"command": "npx",
"args": ["@wyre-technology/timezest-mcp"],
"env": {
"TIMEZEST_API_TOKEN": "your-api-token"
}
}
}
}
The server is designed for the WYRE MCP Gateway with:
| TimeZest API | Coverage | Notes |
|---|---|---|
| Agents | ✅ List, Get | Individual technicians |
| Teams | ✅ List, Get | Round-robin scheduling |
| Appointment Types | ✅ List, Get | Service type definitions |
| Resources | ✅ List | Unified agents + teams |
| Scheduling Requests | ✅ CRUD | Core scheduling functionality |
| TQL Filtering | ✅ All endpoints | TimeZest Query Language |
| PSA Integration | ✅ All systems | ConnectWise, Autotask, Halo |
| Webhooks | ❌ N/A | TimeZest doesn't provide webhooks |
See CONTRIBUTING.md for development guidelines.
Apache 2.0 - see LICENSE file for details.
TIMEZEST_API_TOKEN*secretTimeZest API token (Bearer credential)
MCP_TRANSPORTdefault: stdioTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODEdefault: envCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELdefault: infoLog verbosity: debug, info, warn, error