used-tempon
Allows logging time to Tempo (Jira time tracker), checking workload against contracted hours, and optionally searching for Jira users by display name.
Used optionally to search for Jira users by display name, enabling time logging and workload checks for other people by name.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@used-temponlog usual"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
used-tempon
A Python MCP server that lets you log time to Tempo (Jira time tracker) via natural language in Claude Desktop or OpenCode.
What it does
Four MCP tools are exposed:
Tool | Description |
| Log time for a date using a named preset; optionally for another person |
| Show expected vs. logged hours for a date; optionally for another person |
| Show current configuration (token is redacted) |
| Search for a Jira user by display name |
Hours per day come automatically from Tempo's user schedule — respects your contracted hours, not a hardcoded 8h assumption.
Related MCP server: Jira MCP Server
Prerequisites
Python 3.11+
A Tempo Cloud account with API access
A Tempo API token (see below)
Installation
git clone https://github.com/your-username/used-tempon.git
cd used-tempon
pip install -r requirements.txtConfiguration
Create ~/.tempo-config.json (this file is not committed — keep it private):
{
"tempoToken": "your-tempo-api-token",
"accountId": "your-atlassian-account-id",
"issueIds": {
"PROJECT-1": 10001,
"PROJECT-2": 10002,
"PROJECT-3": 10003,
"PROJECT-4": 10004
},
"presets": {
"usual": [
{"issueKey": "PROJECT-1", "percentage": 50, "description": "Feature work"},
{"issueKey": "PROJECT-2", "percentage": 50, "description": "Support"}
],
"sick": [
{"issueKey": "PROJECT-3", "percentage": 100, "description": "Sick leave"}
],
"vacation": [
{"issueKey": "PROJECT-4", "percentage": 100, "description": "Vacation"}
]
}
}You can also set the token via environment variable (takes precedence over the config file):
export TEMPO_TOKEN="your-tempo-api-token"How to get a Tempo API token
Go to Tempo → Settings → API Integration:
https://app.tempo.io/settings/api-integration
Generate a new token and copy it into tempoToken in your config file.
How to find issue IDs
The Tempo API requires the numeric integer issue ID, not the string issue key (e.g. PROJECT-123).
To find the numeric ID for an issue:
Call the Jira REST API:
GET /rest/api/3/issue/PROJECT-123and look at theidfieldOr inspect existing Tempo worklogs via
GET https://api.tempo.io/4/worklogs— each worklog contains"issue": {"id": 12345, "key": "PROJECT-123"}
How to find your Atlassian account ID
Visit your Jira profile page (click your avatar → Profile)
Or call
GET /rest/api/3/myself— the response includes"accountId"
Optional: Jira credentials for user name search
To log time or check workload for another person by name (e.g. "log usual for Alice"),
add Jira credentials to ~/.tempo-config.json:
{
"jiraBaseUrl": "https://yourorg.atlassian.net",
"jiraEmail": "you@example.com",
"jiraToken": "your-jira-api-token"
}These fields are optional. Without them, you can still log for others by passing their
Atlassian account ID directly (e.g. "log usual for 712020:abc123").
Get a Jira API token at: https://id.atlassian.com/manage-profile/security/api-tokens
Register in Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tempo": {
"command": "/path/to/python3",
"args": ["/path/to/used-tempon/mcp_server.py"]
}
}
}Replace /path/to/python3 with your Python 3.11+ binary (e.g. from which python3 or pyenv which python3).
Register in OpenCode
Add to ~/.config/opencode/opencode.json:
{
"mcp": {
"tempo": {
"type": "local",
"command": "/path/to/python3",
"args": ["/path/to/used-tempon/mcp_server.py"]
}
}
}Restart Claude Desktop or OpenCode after editing the config.
Usage
Once registered, use natural language in Claude or OpenCode:
"log usual" → logs today using the "usual" preset
"log sick for yesterday" → logs sick leave for yesterday
"log vacation for 2026-03-15" → logs vacation for a specific date
"check my workload for today" → shows logged vs expected hours
"what's my tempo config?" → shows configured presets and issue mappings
"log usual for 2026-02-20 force" → logs even if entries already exist
"log usual for Alice" → logs today for Alice (requires Jira credentials)
"check workload for Bob Smith" → checks Bob's workload (requires Jira credentials)
"search user alice" → finds Jira users matching "alice"
"log sick for 712020:abc123" → logs for a specific accountId (no Jira creds needed)Behaviour notes
Contracted hours: Total hours come from Tempo's user schedule for that day — not hardcoded 8h
Preset splits: Percentages in each preset are applied to the day's required seconds (e.g. 50/50 on a 6h45m day = 3h22m30s each)
Duplicate detection: Warns if entries already exist for a date; use
force=Trueto log anywayWeekend/holiday guard: Warns if Tempo says no hours are required for that day; use
force=Trueto overrideCross-user logging: Pass
personas a display name (requires Jira credentials) or raw accountId to log/check for someone else
File structure
used-tempon/
├── mcp_server.py # FastMCP server with MCP tools
├── tempo_api.py # Pure Tempo REST API client
├── requirements.txt # Python dependencies
└── README.md # This file~/.tempo-config.json lives outside the repo and is never committed.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Track billable time from your AI chat: timers, entries, reports, CSV export. All data stays local.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Related MCP Servers
- -licenseAqualityNot gradedmaintenanceEnables natural language time tracking through Claude with markdown file storage. Supports multi-company tracking, flexible time parsing, auto-calculated summaries, and commitment warnings all through conversational input.1-
- FlicenseBqualityDmaintenanceConnects Claude to Jira, allowing users to query tasks, log work, add comments, and execute JQL queries through conversational AI.22-
- AlicenseAqualityBmaintenanceEnables Claude to manage ATimeLogger time tracking: start/stop/pause activities, log intervals, and get reports via natural language.1035 npm14MIT
- FlicenseAqualityCmaintenanceEnables Claude to interact with 7pace Timetracker for Jira, supporting time logging, worklog queries, and summaries.6-