Connects Claude to TimeZest's scheduling platform with read-only access to appointments, pending booking requests, and ConnectWise ticket associations. Exposes eight tools including ticket number lookups, engineer schedule queries, aging unbooked request filters, and aggregate stats across customizable date windows. The client handles pagination and rate limiting automatically while converting timestamps to localized timezone displays. Built for MSPs running TimeZest with ConnectWise who want natural language access to scheduling data without tab-hopping between systems. Requires a TimeZest API key and ships with optional timezone and date window configuration via environment variables.
Bring your TimeZest scheduling data directly into Claude through the Model Context Protocol (MCP). Perform real-time appointment lookups, engineer briefings, and ticket-linked schedule management — all with natural language.
Registry ID: io.github.sagarkalra-tech/timezest-mcp
If you manage a team that uses TimeZest with ConnectWise, you know the pain: toggling between tabs, manually checking who's booked, chasing unbooked scheduling requests, and cross-referencing ticket numbers.
This MCP server turns Claude into a scheduling assistant that can:
Add this to your Claude Desktop configuration file:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"timezest": {
"command": "npx",
"args": ["-y", "timezest-mcp@latest"],
"env": {
"TIMEZEST_API_KEY": "your-timezest-api-key-here"
}
}
}
}
Restart Claude Desktop. You're done.
claude mcp add-json timezest-mcp '{
"command": "npx",
"args": ["-y", "timezest-mcp@latest"],
"env": {
"TIMEZEST_API_KEY": "your-timezest-api-key-here"
}
}'
Add to your .vscode/settings.json or User Settings:
{
"mcp": {
"servers": {
"timezest": {
"command": "npx",
"args": ["-y", "timezest-mcp@latest"],
"env": {
"TIMEZEST_API_KEY": "your-timezest-api-key-here"
}
}
}
}
}
The server exposes 8 specialized tools that Claude can call:
| Tool | Description | Key Parameters |
|---|---|---|
get_todays_appointments | Morning briefing — today's confirmed appointments grouped by engineer, plus pending unbooked requests | timezone |
list_appointments | Flexible query across any date range with optional filters | start_date, end_date, engineer_name, status |
get_engineer_schedule | All upcoming appointments for a specific engineer, sorted by time | engineer_name, days_ahead, include_pending |
list_pending_requests | Unbooked invitations (sent/new) with age tracking in hours/days | days_back, engineer_name, older_than_hours |
find_appointment_by_ticket | Find appointments linked to a ConnectWise ticket number | ticket_number (e.g., 964400 or #964400) |
get_appointment_types | List all appointment type definitions configured in TimeZest | — |
get_appointment_stats | Aggregate summary: counts by status, by engineer, today's load, oldest pending | days_back, days_forward |
list_cancelled_appointments | Cancelled requests with scheduling URLs for rebooking | days_back, engineer_name |
Once connected, just talk to Claude naturally:
"Who are my top engineers today and what are they booked for?"
"Find any TimeZest requests for ticket #964400."
"Give me a morning briefing of today's confirmed vs. unbooked requests."
"Show me all pending scheduling requests older than 48 hours."
"What's the scheduling volume breakdown for the last two weeks?"
"Pull up Sarah's schedule for the next 5 days."
"List all cancelled appointments from last week — any we should rebook?"
| Environment Variable | Required | Default | Purpose |
|---|---|---|---|
TIMEZEST_API_KEY | Yes | — | Your TimeZest Bearer token (Settings → API) |
TIMEZEST_DEFAULT_TZ | No | America/Chicago | Default IANA timezone for localized display strings |
TIMEZEST_WINDOW_DAYS_BACK | No | 14 | How many days back to fetch scheduling requests |
TIMEZEST_WINDOW_DAYS_FORWARD | No | 30 | How many days forward to fetch scheduling requests |
┌─────────────────────────────────────────────────────────────────┐
│ MCP CLIENT (Claude) │
│ Desktop App • Claude Code CLI • IDE Plugin │
└──────────────────────────┬──────────────────────────────────────┘
│ Stdio (JSON-RPC)
┌──────────────────────────▼──────────────────────────────────────┐
│ TIMEZEST MCP SERVER │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Tool Handler │ │ MCP SDK │ (index.ts) │
│ │ (8 Tools) │ │ Registry │ │
│ └──────┬───────┘ └──────────────┘ │
│ │ │
│ ┌──────▼────────────────────────────────────────────────────┐ │
│ │ TIMEZEST API CLIENT │ │
│ │ Pagination • Retry Logic • Rate Limit Management │ │
│ └──────────────────────┬────────────────────────────────────┘ │
│ │ (client.ts) │
│ ┌──────────────────────▼────────────────────────────────────┐ │
│ │ DATA TRANSFORMATION LAYER │ │
│ │ Timezone Math • Engineer Mapping • Ticket Linking │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │ (utils/) │
└─────────────────────────┼────────────────────────────────────────┘
│ HTTPS / REST
┌─────────────────────────▼──────────────────────────────────────┐
│ TIMEZEST API (v1) │
│ Scheduling Requests • Appointment Types • Resources │
└─────────────────────────────────────────────────────────────────┘
Retry-After header support for 429/5xx errorsscheduled_agents first, then falls back to resourcesThe server ships with a comprehensive Vitest test suite — 22 tests across 3 files:
| Test File | Tests | Coverage |
|---|---|---|
transform.test.ts | 8 | Engineer resolution, ticket extraction, timezone conversion, graceful handling of missing fields |
filter.test.ts | 6 | Case-insensitive partial matching, team name matching, date-range filtering |
client.test.ts | 8 | Appointment type caching, pagination, retry on 429/5xx, no-retry on 4xx |
All tests use mocked API responses — no live API calls, no secrets needed.
npm test # Single run
npm run test:watch # Re-runs on file save
npm publish)| Channel | Link |
|---|---|
| NPM | timezest-mcp |
| MCP Registry | io.github.sagarkalra-tech/timezest-mcp |
| GitHub | sagarkalra-tech/TimeZest-MCP |
git checkout -b feat/my-feature)npm test)See ARCHITECTURE.md for a deep dive into the data flow, component design, and transformation logic.
MIT © 2026 Sagar Kalra
TIMEZEST_API_KEY*secretYour TimeZest API Key (from Settings -> API)
TIMEZEST_DEFAULT_TZdefault: America/ChicagoDefault IANA timezone (e.g. America/Chicago)