afkbot-mcp
Officialafkbot-mcp
MCP server for AFKBot PTO management — file time-off requests from any MCP client.
Architecture
┌──────────────┐ stdio ┌──────────────┐ HTTPS ┌──────────────┐
│ MCP Client │◄──────────────►│ afkbot-mcp │◄────────────►│ AFKBot API │
│ (Claude, etc)│ │ MCP Server │ Bearer JWT │ (Azure ACA) │
└──────────────┘ └──────────────┘ └──────┬───────┘
│
┌────────┬───────┼────────┐
│ │ │ │
Float Outlook Autotask RootlyAFKBot orchestrates PTO requests across Float, Outlook Calendar, Autotask, and Rootly. This MCP server wraps its REST API so any MCP-compatible client can file and manage time-off requests.
Quick Start
Environment Variables
Variable | Required | Description |
| Yes | Azure AD tenant ID ( |
| Yes | Your MCP server's app registration client ID |
| Yes | Your MCP server's app registration client secret |
| No | AFKBot API URL (defaults to production) |
| No | AFKBot Easy Auth client ID (defaults to production) |
Run Locally
npm ci
npm run build
node dist/index.jsRun with Docker
docker compose up --buildClaude Desktop / Claude Code Config
{
"mcpServers": {
"afkbot": {
"command": "node",
"args": ["/path/to/afkbot-mcp/dist/index.js"],
"env": {
"AZURE_TENANT_ID": "d92c73a4-ccc2-4277-8c5d-73c2849adfa4",
"AZURE_CLIENT_ID": "your-app-client-id",
"AZURE_CLIENT_SECRET": "your-app-client-secret"
}
}
}
}Available Tools
create_pto_request
File a new PTO request.
Parameter | Type | Required | Description |
| string | Yes | Employee email address |
| string | Yes |
|
| string | Yes | Start date (YYYY-MM-DD) |
| string | No | End date (defaults to start_date) |
| string | No | Start time for partial day (HH:MM) |
| string | No | End time for partial day (HH:MM) |
| string | No | Reason or notes |
list_pto_requests
List PTO requests with optional filters.
Parameter | Type | Required | Description |
| string | No |
|
| string | No | Filter by employee |
| number | No | Max results (default: 25) |
| number | No | Pagination offset |
get_pto_request
Get details of a specific request.
Parameter | Type | Required | Description |
| string | Yes | The PTO request ID |
cancel_pto_request
Cancel a pending or approved request.
Parameter | Type | Required | Description |
| string | Yes | The PTO request ID |
| string | No | Reason for cancellation |
team_calendar
View who's out on a given date range.
Parameter | Type | Required | Description |
| string | Yes | Start date (YYYY-MM-DD) |
| string | No | End date (defaults to start_date) |
Auth Setup
This MCP server authenticates to AFKBot using Azure AD client credentials. You need to create an app registration:
Create an App Registration in Azure AD (Entra ID)
Go to Azure Portal → Entra ID → App registrations → New registration
Name:
afkbot-mcp(or your choice)Supported account types: Single tenant
Create a Client Secret
In the app registration → Certificates & secrets → New client secret
Copy the secret value
Grant API Permissions
In the app registration → API permissions → Add a permission
Select "APIs my organization uses" → search for AFKBot (
17963178-bee5-4738-82a3-088e739bb95b)Add the appropriate permissions
Grant admin consent
Set Environment Variables using the values from the app registration
WYRE Ecosystem
This is part of the WYRE Technology MCP server suite:
autotask-mcp — Kaseya Autotask PSA integration
afkbot-mcp (this repo) — PTO management via AFKBot
License
MIT — Copyright (c) 2025 Aaron Sachs