Jira MCP Server
Enables comprehensive interaction with Jira Cloud, including retrieving and managing issues, adding comments, updating custom fields, creating new issues, tracking sprint tasks, and monitoring team activity across projects.
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 me my assigned issues"
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
A Model Context Protocol (MCP) server for Jira integration, enabling AI assistants to interact with Jira issues, comments, and custom fields through a standardized interface.
Features
This MCP server provides the following tools:
Tool | Description |
| Get all issues currently assigned to you |
| Get full details of a specific Jira issue |
| Add a comment to a specified Jira issue |
| Get a summary of issues you've worked on within a date range |
| Get recent issue updates from configured team members |
| Get all available components for a Jira project |
| Update supported custom fields on a Jira issue |
| Update the Progress Update field with template-aware behavior |
| Create a new issue in Jira with support for custom fields |
| Retrieve sprint tasks for the current week or next week |
Related MCP server: Jira MCP
Prerequisites
Node.js: v18.0.0 or higher
npm: v8.0.0 or higher
Jira Cloud Account: With API access enabled
Jira API Token: Generated from your Atlassian account
Installation
Clone the repository:
git clone <repository-url> cd jira-mcpInstall dependencies:
npm installBuild the project:
npm run build
Configuration
Environment Variables
The server requires the following environment variables:
Variable | Description | Example |
| Your Jira instance base URL |
|
| Your Jira account email |
|
| Jira API token (Generate here) |
|
| (Optional) Override current user for queries |
|
| (Optional) Comma-separated list of team member emails |
|
Usage
Starting the Server
# Production
npm start
# Development (with hot reload)
npm run devMCP Client Configuration
Add the server to your MCP client configuration:
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/path/to/jira-mcp/dist/index.js"],
"env": {
"JIRA_BASE_URL": "https://your-org.atlassian.net",
"JIRA_USER_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token",
"JIRA_TEAM_MEMBERS": "teammate1@example.com,teammate2@example.com"
}
}
}
}Supported Custom Fields
The following custom fields can be updated using update_issue_field:
Field Name | Field ID | Type | Description |
Decision Needed |
| Rich text (ADF) | Flag if a decision is required |
Progress Update |
| Rich text (ADF) | Weekly progress status |
Decision Maker(s) |
| User picker | Person responsible for decisions |
Risks/Blockers |
| Rich text (ADF) | Current risks or blockers |
Completion Percentage |
| Number | Progress percentage (0-100) |
Health Status |
| Select | Project health (On Track, At Risk, etc.) |
API Reference
get_my_issues
Returns all unresolved issues assigned to the current user.
Parameters: None
Returns: Array of issues with key, summary, status, priority, updated
get_issue_details
Get full details of a specific issue.
Parameters:
issueKey(string, required): The issue key (e.g., "PROJ-123")
Returns: Issue object with key, summary, description, status, priority, assignee, reporter, created, updated, comments
add_comment
Add a comment to an issue.
Parameters:
issueKey(string, required): The issue keycommentBody(string, required): The comment text
Returns: { success: boolean, commentId: string, created: string }
get_my_work_summary
Get issues you've worked on within a date range.
Parameters:
startDate(string, required): Start date in YYYY-MM-DD formatendDate(string, required): End date in YYYY-MM-DD format
Returns: Array of issues with activity type
get_team_activity
Get recent updates from team members.
Parameters:
timeframeDays(number, optional): Days to look back (default: 7)
Returns: Array of activity items with issueKey, teamMember, activityType, timestamp, summary
update_issue_field
Update a custom field on an issue.
Parameters:
issueKey(string, required): The issue keyfieldNameOrId(string, required): Field name or IDvalue(string | number | object, required): Value to set
Returns: { success: boolean, fieldId: string, fieldName: string }
update_progress
Update the Progress Update field with template awareness.
Parameters:
issueKey(string, required): The issue keyrefreshDate(boolean, optional): Update date only, preserve contentweeklyUpdate(string, optional): Weekly update textdelivered(string, optional): What was deliveredwhatsNext(string, optional): Upcoming work
Returns: { success: boolean, updatedSections: string[], parsedExisting: object }
The Progress Update field uses a structured template:
ℹ️ Update for week of [date]: - Weekly status
✅ What we've delivered so far: - Accomplishments
❓ What's next: - Upcoming work
get_project_components
Get all available components for a Jira project.
Parameters:
projectKey(string, required): The project key (e.g., "TSSE")
Returns: { components: [{ id: string, name: string, description?: string }] }
create_issue
Create a new issue in Jira with support for standard and custom fields.
Parameters:
projectKey(string, required): The project key (e.g., "TSSE")issueType(string, required): The issue type (e.g., "Epic", "Story", "Task", "Bug")summary(string, required): Issue summary/titledescription(string, optional): Issue description (plain text)assignee(string, optional): Assignee accountId or "currentuser()" for current userpriority(string, optional): Priority name (e.g., "High", "Medium", "Low")labels(string[], optional): Array of labels to applyduedate(string, optional): Due date in YYYY-MM-DD formatcomponents(string[], optional): Array of component nameshealthStatus(string, optional): Health Status value (e.g., "On Track", "At Risk", "Off Track")completionPercentage(number, optional): Completion percentage (0-100)decisionNeeded(string, optional): Decision Needed field contentrisksBlockers(string, optional): Risks/Blockers field contentprogressUpdate(object, optional): Progress Update withweeklyUpdate,delivered,whatsNextcustomFields(object, optional): Additional custom fields as key-value pairs
Returns: { success: boolean, key: string, id: string, self: string }
get_sprint_tasks
Retrieve sprint tasks for the current week or next week. Sprint tasks are tagged with labels in the format MonDD-DD (e.g., Dec15-19 for December 15-19).
Parameters:
week(enum, required): Which week to retrieve -"this_week"or"next_week"scope(enum, required): Scope of tasks -"my_tasks"for current user only,"team_tasks"for all team tasks
Returns:
{
"sprintLabel": "Dec15-19",
"weekRange": { "monday": "2024-12-15", "friday": "2024-12-19" },
"tasks": [{ "key": "PROJ-123", "summary": "...", "status": "...", "priority": "...", "assignee": "...", "updated": "..." }]
}Development
Building
npm run buildProject Structure
jira-mcp/
├── src/
│ ├── index.ts # MCP server entry point and tool definitions
│ └── jira-client.ts # Jira API client wrapper
├── dist/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.mdContributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
11 toolsadd_commentAdd CommentB
Add a comment to a specified Jira issue
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | The issue key (e.g., "PROJ-123") | |
| commentBody | Yes | The comment text to add |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| created | No | |
| success | Yes | |
| commentId | No |
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 states the tool adds a comment but doesn't mention whether this requires specific permissions, if it's a write operation, what happens on success/failure, or any rate limits. For a mutation tool with zero annotation coverage, this leaves critical behavioral traits undocumented.
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, efficient sentence that gets straight to the point with no wasted words. It's appropriately sized for a simple tool and front-loads the core functionality effectively.
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?
Given that an output schema exists (which handles return values), the description doesn't need to explain outputs. However, for a mutation tool with no annotations and multiple sibling tools, the description should provide more context about when to use it and behavioral implications to be 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?
The schema description coverage is 100%, with both parameters ('issueKey' and 'commentBody') clearly documented in the schema. The description doesn't add any additional parameter semantics beyond what the schema already provides, so it meets the baseline for high 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 clearly states the action ('Add a comment') and target resource ('to a specified Jira issue'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'update_issue_field' which might also handle comments, missing the opportunity to clarify its specific scope.
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 provides no guidance on when to use this tool versus alternatives like 'update_issue_field' or 'create_issue', nor does it mention prerequisites such as issue existence or user permissions. It simply states what the tool does without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issueCreate IssueB
Create a new issue in Jira. Supports standard fields (summary, description, assignee, priority, labels) and custom fields (Health Status, Completion Percentage, Progress Update, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | Yes | The project key (e.g., "TSSE") | |
| issueType | Yes | The issue type (e.g., "Epic", "Story", "Task", "Bug") | |
| summary | Yes | Issue summary/title | |
| description | No | Issue description (plain text) | |
| assignee | No | Assignee accountId or "currentuser()" for current user | |
| priority | No | Priority name (e.g., "High", "Medium", "Low") | |
| labels | No | Array of labels to apply | |
| duedate | No | Due date in YYYY-MM-DD format | |
| components | No | Array of component names | |
| healthStatus | No | Health Status value (e.g., "On Track", "At Risk", "Off Track") | |
| completionPercentage | No | Completion percentage (0-100) | |
| decisionNeeded | No | Decision Needed field content | |
| risksBlockers | No | Risks/Blockers field content | |
| progressUpdate | No | Progress Update field with three sections | |
| customFields | No | Additional custom fields as key-value pairs (e.g., {"customfield_14707": [{"value": "Data"}]}) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| key | No | |
| self | No | |
| error | No | |
| success | Yes |
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. While it mentions what fields are supported, it doesn't describe what happens after creation (e.g., does it return the new issue ID?), what permissions are required, whether there are rate limits, or what validation occurs. For a mutation tool with 15 parameters, this represents significant gaps in behavioral understanding.
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 efficiently structured in a single sentence that conveys the core purpose and scope. The parenthetical examples of fields add useful context without unnecessary elaboration. While it could potentially benefit from a second sentence about behavioral aspects, the existing text is well-focused and wastes no 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?
Given the complexity (15 parameters, nested objects) and the presence of an output schema, the description provides adequate basic information about what the tool does. However, for a mutation tool with no annotations, it should ideally include more about permissions, side effects, or typical responses. The existence of an output schema reduces the need to describe return values, but other behavioral aspects remain underspecified.
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 description mentions 'standard fields' and 'custom fields' with examples, which adds some context beyond the schema. However, with 100% schema description coverage, the schema already documents all 15 parameters thoroughly. The description provides high-level categorization but doesn't add meaningful semantic details about parameter interactions, dependencies, or usage patterns that aren't already in the 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?
The description clearly states the verb ('Create') and resource ('new issue in Jira'), making the purpose immediately apparent. It distinguishes this tool from siblings like 'update_issue_field' or 'add_comment' by emphasizing creation rather than modification or commenting. The mention of both standard and custom fields provides additional specificity about what can be created.
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 provides no guidance on when to use this tool versus alternatives like 'update_issue_field' or 'search_issues'. There's no mention of prerequisites, constraints, or typical use cases. While the purpose is clear, the agent receives no help in deciding when this specific creation tool is appropriate versus other issue-related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issue_detailsGet Issue DetailsB
Get full details of a specific Jira issue
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | The issue key (e.g., "PROJ-123") |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| error | No | |
| parent | No | |
| status | No | |
| created | No | |
| project | No | |
| summary | No | |
| updated | No | |
| assignee | No | |
| comments | No | |
| priority | No | |
| reporter | No | |
| description | No |
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 states the tool retrieves details but doesn't specify what 'full details' includes (e.g., fields, attachments, comments), whether it's a read-only operation, authentication requirements, rate limits, or error handling. This leaves significant gaps in understanding the tool's behavior beyond basic purpose.
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, efficient sentence that front-loads the core purpose without any wasted words. It directly communicates the tool's function in a clear and structured manner, making it easy for an agent to parse and understand 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?
Given the tool's low complexity (single required parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and incomplete behavioral details, it doesn't fully compensate for the lack of structured safety or operational context, leaving room for improvement in guiding the agent.
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 input schema has 100% description coverage, with the 'issueKey' parameter clearly documented in the schema itself. The description adds no additional parameter semantics beyond implying a single issue is targeted, so it meets the baseline of 3 where the schema does the heavy lifting without extra value from the description.
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 action ('Get full details') and resource ('a specific Jira issue'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'search_issues' or 'get_my_issues', which might also retrieve issue information but with different scopes or filters.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an issue key), exclusions, or comparisons to siblings like 'search_issues' for broader queries or 'get_my_issues' for user-specific issues, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_issuesGet My IssuesB
Get all issues currently assigned to the configured CURRENT_USER
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| issues | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it 'gets all issues' but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, or what 'all issues' entails (e.g., open/closed status). The description is minimal and lacks critical operational context.
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, efficient sentence that front-loads the core functionality without any wasted words. It's appropriately sized for a simple tool with no parameters.
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?
Given the tool has no parameters and an output schema exists, the description is minimally complete. However, with no annotations and a read operation, it should ideally mention behavioral aspects like return format or scope, but the output schema mitigates some gaps. It's adequate but has clear room for improvement.
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 tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description doesn't add parameter semantics, but this is appropriate given the empty schema, warranting a baseline score of 4.
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 ('Get') and resource ('issues currently assigned to the configured CURRENT_USER'), making the purpose specific and understandable. It distinguishes from siblings like 'search_issues' by focusing on user-assigned issues, though it doesn't explicitly name alternatives.
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 usage context (retrieving issues assigned to the current user), but doesn't provide explicit guidance on when to use this tool versus alternatives like 'search_issues' or 'get_issue_details'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_work_summaryGet My Work SummaryA
Get a summary of issues the CURRENT_USER has worked on (updated, commented, or transitioned) within a date range
| Name | Required | Description | Default |
|---|---|---|---|
| startDate | Yes | Start date in YYYY-MM-DD format | |
| endDate | Yes | End date in YYYY-MM-DD format |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| issues | No |
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 clearly indicates this is a read operation ('Get') and specifies the scope (current user, date range, specific activities). However, it doesn't mention potential limitations like rate limits, authentication requirements, or what 'summary' entails (e.g., aggregated counts vs detailed list). The description adds useful context but lacks comprehensive behavioral details.
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, well-structured sentence that efficiently communicates the tool's purpose, scope, and parameters. Every word earns its place with no redundancy or unnecessary elaboration, making it easy for an agent to 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?
Given the tool's moderate complexity (date-range filtered summary), no annotations, but with a complete input schema and an output schema (implied by 'Has output schema: true'), the description is reasonably complete. It covers the core functionality and scope adequately, though additional behavioral context would enhance completeness for a tool with no annotation support.
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 fully documents both parameters (startDate and endDate) with format details. The description adds value by explaining the semantic purpose of these parameters ('within a date range'), but doesn't provide additional syntax or constraints beyond what the schema offers. This meets the baseline for high 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 clearly states the specific action ('Get a summary') and resource ('issues the CURRENT_USER has worked on'), with precise scope details ('updated, commented, or transitioned within a date range'). It effectively distinguishes from siblings like 'get_my_issues' by focusing on summary rather than listing, and from 'get_team_activity' by being user-specific.
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 provides clear context for when to use this tool: when needing a summary of the current user's work activities within a date range. It doesn't explicitly state when not to use it or name alternatives, but the context is sufficiently clear for an agent to understand its purpose relative to siblings like 'get_my_issues' or 'search_issues'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_componentsGet Project ComponentsB
Get all available components for a Jira project
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | Yes | The project key (e.g., "TSSE") |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| components | No |
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 states 'Get all available components' but does not clarify if this is a read-only operation, requires authentication, has rate limits, returns paginated results, or handles errors. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and appropriately sized, making it easy for an agent to 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?
Given the tool's low complexity (one parameter) and the presence of an output schema, the description is minimally adequate. However, with no annotations and incomplete behavioral details, it does not fully compensate for the lack of structured context, leaving room for improvement in guiding the agent.
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 input schema has 100% description coverage, with the 'projectKey' parameter clearly documented. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints, so it meets the baseline score of 3 for high 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 clearly states the verb 'Get' and the resource 'all available components for a Jira project', making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'get_issue_details' or 'search_issues', which might also involve project components indirectly, so it lacks sibling differentiation for a perfect score.
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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or compare to sibling tools such as 'get_issue_details' for component-specific details or 'search_issues' for broader queries, leaving the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sprint_tasksGet Sprint TasksA
Retrieve Sprint tasks for the current week or next week. Sprint tasks are tagged with labels in the format MonDD-DD (e.g., Dec15-19 for December 15-19).
Two query modes:
my_tasks: Retrieve tasks assigned to the current authenticated user for the specified week
team_tasks: Retrieve all tasks for the team for the specified week (regardless of assignee)
The tool automatically calculates the Monday-Friday date range and matches against the corresponding sprint label.
| Name | Required | Description | Default |
|---|---|---|---|
| week | Yes | Which week to retrieve sprint tasks for | |
| scope | Yes | Scope of tasks: "my_tasks" for current user only, "team_tasks" for all team tasks |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| tasks | No | |
| weekRange | No | The date range for the sprint week |
| sprintLabel | No | The sprint label used for the query (e.g., "Dec15-19") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by explaining the tool automatically calculates Monday-Friday date ranges and matches sprint labels. It clarifies authentication context ('current authenticated user') and scope behavior. Could improve by mentioning output format or pagination.
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?
Perfectly structured with purpose statement, two clear query mode definitions, and behavioral note about automatic date calculation. Every sentence adds essential information with zero waste. Front-loaded with core functionality.
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?
Given 2 parameters with 100% schema coverage and an output schema exists, the description provides excellent context about what the tool does and when to use it. Could slightly improve by mentioning what information is returned in tasks, but output schema likely covers this.
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 clear enum descriptions, so baseline is 3. The description adds value by explaining the semantic meaning of scope options (my_tasks vs team_tasks) and how week selection works with automatic date calculation, elevating it above 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 the verb 'retrieve' and resource 'sprint tasks', specifying they are for 'current week or next week' and tagged with specific label formats. It distinguishes from siblings like get_my_issues or get_team_activity by focusing on sprint-specific tasks with date-based labels.
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?
Explicitly defines two query modes (my_tasks vs team_tasks) with clear when-to-use guidance: 'my_tasks: Retrieve tasks assigned to the current authenticated user' and 'team_tasks: Retrieve all tasks for the team... regardless of assignee.' Also specifies temporal scope (this_week/next_week).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_activityGet Team ActivityB
Get recent issue updates (status changes, comments, assignments) from TEAM_MEMBERS
| Name | Required | Description | Default |
|---|---|---|---|
| timeframeDays | No | Number of days to look back (default: 7) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| activities | No |
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 states it's a read operation ('Get'), but doesn't mention permissions required, rate limits, pagination, error handling, or what the output looks like (though an output schema exists). For a tool with zero annotation coverage, this is a significant gap in transparency about how it behaves beyond basic functionality.
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, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does ('Get recent issue updates') and specifies the types and source, with zero waste or redundancy. Every part of the sentence earns its place by adding clarity.
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?
Given the tool has one parameter with full schema coverage and an output schema exists, the description is minimally complete for a simple read operation. However, with no annotations and multiple sibling tools, it lacks context on usage guidelines and behavioral details like permissions or limitations. The output schema reduces the need to explain return values, but the description could better address when to use this versus alternatives.
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 description adds no parameter-specific information beyond what's in the input schema, which has 100% coverage for the single parameter 'timeframeDays'. The schema already describes it as 'Number of days to look back (default: 7)', so the description doesn't compensate or add extra meaning. With high schema coverage, the baseline is 3 even without param details in the description.
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 'Get' and the resource 'recent issue updates' with specific types mentioned (status changes, comments, assignments) and the source 'from TEAM_MEMBERS'. It distinguishes from siblings like 'get_my_issues' by focusing on team-wide activity rather than personal issues. However, it doesn't explicitly differentiate from 'get_my_work_summary' or 'search_issues' which might overlap in scope.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'get_my_issues' for personal tracking, 'search_issues' for filtered queries, or 'get_my_work_summary' for summaries. There's no context about prerequisites, exclusions, or specific use cases, leaving the agent to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_issuesSearch IssuesA
Search for issues using JQL (Jira Query Language). Use this to find issues by parent/epic, assignee, status, labels, or any other criteria. Example JQL: "parent=TSSE-206", "assignee=currentuser() AND status="In Progress"", "labels=Dec15-19"
| Name | Required | Description | Default |
|---|---|---|---|
| jql | Yes | JQL query string (e.g., "parent=EPIC-123", "project=TSSE AND status="To Do"") | |
| maxResults | No | Maximum number of results to return (default: 50, max: 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| total | No | |
| issues | No |
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 effectively describes the search functionality and provides JQL examples, but lacks details on permissions needed, rate limits, pagination behavior (beyond maxResults in schema), or what happens with invalid queries. It adds value but doesn't fully compensate for the absence of annotations.
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 efficiently structured with two sentences: the first states the purpose and usage context, and the second provides concrete JQL examples. Every sentence adds value, and it's front-loaded with essential information, making it highly concise and well-organized.
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?
Given the tool's moderate complexity (search with JQL), no annotations, but a rich input schema (100% coverage) and an output schema (implied by context signals), the description is reasonably complete. It explains the core functionality and usage, though it could benefit from more behavioral context (e.g., error handling) to be fully comprehensive.
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 both parameters thoroughly. The description adds minimal value beyond the schema by mentioning JQL and giving examples, but doesn't provide additional syntax, format details, or constraints. This meets the baseline of 3 when schema coverage is high.
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 tool's purpose with a specific verb ('Search for issues') and resource ('issues'), and distinguishes it from siblings by specifying it uses JQL (Jira Query Language). It provides concrete examples of search criteria (parent/epic, assignee, status, labels), making the purpose unambiguous and differentiated from tools like 'get_my_issues' or 'get_issue_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?
The description provides clear context for when to use this tool ('Search for issues using JQL'), with examples of specific criteria like parent/epic, assignee, status, and labels. However, it doesn't explicitly state when NOT to use it or name alternatives (e.g., 'get_my_issues' for a simpler user-specific query), which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issue_fieldUpdate Issue FieldA
Update a custom field on a Jira issue. Supported fields: Decision Needed, Progress Update, Decision Maker(s), Risks/Blockers, Completion Percentage, Health Status. You can use either the field name or field ID.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | The issue key (e.g., "TSSE-984") | |
| fieldNameOrId | Yes | Field name or ID. Valid names: Decision Needed, Progress Update, Decision Maker(s), Risks/Blockers, Completion Percentage, Health Status | |
| value | Yes | The value to set. For rich text fields, provide plain text. For select fields, provide the option value. For user fields, provide accountId. For number fields, provide a number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| fieldId | No | |
| success | Yes | |
| fieldName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks critical behavioral details. It doesn't disclose permission requirements, whether this is a destructive mutation, rate limits, error handling, or what happens to existing field values. The description only covers basic functionality without safety or operational context.
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 sentences with zero waste. The first sentence states the core purpose, the second provides essential usage detail about field identification. Every word serves a clear purpose and the structure is front-loaded with the most important information.
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?
Given this is a mutation tool with no annotations and an output schema exists, the description is minimally adequate but incomplete. It covers what the tool does but lacks behavioral context about permissions, side effects, or error conditions that would be crucial for safe agent usage.
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 all three parameters thoroughly. The description adds minimal value by listing supported field names, which partially overlaps with the schema's 'fieldNameOrId' description. No additional parameter semantics beyond what's in the schema are provided.
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 specific action ('Update a custom field on a Jira issue') and distinguishes it from siblings like 'update_progress' or 'add_comment' by specifying it's for custom fields only. It lists the exact supported fields, making the 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 implies usage by listing supported fields, but doesn't explicitly state when to use this tool versus alternatives like 'update_progress' or general issue updates. No guidance on prerequisites, exclusions, or specific scenarios is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_progressUpdate ProgressA
Update the Progress Update field (customfield_15112) on a Jira issue. This field uses a structured template with three sections:
Weekly Update: "ℹ️ Update for week of [date]:" - automatically includes current date
Delivered: "✅ What we've delivered so far:"
What's Next: "❓ What's next:"
Options:
Use refreshDate=true to update just the date while preserving all existing content
Only sections you explicitly provide will be updated; others are preserved from existing content
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | The issue key (e.g., "TSSE-984") | |
| refreshDate | No | If true, updates the date to today while preserving all existing content. Use this to "refresh" the progress update without changing the content. | |
| weeklyUpdate | No | Text to add after the weekly header. Current date will be auto-inserted. | |
| delivered | No | Text describing what was delivered | |
| whatsNext | No | Text describing upcoming work |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| success | Yes | |
| parsedExisting | No | |
| updatedSections | No |
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 does an excellent job explaining the tool's behavior: it describes the structured template format, explains how sections are preserved/updated, and clarifies the refreshDate option's effect. The only minor gap is it doesn't mention authentication requirements or potential error conditions.
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 perfectly structured and concise. It starts with the core purpose, explains the template format clearly with bullet points, then provides usage options. Every sentence earns its place by adding essential information about how the tool behaves. No wasted words or redundant information.
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?
Given that this is a mutation tool with no annotations but with an output schema, the description provides excellent completeness. It explains the structured template format, update behavior, parameter interactions, and usage patterns. The presence of an output schema means the description doesn't need to explain return values, and it covers all other essential aspects thoroughly.
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 baseline is 3. The description adds significant value beyond the schema by explaining the structured template context, clarifying that 'only sections you explicitly provide will be updated; others are preserved,' and explaining the relationship between refreshDate and content preservation. This provides crucial semantic context not captured in the schema alone.
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 tool's purpose: 'Update the Progress Update field (customfield_15112) on a Jira issue.' It specifies the exact field being modified and distinguishes this from sibling tools like update_issue_field by focusing on a specific structured template. The verb 'Update' is specific to this particular field's structured format.
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 provides clear context for when to use this tool: for updating a specific custom field with a structured template. It distinguishes this from general field updates (like update_issue_field) by focusing on the Progress Update field's specific format. However, it doesn't explicitly mention when NOT to use it or provide direct alternatives among siblings.
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.
11 tool updates
- First observed
add_comment - First observed
create_issue - First observed
get_issue_details - First observed
get_my_issues - First observed
get_my_work_summary - First observed
get_project_components - First observed
get_sprint_tasks - First observed
get_team_activity - First observed
search_issues - First observed
update_issue_field - First observed
update_progress
TDQS
Scored across 11 tools
Most tools have distinct purposes, but there is some overlap between get_issue_details and search_issues, as both can retrieve issue information. The descriptions clarify that get_issue_details is for a specific issue, while search_issues uses JQL for broader queries, reducing confusion. Other tools like add_comment, create_issue, and update_progress are clearly differentiated.
All tool names follow a consistent verb_noun pattern using snake_case, such as add_comment, create_issue, and get_issue_details. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions across the 11 tools.
With 11 tools, the server is well-scoped for Jira operations, covering core workflows like issue management, commenting, searching, and project/sprint tracking. Each tool serves a specific purpose without redundancy, making the count appropriate for the domain.
The tool set provides comprehensive coverage for Jira interactions, including CRUD operations (create, read, update) and specialized functions like sprint management and team activity. Minor gaps exist, such as the lack of a delete_issue tool or direct issue transition capabilities, but agents can work around these using update_issue_field or search_issues.
Maintenance
Related MCP Connectors
Connect to Atlassian Jira, Confluence, Loom, and more to search, create, and manage your work.
Task manager your agent can fully operate: boards, tasks, sprints, roles, worklogs, day planner.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Jira Cloud instances for comprehensive issue management including creating, updating, searching issues, managing comments, workflow transitions, and project metadata discovery. Supports JQL queries, user search, and custom field operations with secure API token authentication.122,4498MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage Jira Cloud instances, including creating and updating issues, managing sprints and projects, adding comments, tracking worklogs, and searching with presets.4MIT
- AlicenseAqualityNot gradedmaintenanceEnables AI assistants to interact with Atlassian Jira Cloud, allowing users to manage projects, issues, comments, and workflows through natural language commands.6653-
- 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.-