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.
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 |
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 ( ) |
|
| (Optional) Override current user for queries |
|
| (Optional) Comma-separated list of team member emails |
|
Usage
Starting the Server
MCP Client Configuration
Add the server to your MCP client configuration:
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:
Development
Building
Project Structure
Contributing
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.