afkbot-mcp
MCP server for AFKBot PTO management that allows users to file and manage time-off requests from any MCP-compatible client.
README
afkbot-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 Rootly
AFKBot 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 |
|---|---|---|
AZURE_TENANT_ID |
Yes | Azure AD tenant ID (d92c73a4-ccc2-4277-8c5d-73c2849adfa4) |
AZURE_CLIENT_ID |
Yes | Your MCP server's app registration client ID |
AZURE_CLIENT_SECRET |
Yes | Your MCP server's app registration client secret |
AFKBOT_API_URL |
No | AFKBot API URL (defaults to production) |
AFKBOT_APP_CLIENT_ID |
No | AFKBot Easy Auth client ID (defaults to production) |
Run Locally
npm ci
npm run build
node dist/index.js
Run with Docker
docker compose up --build
Claude 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 |
|---|---|---|---|
employee_email |
string | Yes | Employee email address |
request_type |
string | Yes | full_day or partial_day |
start_date |
string | Yes | Start date (YYYY-MM-DD) |
end_date |
string | No | End date (defaults to start_date) |
start_time |
string | No | Start time for partial day (HH:MM) |
end_time |
string | No | End time for partial day (HH:MM) |
details |
string | No | Reason or notes |
list_pto_requests
List PTO requests with optional filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
status |
string | No | pending, approved, declined, or all |
employee_email |
string | No | Filter by employee |
limit |
number | No | Max results (default: 25) |
offset |
number | No | Pagination offset |
get_pto_request
Get details of a specific request.
| Parameter | Type | Required | Description |
|---|---|---|---|
request_id |
string | Yes | The PTO request ID |
cancel_pto_request
Cancel a pending or approved request.
| Parameter | Type | Required | Description |
|---|---|---|---|
request_id |
string | Yes | The PTO request ID |
reason |
string | No | Reason for cancellation |
team_calendar
View who's out on a given date range.
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date |
string | Yes | Start date (YYYY-MM-DD) |
end_date |
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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。