BookYourPTO MCP uses OAuth 2.0 with PKCE for authentication. You sign in via your browser on BookYourPTO's domain — your password never touches the AI client or the MCP server.
AI Client MCP Server BookYourPTO
│ │ │
│── GET /sse ───────────►│ │
│◄── 401 (OAuth) ────────│ │
│ │ │
│── Browser opens ──────►│── redirect ───────────►│
│ │ │── User logs in
│◄── code + state ───────│◄── redirect ───────────│ (browser)
│ │ │
│── POST /token ────────►│── proxy ──────────────►│
│◄── access_token ───────│◄── tokens ─────────────│
│ │ │
│── GET /sse + Bearer ──►│ │
│◄══ SSE connected ══════│ │
For local development or self-hosted deployments, you can pre-authenticate with a shared service account by setting BYPTO_EMAIL and BYPTO_PASSWORD environment variables. In this mode, all connections share the service account's identity and no browser login is required.
The MCP server inherits the permissions of the authenticated user. Tools enforce the same role-based access rules as the BookYourPTO web application.
| Role | Level | Description |
|---|---|---|
EMPLOYEE | Basic | View own data only |
DEPARTMENT_HEAD | Manager | View/manage own department |
ADMINISTRATOR | Admin | Full access to all features |
EXECUTIVE | Executive | Full access + org-wide analytics |
| Tool | EMPLOYEE | DEPT_HEAD | ADMIN | EXECUTIVE |
|---|---|---|---|---|
query_leaves (own) | Yes | Yes | Yes | Yes |
query_leaves (others) | No | Department | All | All |
create_leave_request | Yes | Yes | Yes | Yes |
get_leave_balance (own) | Yes | Yes | Yes | Yes |
get_leave_balance (others) | No | Department | All | All |
get_pending_leave_approvals | No | Yes | Yes | Yes |
approve_or_reject_leave | No | Yes | Yes | Yes |
get_time_tracking_status | Own | Department | All | All |
clock_action | Yes | Yes | Yes | Yes |
query_time_entries | Own | Department | All | All |
query_expenses (own) | Yes | Yes | Yes | Yes |
query_expenses (others) | No | Department | All | All |
get_expense_approvals | No | Yes | Yes | Yes |
approve_or_reject_expense | No | Yes | Yes | Yes |
get_team_members | Yes | Yes | Yes | Yes |
get_user_profile | Own | Department | All | All |
get_departments | Yes | Yes | Yes | Yes |
get_org_info | Yes | Yes | Yes | Yes |
get_public_holidays | Yes | Yes | Yes | Yes |
get_dashboard_stats | No | No | No | Yes |
get_notifications | Yes | Yes | Yes | Yes |
list_projects | Visible | Visible | All | All |
create_shift | No | Yes | Yes | Yes |
publish_schedule | No | No | Yes | Yes |
generate_leave_report | No | No | Yes | Yes |
generate_timesheet_report | No | No | Yes | Yes |
.env file with restricted permissions (chmod 600)