Timezest Mcp

io.github.sagarkalra-tech由 GitHub 账号 sagarkalra-tech 发布v1.1.0更新于 Oct 24, 2026

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

已验证STDIO仅桌面效率与工作流商业与电商

概览

AI 生成的概览

一个只读的 MCP 服务器,把 TimeZest 排程数据带入助手:预约、待处理请求、工程师日程和关联工单的预约。

可以做什么
按日期范围、工程师、状态或 ConnectWise 工单号查询预约,并获取按工程师分组的当日已确认预约晨间简报,同时列出待处理的未预约请求。查看待处理和已取消的排程请求,包括已等待时长以及取消请求的重新预约链接。查看某位工程师即将到来的日程,并列出 TimeZest 中配置的预约类型。生成汇总排程统计,例如按状态和工程师的计数、当日负载和最久未处理的请求,并带有时区准确的显示文本。
适用场景
适合同时使用 TimeZest 和 ConnectWise 的团队,希望用自然语言查询预约、跟进未预约请求并查看团队排程负载,而不必在多个标签页之间切换。
运行要求
通过 npm 包 timezest-mcp 以 stdio 在本地运行,需要 Node.js 20 或更高版本。必须在 TIMEZEST_API_KEY 环境变量中提供 TimeZest API 密钥;可选变量用于设置默认 IANA 时区以及向前、向后的查询窗口。需要访问 TimeZest API 的网络连接。
安装前请注意
TimeZest API 密钥是放在客户端配置中的 bearer token,请妥善保管该配置文件。该服务器声明为只读,不会修改排程数据,但预约和工程师信息会发送到 TimeZest API 并呈现给助手。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Timezest Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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

来源:README.md,提交 766cd8b

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.1.0最新Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。