ATimeLogger MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ATL_TOKEN | Yes | Your personal access token from ATimeLogger (starts with 'atl_pat_') | |
| ATL_BASE_URL | No | Base URL of the ATimeLogger API (default: https://app.atimelogger.pro) | https://app.atimelogger.pro |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_activity_typesA | List the user's activity types as a tree (groups contain children): names plus internal ids. Use the names when talking to the user; use the ids for exact targeting in other tools. |
| get_current_statusA | Show currently running or paused activities with elapsed time. |
| start_activityA | Start tracking an activity by type name (fuzzy matched, see list_activity_types) or type_id. Optionally backdate the start with |
| stop_activityA | Stop a running or paused activity. type_name may be omitted when exactly one activity is active. Optionally backdate the stop with |
| pause_resume_activityB | Pause a running activity or resume a paused one. |
| log_intervalA | Retroactively log a completed time entry for an activity type. Times are wall-clock in the user's timezone, format "yyyy-MM-dd HH:mm". |
| update_activityA | Update the comment and/or tags of an existing entry (running, paused, or stopped) without changing its tracked time. Use this instead of logging a new entry when the user wants to annotate, describe, or re-tag something already tracked. Get activity_id from get_current_status (active timers) or list_intervals (past entries). |
| time_reportA | Aggregated time statistics per activity type for a date range. Returns overall totals plus per-DAY/WEEK/MONTH buckets. |
| list_intervalsA | List raw time entries (intervals) grouped by day for a date range (max 100 days). Paged by day — use |
| app_helpA | Official ATimeLogger app documentation. Use it to answer any question about how the app works, or how to do in the app what these tools cannot (edit entry times, delete records, goals, widgets, CSV export, sync, backups, Pomodoro, Premium features). Call with no arguments for the table of contents (its note covers platform applicability), then again with |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool targets a distinct action or query: listing types, controlling active timers, logging intervals, updating annotations, generating reports, listing raw intervals, and fetching help. There is no overlap or ambiguity between start, stop, pause/resume, and log_interval, as each has a clear, non-overlapping purpose.
Most tools follow a verb_noun pattern (list_activity_types, start_activity, stop_activity, update_activity, list_intervals). However, 'time_report' and 'app_help' break the pattern by not starting with a verb, and 'get_current_status' uses 'get' instead of 'list' or 'show', creating minor inconsistency.
The 10 tools are well-scoped for a time-tracking MCP server, covering the core lifecycle (start, stop, pause/resume, log), data retrieval (status, intervals, report), and configuration (activity types, help). No tool feels redundant or missing at this granularity.
The tool set covers the main workflows: managing active timers, logging entries, updating annotations, and retrieving both raw and aggregated data. Minor gaps exist, such as no direct edit of entry times or deletion of entries, but these are explicitly documented in app_help as intentionally not exposed, making them workarounds rather than dead ends.