Jira MCP Server
Provides tools for interacting with Jira Cloud, enabling AI agents to manage issues, search, create, update, transition, link, comment, and attach files via the Jira REST API.
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., "@Jira MCP ServerShow my open tasks"
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.
Jira MCP Server
MCP (Model Context Protocol) server for Jira Cloud. Provides AI assistants with tools to read, search, create, update, transition, link, comment, and attach files to Jira issues via the REST API v3. Text fields (descriptions, comments) support Markdown formatting.
Prerequisites
Node.js 18+
Jira Cloud instance
API Token for your Atlassian account (create one here)
Related MCP server: Jira MCP Integration
Setup
npm install
npm run buildCreate a .env file (see .env.example):
JIRA_BASE_URL=https://jira.example.com
JIRA_EMAIL=user@example.com
JIRA_API_TOKEN=your-api-tokenRunning as MCP Server
Add to your Cursor mcp.json:
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["C:\\repos\\Custom-MCP\\Jira\\dist\\index.js"]
}
}
}Or run directly for development (without building):
npm run devTools
get_my_tasks
Returns active tasks assigned to the current user.
Parameter | Type | Default | Description |
| number | 10 | Max tasks to return (1-50) |
JQL: assignee = currentUser() AND status NOT IN (Done, Cancelled) ORDER BY priority DESC
get_task_details
Returns full context for a single issue: summary, description, status, assignee, comments, attachments, and issue links.
Parameter | Type | Description |
| string | Issue key, e.g. |
Response includes issueLinks[] with id, linkType, direction, relation, and linked issue details. Use the link id with unlink_issues to remove a link.
search_tasks
Searches issues by text query or raw JQL. Provide either query or jql, not both.
Parameter | Type | Default | Description |
| string | Text to search for (uses | |
| string | Raw JQL query | |
| number | 5 | Max results (1-50) |
update_task_status
Transitions an issue to a new status. Fetches available transitions first, matches by name (case-insensitive), then executes.
Parameter | Type | Description |
| string | Issue key, e.g. |
| string | Target transition, e.g. |
create_task
Creates a new Jira issue. Description supports Markdown formatting.
Parameter | Type | Default | Description |
| string | Project key (e.g. | |
| string | Issue title | |
| string |
| Issue type (Task, Bug, Story, Epic ...) |
| string | Description (supports Markdown) | |
| string | Parent issue key (e.g. epic key) |
update_task
Updates fields on an existing Jira issue. Only provided fields are changed. Description supports Markdown formatting.
Parameter | Type | Description |
| string | Issue key, e.g. |
| string | New issue title |
| string | New description (supports Markdown) |
| string | New issue type (Story, Bug, Task ...) |
| string | New parent issue key (e.g. epic key) |
link_issues
Creates a link between two Jira issues. Use get_task_details to see existing links.
Parameter | Type | Description |
| string | Link type name (e.g. |
| string | Issue key that gets the outward relation (e.g. the blocker) |
| string | Issue key that gets the inward relation (e.g. the blocked) |
Common link types: Blocks (blocks / is blocked by), Relates (relates to), Duplicate (duplicates / is duplicated by), Cloners (clones / is cloned by).
unlink_issues
Removes a link between two issues by link ID. Get the link ID from get_task_details → issueLinks[].id.
Parameter | Type | Description |
| string | Issue link ID to delete |
add_comment
Adds a comment to an issue. Supports Markdown formatting.
Parameter | Type | Description |
| string | Issue key, e.g. |
| string | Comment text (supports Markdown) |
attach_file
Uploads a file from disk and attaches it to an issue. Optionally adds a comment in the same call.
Parameter | Type | Required | Description |
| string | yes | Issue key, e.g. |
| string | yes | Absolute path to the file on disk |
| string | no | Optional comment to add after attaching |
CLI
A standalone CLI runner is included for manual testing outside of MCP. It uses the same .env config and the same Jira client.
npm run cli -- <tool_name> [json_args]Examples (key=value — works everywhere)
The recommended way to pass arguments. No quoting issues on any OS or shell.
npm run cli -- --help
npm run cli -- get_my_tasks
npm run cli -- get_my_tasks max_results=5
npm run cli -- get_task_details issue_key=PROJ-123
npm run cli -- search_tasks query="oauth bug" max_results=5
npm run cli -- search_tasks jql="project = PROJ AND status = Open"
npm run cli -- create_task project=PROJ summary="Fix login bug" issue_type=Bug description="**Steps:** ..." parent=PROJ-100
npm run cli -- update_task issue_key=PROJ-123 summary="Updated title" description="New **description**"
npm run cli -- update_task_status issue_key=PROJ-123 transition_name="In Progress"
npm run cli -- add_comment issue_key=PROJ-123 comment="Fixed in PR #42"
npm run cli -- attach_file issue_key=PROJ-123 file_path=C:\path\to\report.pdf
npm run cli -- attach_file issue_key=PROJ-123 file_path=C:\path\to\report.pdf comment="See attached report"
npm run cli -- link_issues link_type=Blocks outward_issue=PROJ-1 inward_issue=PROJ-2
npm run cli -- unlink_issues link_id=12345Examples (JSON — Bash / macOS / Linux)
JSON is also accepted as a single argument when wrapped in single quotes:
npm run cli -- get_task_details '{"issue_key": "PROJ-123"}'
npm run cli -- search_tasks '{"query": "oauth bug", "max_results": 5}'Windows note:
npm.cmdpasses arguments throughcmd.exe, which strips double quotes. Use thekey=valueformat on Windows instead of JSON.
Output is formatted JSON printed to stdout. Errors print to stderr with a non-zero exit code.
Project Structure
src/
index.ts — MCP server entry point (stdio transport)
cli.ts — CLI entry point for manual testing
config.ts — .env loader, validates JIRA_BASE_URL / EMAIL / API_TOKEN
adf.ts — ADF ↔ Markdown/plain-text conversion
jira-client.ts — HTTP wrapper over native fetch with Basic Auth
response.ts — successResponse / errorResponse helpers
tools/
getMyTasks.ts
getTaskDetails.ts
searchTasks.ts
updateTaskStatus.ts
addComment.ts
attachFile.ts
createTask.ts
updateTask.ts
linkIssues.ts
unlinkIssues.ts
docs/
markdown-formatting.md — Supported Markdown syntax referenceAvailable Tools
10 toolsadd_commentA
Add a comment to a Jira issue. Supports Markdown formatting.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | Yes | Comment text (supports Markdown) | |
| issue_key | Yes | Jira issue key (e.g. PROJ-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates the mutation ('Add') and notes Markdown formatting support, but does not disclose side effects beyond the obvious addition, such as permissions required, whether the issue must exist, or what the response contains. This is a moderate gap but acceptable for a straightforward action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core action is front-loaded, and the Markdown formatting note is a useful addition that earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with complete schema descriptions and no output schema, the description is nearly sufficient. It states the action and formatting capability. Minor omissions like return value or confirmation behavior are not critical for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema itself. The description only repeats the Markdown support detail already present in the comment parameter description, adding no new semantic value beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Add') and resource ('comment to a Jira issue'), making the tool's purpose immediately obvious. It distinguishes itself from sibling tools, none of which perform comment creation, so there is no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly defines the context of use: adding a comment to a Jira issue. While it does not explicitly mention when not to use it or name alternatives, no sibling tool overlaps with this functionality, so the usage context is clear and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_fileA
Upload a file from disk and attach it to a Jira issue.
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Optional comment to add after attaching | |
| file_path | Yes | Absolute path to the file on disk | |
| issue_key | Yes | Jira issue key (e.g. PROJ-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It accurately states the core behavior — reading a file from disk and attaching it to an issue — and 'attach' implies a write to the Jira issue. However, it does not mention failure modes (file not found, size limits), permission requirements, or that the optional comment is posted as part of the operation. Adequate for a low-risk additive action but adds no depth beyond the bare action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 12-word sentence with the action verb front-loaded and zero filler. Every word earns its place, and it avoids duplicating what the schema already documents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema and no nested objects, the description plus the fully-covered schema provide enough to call the tool correctly. Minor gaps exist — no annotations and no mention of success/failure responses or side effects — but these are low-risk omissions for such a straightforward additive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with issue_key, file_path, and comment each documented in the schema, so the baseline is 3. The description adds no parameter-specific detail beyond loosely echoing 'file from disk' and 'Jira issue', but it doesn't need to compensate given the complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair ('upload a file from disk', 'attach it to a Jira issue') that is instantly unambiguous. It also distinguishes itself from every sibling — none of get_my_tasks, get_task_details, search_tasks, update_task_status, add_comment, create_task, update_task, link_issues, or unlink_issues involves file attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys its usage context directly: use this when a file on disk needs to be attached to a Jira issue. No sibling tool overlaps with file attachment, so routing is unambiguous without explicit exclusions. It stops short of a 5 because it never names alternatives or states when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskB
Create a new Jira issue. Description supports Markdown formatting (headings, bold, italic, code, lists, links, blockquotes).
| Name | Required | Description | Default |
|---|---|---|---|
| parent | No | Parent issue key (e.g. epic key PROJ-100) to link this issue under | |
| project | Yes | Project key (e.g. PROJ) | |
| summary | Yes | Issue title / summary | |
| issue_type | No | Issue type name (default: Task). Common values: Task, Bug, Story, Epic | Task |
| description | No | Issue description (supports Markdown) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It states the core creating action and notes Markdown support, but does not disclose side effects beyond creation, required permissions, validation behavior, return value, whether the operation is idempotent, or what happens on failure. This is a significant gap for a mutation tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences and is front-loaded with the primary purpose. The second sentence provides useful formatting detail for the description parameter, though it partially duplicates the schema field description. It is appropriately compact with no major wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with fully documented parameters, the description covers the core operation and a useful formatting detail. However, with no annotations and no output schema, it leaves out useful context such as what the tool returns (e.g., created issue key), any required permissions, and explicit guidance for distinguishing this from update_task. The definition is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 every parameter. The description adds no new parameter-level meaning; the Markdown note is already present in the schema's description field. With full schema coverage, the baseline of 3 is appropriate, though the description could have added value by clarifying parameter relationships or expected formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Create a new Jira issue') that clearly identifies the operation and resource. The word 'new' distinguishes it from sibling tools like update_task or search_tasks. No ambiguity remains about the tool's core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation 'Create a new Jira issue' implies that this tool should be used when a new issue is needed, rather than when updating or querying existing issues. However, it does not explicitly state when-not-to-use, mention alternatives, or provide routing guidance such as 'use update_task for existing issues.' The guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_tasksA
Get active tasks assigned to the current user, ordered by priority descending.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum number of tasks to return (1-50, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It does convey useful behavior: filtering to active tasks, scoping to the current user, and returning results by priority. However, it does not disclose the response format, pagination behavior, whether an empty result is possible, or any authentication requirements. The read-only nature is implied by 'Get' but not explicitly confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, scope, and ordering with no redundant words. Every element earns its place, and the most important information appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one fully documented parameter, the description covers the essential invocation context: what is returned, whose tasks, and the ordering. It does not specify the output schema or pagination details, but the tool's complexity is low and no output schema exists, so these are minor gaps rather than critical ones.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, max_results, is fully documented in the schema with a description, default value, minimum, and maximum. Since schema description coverage is 100%, the description does not need to add parameter details. It adds no extra semantic value for parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a specific resource ('active tasks assigned to the current user'), and an ordering constraint ('by priority descending'). This clearly distinguishes it from siblings like search_tasks (broader search) and get_task_details (single task lookup), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is for the current user's active tasks, ordered by priority. However, it does not explicitly state when to prefer this tool over alternatives such as search_tasks or get_task_details, nor does it mention when not to use it. The usage guidance is implied by the scope, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_detailsA
Get full context for a Jira issue including description, status, assignee, and comments.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Jira issue key (e.g. PROJ-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It clearly signals a read operation and specifies the returned content, but it does not mention behavior for invalid issue keys, permissions, or whether comments are fully expanded or truncated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the operation and expected result. Every word contributes value, and there is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieval tool with no output schema, listing the returned categories gives the agent enough context to set expectations. It could note the lack of an explicit response shape, but the low complexity and full schema coverage make that a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single issue_key parameter is fully documented in the schema with a pattern and example, giving 100% schema coverage. The description adds no additional parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action 'Get full context for a Jira issue' and enumerates the key fields returned: description, status, assignee, and comments. This clearly distinguishes it from sibling list/search tools like get_my_tasks and search_tasks, which operate at a different granularity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when the agent needs complete details on a single known issue, but it never explicitly names alternatives or states when not to use it. The distinction from get_my_tasks and search_tasks is inferable from sibling names, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_issuesA
Create a link between two Jira issues. Common link types: Blocks (blocks / is blocked by), Relates (relates to), Duplicate (duplicates / is duplicated by), Cloners (clones / is cloned by).
| Name | Required | Description | Default |
|---|---|---|---|
| link_type | Yes | Link type name (e.g. 'Blocks', 'Relates', 'Duplicate') | |
| inward_issue | Yes | Issue key that gets the inward description (e.g. the one that 'is blocked by') | |
| outward_issue | Yes | Issue key that gets the outward description (e.g. the one that 'blocks') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of disclosing behavioral context. It states the core mutation ('Create a link') but does not mention permission requirements, whether duplicate links are allowed or rejected, what happens on invalid link types, or how the relationship appears on both issues. The directional examples add some context but largely duplicate the parameter schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. It front-loads the primary action and then supplies the most useful supporting detail about common link types. Every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple three-parameter tool, the description plus the fully descriptive input schema is sufficient for an agent to invoke it correctly. It lacks an explicit alternative to unlink and does not describe return values or error cases, but those are not strictly necessary to make the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters. The description adds value beyond the schema by listing common link types like 'Blocks', 'Relates', 'Duplicate', and 'Cloners', and by clarifying directional wording such as 'blocks' vs 'is blocked by'. This helps the agent choose valid values for link_type and correctly assign outward/inward issues.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence, 'Create a link between two Jira issues,' uses a specific verb and target resource, making the tool's function immediately clear. The common link types section also helps an agent understand the scope of the operation. This clearly differentiates it from siblings like unlink_issues by stating creation rather than removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when the agent needs to link two Jira issues. However, it does not explicitly mention when not to use it or point to alternatives such as unlink_issues for removing an existing link, so the guidance is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tasksA
Search Jira issues by text query or raw JQL. Provide either 'query' (text search) or 'jql' (raw JQL), not both.
| Name | Required | Description | Default |
|---|---|---|---|
| jql | No | Raw JQL query (e.g. 'project = PROJ AND status = "In Progress"') | |
| query | No | Text to search for in issues (uses text ~ "...") | |
| max_results | No | Maximum number of results (1-50, default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description itself must carry behavioral disclosure. It communicates the mutual-exclusivity constraint between 'query' and 'jql', which is not enforced by the schema, and 'Search' implies a read-only operation. It could add more about result shape or pagination behavior, but the core behavioral constraints are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence communicates the core purpose and the key usage constraint. Every part contributes useful information with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with well-documented parameters, this is nearly complete: it explains the two search modes and the either/or constraint. It does not state what happens if neither 'query' nor 'jql' is supplied, but since the schema marks them optional, that edge case is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well documented. The description adds value by stating that 'query' and 'jql' are mutually exclusive and by explaining the semantic split between text search and raw JQL — useful context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names a specific verb ('Search'), a specific resource ('Jira issues'), and the two supported search modes ('text query' and 'raw JQL'). This clearly distinguishes search_tasks from sibling tools like get_my_tasks or get_task_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear parameter-level usage guidance: provide either 'query' or 'jql', not both. However, it does not explicitly contrast with sibling tools or state when to prefer this over get_my_tasks or get_task_details, so usage vs alternatives is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlink_issuesA
Remove a link between two Jira issues by link ID. Get the link ID from get_task_details issueLinks field.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | Issue link ID (from get_task_details issueLinks[].id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry behavioral disclosure. It names the removed object (the link) but does not state whether the removal is permanent, whether special permissions are required, what happens for invalid link IDs, or whether the issues themselves are otherwise affected. For a mutating tool with no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the action is front-loaded and the necessary ID source follows immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description supplies the operation, the resource, and the exact input source. The only gap is that it does not disclose whether unlinking is permanent or requires special permissions, which matters for a mutating tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter link_id is fully described in the schema, including its source (get_task_details issueLinks[].id), and the description repeats that source. With 100% schema coverage, the description adds no new parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove') and resource ('link between two Jira issues'), and identifies the required identifier ('link ID'). This clearly distinguishes it from the sibling link_issues tool, which performs the opposite operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit precondition: obtain the link ID from get_task_details issueLinks. It does not explicitly state when not to use this tool or name link_issues as the creation alternative, but the context is clear enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskB
Update fields on an existing Jira issue. Only provided fields are changed. Description supports Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| parent | No | New parent issue key (e.g. epic key PROJ-100) | |
| summary | No | New issue title | |
| issue_key | Yes | Jira issue key (e.g. PROJ-123) | |
| issue_type | No | New issue type (e.g. Story, Bug, Task) | |
| description | No | New description (supports Markdown) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses partial-update semantics ('Only provided fields are changed') and calls out Markdown support for descriptions. But it omits other behavioral detail such as required permissions, error behavior, reversibility, or what the tool returns, which remains a gap for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core action and the critical partial-update behavior. The second sentence about Markdown is somewhat redundant with the schema but still adds emphasis. It is appropriately compact overall, though the brevity leaves completeness gaps captured in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is not complete enough for an agent to reliably choose among siblings, especially because update_task_status appears nearby and the description never clarifies that status is not a field to update here. There is no output or error information, and no explicit mention of when to prefer this tool over alternatives. Given no annotations and no output schema, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 every parameter. The description adds one useful nuance—that only provided fields change—and mentions Markdown support, but this largely overlaps with the schema's own parameter descriptions. This is a solid baseline-3 contribution rather than meaningfully richer semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Update), resource (fields on an existing Jira issue), and that it modifies an existing record, distinguishing it from create_task. However it doesn't explicitly differentiate itself from update_task_status, and the phrase 'fields' could be read broadly enough to include status without clarification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no scenario guidance and names no alternatives, failing to route the agent between update_task and the nearby sibling update_task_status. The only related hint is 'existing' Jira issue, which implies not for creation, but this is indirect. 'Only provided fields are changed' is more behavioral than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_statusB
Transition a Jira issue to a new status using the Jira transitions API.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_key | Yes | Jira issue key (e.g. PROJ-123) | |
| transition_name | Yes | Target transition name (e.g. 'In Progress', 'Done') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It correctly indicates a state-changing operation but does not disclose error behavior, authorization requirements, or workflow-validity constraints, which are important for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It communicates the action, resource, and method in a compact form that an agent can parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-changing tool with no output schema and no annotations, the description omits critical context: transition validity depends on the issue's current workflow status, and the tool's behavior on invalid transitions is undisclosed. An agent could correctly invoke it for a simple case but would be unprepared for failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with meaningful descriptions for both parameters, so the schema already does the heavy lifting. The description adds no parameter-specific meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Transition'), a clear resource ('a Jira issue'), and a precise target ('a new status'), and it names the underlying API ('Jira transitions API'). This makes it readily distinguishable from sibling tools like update_task, which implies field-level updates rather than workflow status changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for changing an issue's workflow status, which is a reasonable usage context. However, it does not explicitly contrast with alternatives such as update_task for editing fields, nor does it mention when a transition might be invalid (e.g., not allowed for the current status).
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.
10 tool updates
v1.0.0- First observed
add_comment - First observed
attach_file - First observed
create_task - First observed
get_my_tasks - First observed
get_task_details - First observed
link_issues - First observed
search_tasks - First observed
unlink_issues - First observed
update_task - First observed
update_task_status
TDQS
Scored across 10 tools
Each tool maps to a distinct resource-action pair, such as retrieving assigned tasks, fetching issue details, searching, updating fields, transitioning status, commenting, attaching, and linking. Even the similar update_task and update_task_status are clearly separated by field updates versus status transitions.
All tools follow a consistent verb_noun snake_case pattern like get_task_details, create_task, update_task, and link_issues. The naming is uniform and predictable, with complementary pairs like link_issues/unlink_issues.
Ten tools is well-scoped for a Jira issue management server. The surface covers retrieval, search, creation, updates, comments, attachments, and issue links without feeling bloated or sparse.
The tool set covers the core Jira issue lifecycle: create, read, search, update, status transitions, comments, attachments, and linking. Missing operations like deleting issues or explicitly listing available transitions are minor gaps that agents can work around in most workflows.
Maintenance
Related MCP Connectors
Connect to Atlassian Jira, Confluence, Loom, and more to search, create, and manage your work.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Related MCP Servers
- AlicenseAqualityNot gradedmaintenanceEnables AI assistants to interact with Atlassian Jira Cloud, allowing users to manage projects, issues, comments, and workflows through natural language commands.676 npm3-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Jira Cloud through the REST API, supporting project management, issue operations (create, read, update, delete), JQL search, task assignments, and status transitions.-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to interact with Jira for project management tasks, including issue creation, updates, workflow transitions, and bulk operations.35 npm4MIT
- AlicenseBqualityDmaintenanceEnables AI agents to manage Jira Cloud projects with full CRUD operations, bulk actions, sprint and release management, and issue linking using natural language.27MIT