A Model Context Protocol (MCP) server for managing Tempo worklogs in Jira. This server provides tools for tracking time and managing worklogs through Tempo's API, making it accessible through Claude, Cursor and other MCP-compatible clients.
- Retrieve Worklogs: Get all worklogs for a specific date range
- Create Worklog: Log time against Jira issues
- Bulk Create: Create multiple worklogs in a single operation
- Edit Worklog: Modify time spent, dates, and descriptions
- Delete Worklog: Remove existing worklogs
- Node.js 18+ (LTS recommended)
- Jira Cloud instance
- Tempo API token
- Jira API token
There are two main ways to use this MCP server:
- NPX (Recommended for most users): Run directly without installation
- Local Clone: Clone the repository for development or customization
The easiest way to use this server is via npx without installation:
-
Open your MCP client configuration file:
- Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json
- Claude Desktop (Windows):
%APPDATA%\Claude\claude_desktop_config.json
- Claude Desktop (macOS):
-
Add the following configuration:
{
"mcpServers": {
"Jira_Tempo": {
"command": "npx",
"args": [
"-y",
"@ivelin-web/tempo-mcp-server"
],
"env": {
"TEMPO_API_TOKEN": "your_tempo_api_token_here",
"JIRA_API_TOKEN": "your_jira_api_token_here",
"JIRA_EMAIL": "your_email@example.com",
"JIRA_BASE_URL": "https://your-org.atlassian.net"
}
}
}
}
- Restart your Claude Desktop client
# Clone the repository
git clone https://github.com/ivelin-web/tempo-mcp-server.git
cd tempo-mcp-server
# Install dependencies
npm install
# Build TypeScript files
npm run build
There are two ways to run the server locally:
npm run inspect
You can run the server directly with Node by pointing to the built JavaScript file:
- Open your MCP client configuration file
- Add the following configuration:
{
"mcpServers": {
"Jira_Tempo": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/tempo-mcp-server/build/index.js"
],
"env": {
"TEMPO_API_TOKEN": "your_tempo_api_token_here",
"JIRA_API_TOKEN": "your_jira_api_token_here",
"JIRA_EMAIL": "your_email@example.com",
"JIRA_BASE_URL": "https://your-org.atlassian.net"
}
}
}
}
- Restart your Claude Desktop client
-
Tempo API Token:
- Go to Tempo > Settings > API Integration
- Create a new API token with appropriate permissions
-
Jira API Token:
- Go to Atlassian API tokens
- Create a new API token for your account
The server requires the following environment variables:
TEMPO_API_TOKEN # Your Tempo API token
JIRA_API_TOKEN # Your Jira API token
JIRA_EMAIL # Your Jira account email
JIRA_BASE_URL # Your Jira instance URL (e.g., https://your-org.atlassian.net)
You can set these in your environment or provide them in the MCP client configuration.
Fetches worklogs for the configured user between start and end dates.
Parameters:
- startDate: String (YYYY-MM-DD)
- endDate: String (YYYY-MM-DD)
Creates a new worklog for a specific Jira issue.
Parameters:
- issueKey: String (e.g., "PROJECT-123")
- timeSpentHours: Number (positive)
- date: String (YYYY-MM-DD)
- description: String (optional)
Creates multiple worklogs in a single operation.
Parameters:
- worklogEntries: Array of {
issueKey: String
timeSpentHours: Number
date: String (YYYY-MM-DD)
description: String (optional)
}
Modifies an existing worklog.
Parameters:
- worklogId: String
- timeSpentHours: Number (positive)
- description: String (optional)
- date: String (YYYY-MM-DD, optional)
Removes an existing worklog.
Parameters:
- worklogId: String
tempo-mcp-server/
├── src/ # Source code
│ ├── config.ts # Configuration management
│ ├── index.ts # MCP server implementation
│ ├── jira.ts # Jira API integration
│ ├── tools.ts # Tool implementations
│ ├── types.ts # TypeScript types and schemas
│ └── utils.ts # Utility functions
├── build/ # Compiled JavaScript (generated)
├── tsconfig.json # TypeScript configuration
└── package.json # Project metadata and scripts
If you encounter issues:
- Check that all environment variables are properly set
- Verify your Jira and Tempo API tokens have the correct permissions
- Check the console output for error messages
- Try running with the inspector:
npm run inspect
This server implements the Model Context Protocol specification created by Anthropic.