oci ghcr.io/wyre-ai/timezest-mcp:v2.0.1stdioupdated 8d ago
MCP (Model Context Protocol) server for TimeZest scheduling platform. Enables LLM agents to create and manage technician scheduling requests with PSA integration.
What can you do with TimeZest?
TimeZest MCP Server
MCP (Model Context Protocol) server for TimeZest scheduling platform. Enables LLM agents to create and manage technician scheduling requests with PSA integration.
Features
- šÆ Decision-tree navigation - organized tool discovery
- š Full scheduling lifecycle - create, view, cancel requests
- š PSA integration - ConnectWise, Autotask, Halo support
- š IANA timezone handling - explicit timezone management
- š Dual trigger modes - PSA workflows or booking URLs
- š”ļø Gateway-ready - stateless per-request design
- š TQL filtering - TimeZest Query Language support
- ⨠Elicitation support - interactive user prompts
- š Interactive scheduling-request card (MCP Apps) -
timezest_scheduling_getrenders as a card in MCP Apps hosts; neutral by default, brandable viawindow.__BRAND__injection orMCP_BRAND_*env vars
Quick Start
Docker (Recommended)
docker run -it --rm \
-e TIMEZEST_API_TOKEN=your-api-token \
ghcr.io/wyre-ai/timezest-mcp:latest
npm
npm install -g @wyre-ai/timezest-mcp
TIMEZEST_API_TOKEN=your-token timezest-mcp
Configuration
| 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 |
Tool Domains
The server uses decision-tree navigation to organize tools by domain:
Navigation
timezest_navigate- Enter a domain to access its toolstimezest_status- Show available domains and current state
Agents
timezest_agents_list- List individual technicianstimezest_agents_get- Get agent details
Teams
timezest_teams_list- List teams (round-robin scheduling)timezest_teams_get- Get team details
Appointment Types
timezest_appointment_types_list- List available service typestimezest_appointment_types_get- Get appointment type details
Resources
timezest_resources_list- List all resources (agents + teams)
Scheduling (Core Domain)
timezest_scheduling_list- List scheduling requeststimezest_scheduling_get- Get request detailstimezest_scheduling_create_request- Create new request (key tool)timezest_scheduling_cancel- Cancel request
Usage Examples
Basic Navigation
User: "Show me TimeZest domains"
Tools: timezest_status
User: "Go to scheduling"
Tools: timezest_navigate(domain="scheduling")
Create a Scheduling Request
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"}
]
})
PSA Integration
Link scheduling requests to PSA tickets:
{
"associatedEntities": [
{"type": "connectwise", "id": "12345", "number": "T20240001"},
{"type": "autotask", "id": "67890"},
{"type": "halo", "id": "11111"}
]
}
Trigger Modes
pod: Fires the configured PSA workflow (creates calendar entries, updates tickets)generate_url: Returns a shareable booking URL for customers
TQL Filtering
TimeZest 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\""
Timezone Handling
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
}
}
Development
Local Setup
# Clone and install
git clone https://github.com/WYRE-AI/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
Docker Development
# 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
MCP Integration
Claude Desktop
Add to your MCP settings:
{
"mcpServers": {
"timezest": {
"command": "npx",
"args": ["@wyre-ai/timezest-mcp"],
"env": {
"TIMEZEST_API_TOKEN": "your-api-token"
}
}
}
}
WYRE Gateway
The server is designed for the WYRE MCP Gateway with:
- Per-request server instances (stateless)
- Header-based credential injection
- Structured error responses
- Decision-tree tool organization
API Coverage
| 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 |
Contributing
See CONTRIBUTING.md for development guidelines.
License
Apache 2.0 - see LICENSE file for details.
Links
Install
Add TimeZest to your client. Pick the one you use.
claude mcp add ghcr-io-wyre-ai-timezest-mcp-v2-0-1 -- docker run -i --rm ghcr.io/wyre-ai/timezest-mcp:v2.0.1codex mcp add ghcr-io-wyre-ai-timezest-mcp-v2-0-1 -- docker run -i --rm ghcr.io/wyre-ai/timezest-mcp:v2.0.1amp mcp add ghcr-io-wyre-ai-timezest-mcp-v2-0-1 -- docker run -i --rm ghcr.io/wyre-ai/timezest-mcp:v2.0.1{
"mcpServers": {
"ghcr-io-wyre-ai-timezest-mcp-v2-0-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/wyre-ai/timezest-mcp:v2.0.1"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"ghcr-io-wyre-ai-timezest-mcp-v2-0-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/wyre-ai/timezest-mcp:v2.0.1"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"ghcr-io-wyre-ai-timezest-mcp-v2-0-1","command":"docker","args":["run","-i","--rm","ghcr.io/wyre-ai/timezest-mcp:v2.0.1"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"ghcr-io-wyre-ai-timezest-mcp-v2-0-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/wyre-ai/timezest-mcp:v2.0.1"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"ghcr-io-wyre-ai-timezest-mcp-v2-0-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/wyre-ai/timezest-mcp:v2.0.1"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"ghcr-io-wyre-ai-timezest-mcp-v2-0-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/wyre-ai/timezest-mcp:v2.0.1"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"ghcr-io-wyre-ai-timezest-mcp-v2-0-1": {
"type": "local",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/wyre-ai/timezest-mcp:v2.0.1"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"ghcr-io-wyre-ai-timezest-mcp-v2-0-1": {
"command": {
"path": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/wyre-ai/timezest-mcp:v2.0.1"
]
}
}
}
}Add to your Zed `settings.json`.
docker run -i --rm ghcr.io/wyre-ai/timezest-mcp:v2.0.1Run `goose configure`, choose **Add Extension ā Command-line Extension**, and paste this command.
Score
68 / 100
Good
- Documentation25/25
- Maintenance19/25
- Trust9/20
- Capability3/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 1 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint ā no local install
Version history
| Versions | Published |
|---|---|
| 2.0.1Latest | Aug 26, 2026 |