tempo-api-mcp 1.0.2 → 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 +165 -0
- package/dist/bundle.js +21930 -0
- package/dist/client.js +9 -3
- package/package.json +6 -3
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
|