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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。