jira-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JIRA_URL | Yes | Base URL of Jira instance, e.g. https://jira.example.com | |
| JIRA_TIMEOUT | No | Request timeout in seconds | 75 |
| JIRA_SSL_VERIFY | No | Whether to verify TLS certificate | true |
| JIRA_PERSONAL_TOKEN | Yes | Personal Access Token (Bearer) for authentication |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_issueA | Get a single Jira issue by key (e.g. Args:
issue_key: The issue key, e.g. |
| search_issuesA | Search issues with a JQL query. Args:
jql: A JQL query, e.g. |
| add_commentB | Add a comment to a Jira issue. Args:
issue_key: The issue key, e.g. |
| get_issue_typesA | List the issue types available for Call this first when unsure what Args: project_key: Optional project key to restrict to the types actually enabled in that project's scheme. Without it, every type on the instance is returned. |
| create_issueA | Create a Jira issue — epic, task, story or sub-task. CALL THIS TOOL STRICTLY ON THE USER'S EXPLICIT REQUEST. It writes a real issue into the project under the token owner's name and this server cannot delete it afterwards. Never create issues on your own initiative (not to "track" work you are doing, not as an inferred step of another request). When several issues are described at once, confirm the list with the user before creating them. Args:
project_key: Target project key, e.g. Returns the created issue: |
| get_all_projectsA | List all Jira projects visible to the authenticated user. Args:
include_archived: Include archived projects in the result.
expand: Optional comma-separated list of fields to expand
(e.g. |
| get_projectA | Get a single Jira project by its key or id. Args:
project_key: The project key or id, e.g. |
| get_all_usersA | List all Jira users (union of the groups that grant Jira access). Jira Server/DC has no single "all users" endpoint — users are enumerated
through group membership. By default this reads every group that grants
Jira Software access on this instance and de-duplicates the members.
Pass Args:
groups: Group names to read. Defaults to the instance's Jira Software
license groups.
status: Which users to return by account state — |
| find_groupsA | Find Jira groups by name — use it to discover the license group name. Handy when you don't know which group holds all users. Search e.g.
Args:
query: Substring to match against group names (default |
| search_usersA | Search Jira users by name, username or email fragment. Args: query: Substring to match against username, display name or email. limit: Maximum number of users to return (default 50). include_inactive: Include deactivated users in the result. |
| get_user_worklogA | Total hours a user logged in a date range, optionally broken down. Uses the Tempo Timesheets API: one search returns all of the user's
worklogs in Args:
username: Tempo worker (Jira username / key).
date_from: Start date, inclusive, |
| get_users_worklogA | Total hours a group of users logged in a date range, per user. Uses the Tempo Timesheets API: one search covers every user in
Args:
usernames: Tempo workers (Jira usernames / keys).
date_from: Start date, inclusive, |
| get_team_worklogA | Hours every member of a Tempo team logged in a date range, per worker. Reproduces Tempo's "Logged Time" report grouped by worker (the
Args:
team_id: Tempo team id (the |
| add_worklogA | Log time on a Jira issue, as the user who owns the API token. CALL THIS TOOL STRICTLY ON THE USER'S EXPLICIT REQUEST. It is the only tool here that writes: it creates a real worklog under the user's name and cannot be undone from this server. Never call it on your own initiative — not after finishing a task, not to "correct" hours seen in a report, not as a step inferred from some other request. If the user has not asked to log time, ask them first. Args:
issue_key: The issue to log against, e.g. Returns the created worklog: |
| get_all_teamsA | List every Tempo team (id, name, lead, …). Use this to discover a team's numeric Args:
expand: Optional comma-separated Tempo expand fields
(e.g. |
| find_teamA | Find Tempo teams whose name contains Tempo has no server-side team search, so this lists every team and
filters locally. Handy to turn a team name into the Args:
query: Substring to match against the team name.
expand: Optional comma-separated Tempo expand fields
(e.g. |
| get_team_membersA | List all members of a Tempo team. Reads Args:
team_id: Tempo team id (e.g. 79).
raw: Return Tempo's untouched membership objects instead of the
flattened |
| get_user_planA | What a user is planned for in Tempo Planner over a date range. Answers "which projects is this person allocated to, for how many hours
per day": fetches the user's plan allocations and expands them into
planned hours within Args:
username: Jira username / login (Tempo assignee key).
date_from: Start date, inclusive, Returns |
| get_users_planA | What a group of users is planned for in Tempo Planner, per user. One allocation request covers every user in Args:
usernames: Jira usernames / logins (Tempo assignee keys).
date_from: Start date, inclusive, Returns |
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 19 tools
Each tool targets a distinct resource and action. For example, get_project vs get_all_projects, search_users vs get_all_users, and the three worklog tools (get_user_worklog, get_users_worklog, get_team_worklog) have clear scopes (single user, group, team) with no overlap.
Tool names follow a consistent verb_noun pattern: get_* for retrieval, search_* for search, add_* for creation, create_issue, and find_* for lookup. No mixed conventions or vague verbs.
19 tools is well-scoped for a Jira/Tempo integration covering projects, issues, users, teams, worklogs, and plans. Each tool serves a clear purpose without being too few or too many.
The tool set covers core workflows: project/issue retrieval, user/team discovery, worklog and plan queries, and limited write operations (add_worklog, create_issue, add_comment). Missing update/delete operations for issues, but the primary focus on reporting is well-supported.