Skip to main content
Glama

Jira mcp

MCP server for Jira Server/Data Center (REST API v2). Lets an AI assistant (Claude Code, Claude Desktop, ...) read and write your Jira directly.

Requirements

  • A Jira Server/Data Center account (username + password).

  • Node.js 18+.

Related MCP server: Jira MCP Server

Quick start

Use Claude Code CLI:

claude mcp add g-jira-mcp npx -y g-jira-mcp@latest \
  --env JIRA_HOST="https://jira.company.com" \
  --env JIRA_USERNAME="your_username" \
  --env JIRA_PASSWORD="your_password"

Or manually add to .claude/settings.json (or claude_desktop_config.json):

{
  "mcpServers": {
    "g-jira-mcp": {
      "command": "npx",
      "args": ["-y", "g-jira-mcp@latest"],
      "env": {
        "JIRA_HOST": "https://jira.company.com",
        "JIRA_USERNAME": "your_username",
        "JIRA_PASSWORD": "your_password"
      }
    }
  }
}

Restart Claude Code/Desktop after editing the config.

Environment variables

Variable

Required

Description

JIRA_HOST

yes

Base URL, e.g. https://jira.company.com

JIRA_USERNAME

yes

Jira username

JIRA_PASSWORD

yes

Jira password

JIRA_START_DATE_FIELD

no

Custom field ID for "Start date" (default customfield_11300)

JIRA_EPIC_LINK_FIELD

no

Custom field ID for "Epic Link" (default customfield_10001)

JIRA_TIMEZONE

no

Timezone for WorklogPRO form (default Asia/Ho_Chi_Minh)

To discover custom field IDs on your instance:

curl -u user:pass https://jira.company.com/rest/api/2/field | jq '.[] | select(.name | test("story|point|start"; "i")) | {id, name}'

Tools

Tool

Description

Key parameters

get_ticket

Get full details of a Jira ticket by its key

ticket_id, optional: include_comments

search_tickets

Search Jira tickets using JQL query language

jql, max_results (optional, default 25)

create_ticket

Create a new Jira ticket

project, summary, issue_type, optional: assignee, body, parent_key, due_date, start_date, original_estimate, labels

update_ticket

Update fields of a Jira ticket

ticket_id, optional: summary, description, issue_type, parent_key, epic_key, labels, due_date, start_date, original_estimate, implementation_notes, assignee, priority

transition_ticket

Change a Jira ticket's status by name, alias-aware

ticket_id, status

add_comment

Add a comment to a Jira ticket

ticket_id, body

log_work

Log work (time) on a Jira ticket, optionally setting WorklogPRO Type of Work and Type of Activity

ticket_id, time_spent, optional: comment, started, work_type, activity

link_issues

Create a link between two Jira tickets

inward_issue, outward_issue, optional: link_type (default "Blocks")

generate_release_notes

Generate Markdown release notes for a fix version, grouped by issue type

fix_version, optional: project

Notes

  • Jira Server uses plain text for descriptions — no ADF format.

  • get_ticket omits unset fields rather than printing placeholder text. Key, Summary, Status and Assignee are always present (Assignee shows "Unassigned" when empty); other fields appear only when set. Pass include_comments=true to append the ticket's comment thread; comments are off by default to keep output small and save tokens. The same Jira request fetches everything, so including comments costs no extra API call. Comments are capped at 20 most recent; if a ticket has more, the header reads Comments (20 most recent of 45): so the caller knows older comments exist and can open the ticket in Jira to see them.

  • search_tickets output is adaptive: empty columns (no value anywhere) are dropped entirely, and constant columns (same value on every row, when there are 3+ rows) are stated once in the header as All: Status=In Progress and removed from the table. When columns are dropped, the header also notes which ones were empty across all results (e.g. Unset for every row: Priority, Parent, Start Date) so the caller can tell "no ticket has a due date" from "this tool doesn't return due dates". KEY and Summary are always kept. This keeps results focused and token-efficient. The header's Found N issue(s) (showing M) reports when the result was truncated — raise max_results above the default 25 to see more.

  • create_ticket and update_ticket both accept an assignee parameter (Jira username as a string, sent as {name: assignee}). In create_ticket, an empty assignee value is ignored. In update_ticket, pass assignee="" to unassign.

  • create_ticket applies original_estimate in a follow-up PUT rather than in the create payload: Jira Data Center answers a bare 500 Internal server error when timetracking is present in POST /issue, while the same value applies cleanly as an update afterwards. The ticket key is reported even if that second call fails, with a warning to set the estimate via update_ticket — so a failed estimate never sends you back to create a duplicate.

  • duedate is a standard field (YYYY-MM-DD); "Start date" is a custom field, configurable via JIRA_START_DATE_FIELD.

  • update_ticket's epic_key sets the Epic Link field (a custom field, configurable via JIRA_EPIC_LINK_FIELD, default customfield_10001) so the ticket shows under the epic's "Issues in Epic" panel — not the same as link_issues, which only creates a generic Linked Issue (e.g. "Relates"). Epic Link can only be set on standard issue types (Story/Task/Bug), not on Sub-tasks or Epics themselves.

  • search_tickets uses JQL syntax, e.g. project = GEM AND status = 'In Progress'.

  • transition_ticket resolves the transition ID automatically, matching either the transition's own name ("Resolve Issue") or the status it lands on ("Done"). Common aliases map onto whatever the workflow actually offers (Closed/Resolved/Complete → Done, Reopen → Re-Open, Todo → To Do, Cancelled → Won't Do), so the same call works across workflows with different status names. Exact matches win, then aliases, then a substring fallback. When nothing matches, the error lists every valid option for that issue as Transition -> Target Status; the tool description cannot list them because they vary per issue and workflow.

  • update_ticket only changes the fields you pass; omit a field to keep its current value. Pass assignee="" to unassign. implementation_notes appends to the description. Converting a standard issue type (Story, Task, Bug) to Sub-task or vice versa is a Jira REST API limitation — use the Jira UI "Move" action instead.

  • log_work advertises one canonical name per work type (code, deploy, design, fix, management, meeting, misc, operation, qa, req, research, translation) and per activity (correct, create, review) so its schema stays small; every alias still works as input (coding, dev, testing, ops, requirement, other, and the rest). activity is required when work_type is set. If neither is set, logs via plain REST (no WorklogPRO form). Start times are interpreted in the Jira server timezone (configurable via JIRA_TIMEZONE).

  • generate_release_notes groups tickets by type into Features / Improvements / Bug Fixes / Other.

  • Register the server as g-jira-mcp and use that key in every project. The key becomes the tool prefix (mcp__g-jira-mcp__get_ticket), so a project that registers it under a different name exposes different tool names — an agent carrying the habit of one name into a project configured with the other gets No such tool available.

  • Transient Jira failures (429, 500, 502, 503, 504) are retried up to twice with a 250ms/500ms backoff. Only GET, PUT and DELETE are replayed — a POST that returned 500 may already have created the comment, worklog or transition, so it fails fast instead of risking a duplicate.

  • All logs go to stderr; stdout is reserved for the MCP protocol.

Example prompts

  • "Search tickets in project GEM that are In Progress"

  • "Create a Story in GEM titled 'Release notes v2.0' due 2026-08-01"

  • "Update GEM-234, set the assignee to namcp and add label BugFix"

  • "Add a comment to GEM-234: 'Review done'"

  • "Generate release notes for fix version v2.4 in project GEM"

Troubleshooting

  • 401/403: recheck JIRA_USERNAME/JIRA_PASSWORD and whether the account can access the project.

  • Connection/timeout: verify JIRA_HOST format (starts with https://, no trailing /), and whether VPN/internal network is required.

  • Start date not saving: confirm JIRA_START_DATE_FIELD matches your instance (see the discovery command above).

  • No error logs: server logs go to stderr — check the MCP client (Claude Code/Desktop) output, not stdout.

Development

pnpm install
cp .env.example .env   # edit with your credentials
pnpm build             # bundle to dist/index.js via esbuild
pnpm lint              # biome check + tsc + prettier (markdown)
pnpm release           # release-it: bumps version, commits, tags, pushes (runs lint + build first, no pre-commit needed)
pnpm archive           # package release/jira-mcp-v<version>.zip

Support

Questions or issues? Email NamCP.

If this project helps you, consider buying me a coffee:

Available Tools

9 tools
add_commentB

Add a comment to a Jira ticket

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment text (plain text)
ticket_idYesJira issue key, e.g. GEM-234

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states 'Add a comment'. It does not disclose whether the operation is idempotent, requires permissions, or what the response looks like. Minimal behavioral info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded, and contains no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters with full schema descriptions and no output schema, the description is minimal. It lacks behavioral transparency and usage guidelines, making it insufficient for a complete contextual picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (body and ticket_id) with descriptions. The tool description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Add a comment to a Jira ticket' clearly identifies the verb (Add), resource (comment), and context (Jira ticket). It effectively distinguishes from sibling tools like create_ticket, update_ticket, and transition_ticket.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that it is for adding new comments as opposed to editing existing ones, nor does it reference any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_ticketB

Create a new Jira ticket

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoDescription text
labelsNoLabels to assign
projectYesProject key, e.g. GEM
summaryYesIssue title
assigneeNoAssignee username, e.g. username
due_dateNoDue date YYYY-MM-DD
issue_typeYesIssue type: Story, Task, Bug, Sub-task
parent_keyNoParent ticket key for Sub-task
start_dateNoStart date YYYY-MM-DD
original_estimateNoTime estimate e.g. "2h"

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits beyond creation, such as permissions, side effects, or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no fluff, but it could benefit from slightly more detail for a tool with 10 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and 10 parameters, the description is severely incomplete; it fails to explain return values, error conditions, or post-creation behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all 10 parameters have descriptions in the schema), so the description adds no additional parameter meaning; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new Jira ticket' clearly states the verb (create) and resource (Jira ticket), distinguishing it from sibling tools like get_ticket or update_ticket.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like update_ticket or transition_ticket; the description lacks context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_release_notesB

Generate Markdown release notes for a fix version, grouped by issue type

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoLimit to project key, e.g. "GEM"
fix_versionYesRelease version label, e.g. "v2.4"

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description lacks behavioral details. Does not state whether it is read-only, what happens if fix_version is invalid, any permissions needed, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, efficient and front-loaded. No wasted words, but could potentially add more context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations. Description omits details like scope of tickets included, required project, any filters applied. Incomplete for an agent to assess applicability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with descriptions (100% coverage). Description adds grouping context but no deeper parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Generate', specific resource 'Markdown release notes', and constraints 'for a fix version' and 'grouped by issue type'. Distinct from siblings which are CRUD and workflow actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. No mention of prerequisites, when-not-to-use, or context like requiring an existing fix version.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ticketA

Get full details of a Jira ticket by its key

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesJira issue key, e.g. GEM-234
include_commentsNoInclude the ticket's comments (default false)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It does not disclose behavioral traits beyond the action. It fails to mention that the operation is read-only, what 'full details' includes, or any rate limits/auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It directly conveys the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no output schema, the description adequately states the purpose but could mention the structure of returned data. Given the low complexity, it meets the minimum viable threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters having descriptions. The description adds no extra meaning beyond the schema; it repeats 'by its key' for ticket_id but does not elaborate on include_comments. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get full details), the resource (Jira ticket), and the identifier (by its key). It distinguishes from sibling tools like search_tickets (search) and update_ticket (mutation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. The usage is inferable from the action name and siblings, but the description does not provide any context about alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_workB

Log work (time) on a Jira ticket, optionally setting WorklogPRO Type of Work and Type of Activity

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoOptional work log comment
startedNoStart datetime ISO, e.g. '2026-06-29T09:00:00.000+0700'
activityNoType of Activity (required when work_type is set): correct, create, review
ticket_idYesJira issue key, e.g. GEM-234
work_typeNoType of Work: code, deploy, design, fix, management, meeting, misc, operation, qa, req, research, translation
time_spentYesTime spent, e.g. '2h 30m', '1d', '45m'

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as idempotency, permissions required, or side effects. It only states the basic action without deeper transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action, no superfluous words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing return value description and error handling context. For a mutation tool with no output schema, the description should explain what the response indicates (e.g., worklog ID), which is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds limited value beyond parameter names and descriptions. The mention of WorklogPRO provides minimal extra context, but mostly restates schema info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('log') and resource ('work/time on a Jira ticket'), clearly distinguishing it from sibling tools like add_comment or update_ticket.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like add_comment or transition_ticket. The description does not mention when not to use it or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_ticketsC

Search Jira tickets using JQL query language

ParametersJSON Schema
NameRequiredDescriptionDefault
jqlYesJQL query, e.g. 'project = GEM AND status = "In Progress"'
max_resultsNoMax results to return (default 25)

TDQS

C2.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description lacks any behavioral details such as pagination behavior, error handling, authentication requirements, or rate limits. Only states the obvious purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise and front-loaded. However, it sacrifices informational value for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with 2 parameters and no output schema, but description fails to mention return format, sorting, or any constraints. Missing key behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions (e.g., jql with example, max_results with default). Description adds no additional meaning beyond what schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Search', resource 'Jira tickets', and method 'JQL query language'. Distinguishes from sibling tools like get_ticket (single retrieval) and add_comment (add operation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like get_ticket for individual tickets, or when JQL is appropriate. No exclusion criteria or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transition_ticketC

Change the status of a Jira ticket by status name

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesTarget status name, e.g. "In Progress", "Done"
ticket_idYesJira issue key, e.g. GEM-234

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It fails to state whether the transition is irreversible, if it triggers notifications, how invalid transitions are handled (error or no-op), or if authorization is needed. The minimal phrase 'change the status' implies mutation but provides no safety or side-effect context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence that directly states the tool's function. There is no fluff or repetition. However, it could be slightly expanded with a use-case hint without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter tool with no output schema, the description covers the basic purpose. However, it lacks information about valid status values (e.g., are they restricted to workflow transitions?), error handling, or idempotency. The lack of annotations amplifies this gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters having clear descriptions ('Target status name' and 'Jira issue key') and examples. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Change the status') and the resource ('a Jira ticket') with the method ('by status name'). It distinguishes itself from siblings like 'update_ticket' by specifying the exact operation on status. However, it could be more explicit about being a state transition (e.g., 'transition a ticket to a new status using the workflow'), but it's still clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention that 'update_ticket' might be more appropriate for other field changes, or that transitions depend on workflow rules. The agent is left to infer usage from the purpose alone, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ticketB

Update fields of a Jira ticket. Converting between a standard issue type and Sub-task is a Jira REST API limitation — use Jira's UI "Move" action instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNoLabels to set
summaryNoReplace ticket summary/title
assigneeNoUsername to assign, or empty string to unassign
due_dateNoDue date YYYY-MM-DD
priorityNoPriority name, e.g. "High", "Medium", "Low"
ticket_idYesJira issue key, e.g. GEM-234
issue_typeNoIssue type: Story, Task, Bug, Sub-task
parent_keyNoParent ticket key for Sub-task
start_dateNoStart date YYYY-MM-DD
descriptionNoReplace full description
original_estimateNoTime estimate e.g. "2h", "1d 4h"
implementation_notesNoAppend implementation notes to description

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It only mentions the issue type conversion limitation. Other important traits like whether updates are additive or replace, permission requirements, and side effects are not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose, second warns about a critical limitation. Front-loaded and no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 12 parameters and no output schema or annotations. The description lacks essential behavioral context (e.g., whether updates are incremental or full replacements, required permissions) and does not explain return values or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description adds no extra parameter meaning beyond the schema. It does not clarify behavior for fields like labels (replace vs append) or interaction between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update fields of a Jira ticket', which is a specific verb+resource. It implicitly distinguishes from sibling tools like transition_ticket (status changes) and get_ticket (read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only minimal guidance: warns about the issue type conversion limitation and suggests using the UI 'Move' action instead. No explicit guidance on when to use this tool versus siblings like transition_ticket or create_ticket.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv2.2.0
    • Changedcreate_ticket1 field changed
      • addedInput schema / properties / assignee
        Added value: +{
        +  "description": "Assignee username, e.g. username",
        +  "type": "string"
        +}
    • Changedget_ticket1 field changed
      • addedInput schema / properties / include_comments
        Added value: +{
        +  "description": "Include the ticket's comments (default false)",
        +  "type": "boolean"
        +}
    • Changedlog_work3 fields changed
      • addedInput schema / properties / activity
        Added value: +{
        +  "description": "Type of Activity (required when work_type is set): correct, create, review",
        +  "type": "string"
        +}
      • changedInput schema / properties / started / description
        Previous value: -"Start datetime ISO format, e.g. '2026-06-29T09:00:00.000+0700'. Defaults to now."New value: +"Start datetime ISO, e.g. '2026-06-29T09:00:00.000+0700'"
      • addedInput schema / properties / work_type
        Added value: +{
        +  "description": "Type of Work: code, deploy, design, fix, management, meeting, misc, operation, qa, req, research, translation",
        +  "type": "string"
        +}
    • Changedsearch_tickets2 fields changed
      • changedInput schema / properties / max_results / default
        Previous value: -50New value: +25
      • changedInput schema / properties / max_results / description
        Previous value: -"Max results to return (default 50)"New value: +"Max results to return (default 25)"
  2. 1 tool updatev1.2.0
    • Changedupdate_ticket1 field changed
      • addedInput schema / properties / priority
        Added value: +{
        +  "description": "Priority name, e.g. \"High\", \"Medium\", \"Low\"",
        +  "type": "string"
        +}
  3. 9 tool updatesv1.1.1
    • First observedadd_comment
    • First observedcreate_ticket
    • First observedgenerate_release_notes
    • First observedget_ticket
    • First observedlink_issues
    • First observedlog_work
    • First observedsearch_tickets
    • First observedtransition_ticket
    • First observedupdate_ticket

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get, transition, update, comment, search, create, release notes, link, and log work. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_ticket, add_comment, link_issues). No deviations.

Tool Count5/5

9 tools cover core Jira ticket operations without being excessive. The count is well-scoped for the server's purpose.

Completeness4/5

Covers create, read, update, transition, search, comments, linking, release notes, and work logging. Missing delete ticket is a minor gap.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Jira Cloud and Server/Data Center deployments for issue management, project tracking, and workflow automation. Supports multiple authentication methods including API tokens, OAuth 2.0, and personal access tokens.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage Jira issues with full CRUD, transitions, linking, commenting, and file attachments via the Jira REST API v3.
    10
    60
    Apache 2.0