tempo-api-mcp 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md ADDED
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: tempo-api-mcp
3
+ description: Access Tempo time-tracking data via MCP. Use when the user asks about Tempo worklogs, plans, teams, accounts, or wants to log time, check resource allocations, or manage timesheet approvals. Triggers on phrases like "log my time in Tempo", "how many hours did I log this week", "check my team's worklogs", "what's the resource plan for this sprint", or any request involving Jira/Tempo time tracking. Requires tempo-api-mcp installed and the tempo server registered (see Setup below).
4
+ ---
5
+
6
+ # tempo-api-mcp
7
+
8
+ MCP server for Tempo — natural-language time-tracking and resource planning via the Tempo API.
9
+
10
+ - **npm:** [npmjs.com/package/tempo-api-mcp](https://www.npmjs.com/package/tempo-api-mcp)
11
+ - **Source:** [github.com/chrischall/tempo-api-mcp](https://github.com/chrischall/tempo-api-mcp)
12
+
13
+ ## Setup
14
+
15
+ ### Option A — npx (recommended)
16
+
17
+ Add to `.mcp.json` in your project or `~/.claude/mcp.json`:
18
+
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "tempo": {
23
+ "command": "npx",
24
+ "args": ["-y", "tempo-api-mcp"],
25
+ "env": {
26
+ "TEMPO_API_TOKEN": "your-api-token-here"
27
+ }
28
+ }
29
+ }
30
+ }
31
+ ```
32
+
33
+ ### Option B — from source
34
+
35
+ ```bash
36
+ git clone https://github.com/chrischall/tempo-api-mcp
37
+ cd tempo-api-mcp
38
+ npm install && npm run build
39
+ ```
40
+
41
+ Then add to `.mcp.json`:
42
+
43
+ ```json
44
+ {
45
+ "mcpServers": {
46
+ "tempo": {
47
+ "command": "node",
48
+ "args": ["/path/to/tempo-api-mcp/dist/index.js"],
49
+ "env": {
50
+ "TEMPO_API_TOKEN": "your-api-token-here"
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ```
56
+
57
+ Or use a `.env` file in the project directory with `TEMPO_API_TOKEN=<value>`.
58
+
59
+ ### Getting your API token
60
+
61
+ 1. Log in to your Tempo workspace
62
+ 2. Go to **Settings → API integration**
63
+ 3. Create a new token and copy it
64
+
65
+ ## Authentication
66
+
67
+ Bearer token auth — attached to every request as `Authorization: Bearer <token>`.
68
+
69
+ ## Tools
70
+
71
+ ### Worklogs
72
+ | Tool | Description |
73
+ |------|-------------|
74
+ | `tempo_get_worklogs` | List worklogs with optional filters (project, issue, date range) |
75
+ | `tempo_get_worklog(id)` | Get a single worklog by id |
76
+ | `tempo_create_worklog(authorAccountId, issueId, startDate, timeSpentSeconds, ...)` | Log time against a Jira issue |
77
+ | `tempo_update_worklog(id, authorAccountId, startDate, timeSpentSeconds, ...)` | Update an existing worklog |
78
+ | `tempo_delete_worklog(id)` | Delete a worklog |
79
+ | `tempo_search_worklogs(authorIds?, issueIds?, projectIds?, from?, to?, ...)` | Advanced search via POST |
80
+ | `tempo_get_worklogs_by_user(accountId, from?, to?)` | All worklogs for a user |
81
+ | `tempo_get_worklogs_by_project(projectId, from?, to?)` | All worklogs for a Jira project |
82
+ | `tempo_get_worklogs_by_issue(issueId, from?, to?)` | All worklogs for a Jira issue |
83
+ | `tempo_get_worklogs_by_team(teamId, from?, to?)` | All worklogs for a Tempo team |
84
+ | `tempo_get_worklogs_by_account(accountKey, from?, to?)` | All worklogs for a Tempo account |
85
+
86
+ ### Plans (Resource Allocations)
87
+ | Tool | Description |
88
+ |------|-------------|
89
+ | `tempo_get_plans(from, to, ...)` | List plans for a date range |
90
+ | `tempo_get_plan(id)` | Get a single plan by id |
91
+ | `tempo_create_plan(assigneeId, assigneeType, planItemId, planItemType, startDate, endDate, ...)` | Create a resource allocation plan |
92
+ | `tempo_update_plan(id, ...)` | Update an existing plan |
93
+ | `tempo_delete_plan(id)` | Delete a plan |
94
+
95
+ ### Teams
96
+ | Tool | Description |
97
+ |------|-------------|
98
+ | `tempo_get_teams(...)` | List teams with optional filters |
99
+ | `tempo_get_team(id)` | Get a single team by id |
100
+ | `tempo_create_team(name, ...)` | Create a new team |
101
+ | `tempo_update_team(id, name, ...)` | Update a team |
102
+ | `tempo_delete_team(id)` | Delete a team |
103
+ | `tempo_get_team_memberships(...)` | List team memberships |
104
+ | `tempo_search_team_memberships(...)` | Advanced membership search via POST |
105
+
106
+ ### Accounts
107
+ | Tool | Description |
108
+ |------|-------------|
109
+ | `tempo_get_accounts()` | List all accounts (OPEN and CLOSED) |
110
+ | `tempo_get_account(key)` | Get a single account by key |
111
+ | `tempo_search_accounts(...)` | Search accounts by status, category, or project |
112
+ | `tempo_create_account(key, name, ...)` | Create a new account |
113
+ | `tempo_update_account(key, name, ...)` | Update an account |
114
+ | `tempo_delete_account(key)` | Delete an account |
115
+ | `tempo_get_account_categories()` | List all account categories |
116
+
117
+ ### Projects & Timesheets
118
+ | Tool | Description |
119
+ |------|-------------|
120
+ | `tempo_get_projects()` | List Tempo Financial Manager projects |
121
+ | `tempo_get_project(id)` | Get a project by id |
122
+ | `tempo_get_timesheet_approval_status(accountId, from?, to?)` | Get timesheet approval status for a user |
123
+ | `tempo_get_timesheet_approvals_waiting()` | List timesheets waiting for approval |
124
+ | `tempo_search_timesheet_approval_logs(...)` | Search approval audit logs |
125
+ | `tempo_get_periods(from?, to?)` | Get Tempo period definitions |
126
+ | `tempo_get_user_schedule(accountId, from, to)` | Get a user's work schedule |
127
+ | `tempo_get_global_configuration()` | Get global Tempo settings |
128
+ | `tempo_get_work_attributes()` | List custom worklog attributes |
129
+ | `tempo_get_roles()` | List all Tempo roles |
130
+
131
+ ## Workflows
132
+
133
+ **Log time for today:**
134
+ ```
135
+ tempo_create_worklog(authorAccountId, issueId, startDate: "today", timeSpentSeconds: 3600)
136
+ ```
137
+
138
+ **See this week's time for a user:**
139
+ ```
140
+ tempo_get_worklogs_by_user(accountId, from: "2026-03-16", to: "2026-03-20")
141
+ ```
142
+
143
+ **Check resource plan for a project:**
144
+ ```
145
+ tempo_get_plans(from: "2026-03-01", to: "2026-03-31", projectIds: [123])
146
+ ```
147
+
148
+ **Find all worklogs for an issue:**
149
+ ```
150
+ tempo_get_worklogs_by_issue(issueId: 456, from: "2026-01-01")
151
+ ```
152
+
153
+ **Review pending timesheet approvals:**
154
+ ```
155
+ tempo_get_timesheet_approvals_waiting()
156
+ tempo_get_timesheet_approval_status(accountId, from: "2026-03-01", to: "2026-03-31")
157
+ ```
158
+
159
+ ## Notes
160
+
161
+ - `timeSpentSeconds` is always an integer (e.g. `3600` = 1 hour, `1800` = 30 min)
162
+ - `authorAccountId` is the Atlassian account id (not a username) — required for all worklog operations
163
+ - `tempo_get_plans` requires both `from` and `to` — no other filter is mandatory
164
+ - Default pagination limit is 50 for most endpoints; use `offset` + `limit` to page through results
165
+ - `tempo_delete_worklog` is a hard delete — there is no restore