Timezest Mcp

io.github.sagarkalra-techPublished by GitHub account sagarkalra-techv1.1.0Updated Oct 24, 2026

MCP Server for TimeZest: manage appointments, pending requests, and ticket schedules in Claude.

Overview

AI-generated overview

A read-only MCP server that brings TimeZest scheduling data into an assistant: appointments, pending requests, engineer schedules and ticket-linked bookings.

What you can do
Look up appointments by date range, engineer, status or ConnectWise ticket number, and get a morning briefing of today's confirmed bookings grouped by engineer with pending unbooked requests alongside them. Review pending and cancelled scheduling requests, including how long they have been waiting and rebooking links for cancellations. Check one engineer's upcoming schedule and list the appointment types configured in TimeZest. Produce aggregate scheduling statistics such as counts by status and engineer, today's load and the oldest pending request, with timezone-aware display strings.
When to use it
Useful for teams running TimeZest with ConnectWise that want to query bookings, chase unbooked requests and review team scheduling load in natural language instead of switching between tabs.
Requirements
Runs locally over stdio via the npm package timezest-mcp, so Node.js 20 or newer is needed. A TimeZest API key is required in the TIMEZEST_API_KEY environment variable; optional variables set the default IANA timezone and the look-back and look-ahead windows. Network access to the TimeZest API is required.
Before you install
The TimeZest API key is a bearer token placed in the client configuration, so keep that configuration file private. The server is described as read-only and makes no changes to scheduling data, but appointment and engineer details are sent to the TimeZest API and surfaced to the assistant.

Installation

In SourceWeft

  1. Open Timezest Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

⏰ TimeZest MCP Server

[npm version] [MCP Registry] [CI] [License: MIT]

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


🌟 Why 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:

  • 🗓️ Give you a morning briefing of today's confirmed appointments grouped by engineer
  • 🔍 Find appointments by ticket number — just say "find appointments for ticket #964400"
  • ⏳ Surface aging unbooked requests that need follow-up
  • 📊 Generate aggregate scheduling stats across your team
  • 🕐 Handle timezone-accurate reporting across global MSP teams

🚀 Get Started in 30 Seconds

Prerequisites

  • Node.js 20+ — Download here
  • TimeZest API Key — Found in TimeZest → Settings → API

Option 1: Claude Desktop (Recommended)

Add this to your Claude Desktop configuration file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
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.

Option 2: Claude Code CLI

bash
claude mcp add-json timezest-mcp '{  "command": "npx",  "args": ["-y", "timezest-mcp@latest"],  "env": {    "TIMEZEST_API_KEY": "your-timezest-api-key-here"  }}'

Option 3: VS Code (Copilot)

Add to your .vscode/settings.json or User Settings:

json
{  "mcp": {    "servers": {      "timezest": {        "command": "npx",        "args": ["-y", "timezest-mcp@latest"],        "env": {          "TIMEZEST_API_KEY": "your-timezest-api-key-here"        }      }    }  }}

🛠️ Available Tools

The server exposes 8 specialized tools that Claude can call:

ToolDescriptionKey Parameters
get_todays_appointmentsMorning briefing — today's confirmed appointments grouped by engineer, plus pending unbooked requeststimezone
list_appointmentsFlexible query across any date range with optional filtersstart_date, end_date, engineer_name, status
get_engineer_scheduleAll upcoming appointments for a specific engineer, sorted by timeengineer_name, days_ahead, include_pending
list_pending_requestsUnbooked invitations (sent/new) with age tracking in hours/daysdays_back, engineer_name, older_than_hours
find_appointment_by_ticketFind appointments linked to a ConnectWise ticket numberticket_number (e.g., 964400 or #964400)
get_appointment_typesList all appointment type definitions configured in TimeZest—
get_appointment_statsAggregate summary: counts by status, by engineer, today's load, oldest pendingdays_back, days_forward
list_cancelled_appointmentsCancelled requests with scheduling URLs for rebookingdays_back, engineer_name

💬 Example Prompts

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?"

⚙️ Configuration

Environment VariableRequiredDefaultPurpose
TIMEZEST_API_KEYYes—Your TimeZest Bearer token (Settings → API)
TIMEZEST_DEFAULT_TZNoAmerica/ChicagoDefault IANA timezone for localized display strings
TIMEZEST_WINDOW_DAYS_BACKNo14How many days back to fetch scheduling requests
TIMEZEST_WINDOW_DAYS_FORWARDNo30How many days forward to fetch scheduling requests

🏗️ Architecture

┌─────────────────────────────────────────────────────────────────┐│                        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       │└─────────────────────────────────────────────────────────────────┘

Key Design Decisions

  • Read-Only: Intentionally kept read-only — no mutations to your scheduling data
  • Resilient Client: Exponential backoff with automatic Retry-After header support for 429/5xx errors
  • Deep Pagination: Recursively crawls all pages (50-item chunks) to build complete datasets
  • Timezone Precision: Converts Unix timestamps to strict ISO with localized display strings using IANA timezone identifiers
  • Engineer Resolution: Uses a "highest-confidence" search — checks scheduled_agents first, then falls back to resources
  • Warm Cache: Appointment types are cached after first fetch to reduce API overhead

🧪 Testing

The server ships with a comprehensive Vitest test suite — 22 tests across 3 files:

Test FileTestsCoverage
transform.test.ts8Engineer resolution, ticket extraction, timezone conversion, graceful handling of missing fields
filter.test.ts6Case-insensitive partial matching, team name matching, date-range filtering
client.test.ts8Appointment type caching, pagination, retry on 429/5xx, no-retry on 4xx

All tests use mocked API responses — no live API calls, no secrets needed.

bash
npm test            # Single runnpm run test:watch  # Re-runs on file save

🔒 Security & Trust

  • NPM Provenance: Every release is cryptographically signed via GitHub Actions OIDC
  • CI/CD Pipeline: Automated build → test → publish on tagged releases (no manual npm publish)
  • No Secrets in CI: Tests require no API keys — fully deterministic with mocked responses
  • Node.js Matrix: Tested on Node 20 (LTS) and 22 (Current)

📦 Distribution


🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Make your changes and ensure tests pass (npm test)
  4. Submit a pull request

See ARCHITECTURE.md for a deep dive into the data flow, component design, and transformation logic.


📄 License

MIT © 2026 Sagar Kalra

Source: README.md at commit 766cd8b

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.1.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.