Jira MCP Server
Enables AI assistants to interact with Jira Cloud by managing issues, comments, custom fields, and sprint tasks through a standardized interface. Supports issue creation, updates, team activity tracking, and progress reporting.
README
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_my_issues |
Get all issues currently assigned to you |
get_issue_details |
Get full details of a specific Jira issue |
add_comment |
Add a comment to a specified Jira issue |
get_my_work_summary |
Get a summary of issues you've worked on within a date range |
get_team_activity |
Get recent issue updates from configured team members |
get_project_components |
Get all available components for a Jira project |
update_issue_field |
Update supported custom fields on a Jira issue |
update_progress |
Update the Progress Update field with template-aware behavior |
create_issue |
Create a new issue in Jira with support for custom fields |
get_sprint_tasks |
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-mcp -
Install dependencies:
npm install -
Build the project:
npm run build
Configuration
Environment Variables
The server requires the following environment variables:
| Variable | Description | Example |
|---|---|---|
JIRA_BASE_URL |
Your Jira instance base URL | https://your-org.atlassian.net |
JIRA_USER_EMAIL |
Your Jira account email | user@example.com |
JIRA_API_TOKEN |
Jira API token (Generate here) | ATATT3xFfGF0... |
JIRA_CURRENT_USER |
(Optional) Override current user for queries | currentuser() |
JIRA_TEAM_MEMBERS |
(Optional) Comma-separated list of team member emails | user1@example.com,user2@example.com |
Usage
Starting the Server
# Production
npm start
# Development (with hot reload)
npm run dev
MCP 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 | customfield_15111 |
Rich text (ADF) | Flag if a decision is required |
| Progress Update | customfield_15112 |
Rich text (ADF) | Weekly progress status |
| Decision Maker(s) | customfield_15113 |
User picker | Person responsible for decisions |
| Risks/Blockers | customfield_15115 |
Rich text (ADF) | Current risks or blockers |
| Completion Percentage | customfield_15116 |
Number | Progress percentage (0-100) |
| Health Status | customfield_15117 |
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 build
Project 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.md
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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.