An open API service indexing awesome lists of open source software.

https://github.com/parassolanki/jira-mcp-server

A model context protocol server for Jira API
https://github.com/parassolanki/jira-mcp-server

modelcontextprotocol typescript

Last synced: about 1 month ago
JSON representation

A model context protocol server for Jira API

Awesome Lists containing this project

README

          

# Jira MCP Server

![NPM Version](https://img.shields.io/npm/v/%40parassolanki%2Fjira-mcp-server) ![NPM Downloads](https://img.shields.io/npm/dw/%40parassolanki%2Fjira-mcp-server) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)

A [Model Context Protocol](https://github.com/modelcontextprotocol) Server for Jira.

Provides integration with Jira through MCP, allowing LLMs to interact with it.

[Jira REST Api Docs](https://developer.atlassian.com/server/jira/platform/rest)

## Installation

### Manual Installation

> Note: Requires Node version to be 22.12.0 or above

1. Create or get Jira Personal Access Token: [Guide](https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html)

2. Add server config to Claude Desktop:

- MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: [Check this Guide](https://gist.github.com/feveromo/7a340d7795fca1ccd535a5802b976e1f)

```json
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["-y", "@parassolanki/jira-mcp-server@latest"],
"env": {
"JIRA_PERSONAL_ACCESS_TOKEN": "email@example.com:your_personal_jira_access_token",
"JIRA_BASE_URL": "jira_base_url"
}
}
}
}
```

For Windows:

```json
{
"mcpServers": {
"jira": {
"command": "cmd /c npx",
"args": ["-y", "@parassolanki/jira-mcp-server@latest"],
"env": {
"JIRA_PERSONAL_ACCESS_TOKEN": "email@example.com:your_personal_jira_access_token",
"JIRA_BASE_URL": "jira_base_url"
}
}
}
}
```

## Components

### Tools

1. `list_projects`: List projects from Jira.

- Required inputs:
- `query` (optional string): A query string used to filter the returned projects.
- `maxResults` (optional number, max: 100): The maximum number of results to return.
- `expand` (optional string): Expand additional information in the response. (comma separated `description`, `lead`, `issueTypes`, `url`, `projectKeys`, `permissions` and `insight`).

2. `list_boards`: List boards from a project.

- Required inputs:
- `projectKeyOrId` (string): Key or Id of the project.
- `name` (optional string): Name of the project.
- `maxResults` (optional number, max: 100): The maximum number of results to return.
- `startAt` (optional number): The starting index of the returned boards.
- `type` (optional string): The type of boards. (can be one of `scrum` or `kanban`).

3. `list_sprints_from_board`: List sprints from a board.

- Required inputs:
- `boardId` (string): The ID of the board.
- `maxResults` (optional number, max: 100): The maximum number of results to return.
- `startAt` (optional number): The starting index of the returned boards.

4. `list_issues_from_sprint`: List issues from a sprint.

- Required inputs:
- `boardId` (string): The ID of the board.
- `sprintId` (string): The ID of the sprint.
- `maxResults` (optional number, max: 100): The maximum number of results to return.
- `startAt` (optional number): The starting index of the returned boards.
- `expand` (optional string): Expand additional information in the response. (comma separated `schema` and `names`).

5. `create_issue`: Create an issue in Jira (Only supports Task issue type).

- Required inputs:
- `projectKeyOrId` (string): Key or Id of the project.
- `summary` (string): The summary/title of the issue.
- `description` (string): The description of the issue.

## Usage examples

Some example prompts you can use to interact with Jira:

1. "Show me all Jira projects" → execute the list_projects tool to see all available projects.
2. "What Kanban boards exist in the DEV project?" → execute the list_boards tool with the DEV project key and type parameter set to "kanban".
3. "Show me all the sprints for board ID 123" → execute the list_sprints_from_board tool to see all sprints associated with board 123.
4. "What issues are in sprint 456 on board 123?" → execute the list_issues_from_sprint tool to see all issues in sprint 456 on board 123.
5. "Show me the first 50 issues from the current sprint on the Marketing board" → first execute list_boards to find the Marketing board ID, then list_sprints_from_board to find the current sprint, then list_issues_from_sprint with maxResults=50.

## Development

1. Install dependencies:

```shell
pnpm install
```

2. Configure Github Access token in `.env`:

```shell
JIRA_PERSONAL_ACCESS_TOKEN=email@example.com:your_personal_jira_access_token
JIRA_BASE_URL=jira_base_url
```

3. Run locally with watch:

```shell
pnpm dev
```

4. Build the server:

```shell
pnpm build
```

5. Local debugging with inspector:

```shell
pnpm inspector
```

## TODOS

- [x] list_projects
- [x] list_boards
- [x] list_sprints_from_board
- [x] list_issues_from_sprint
- [ ] get_issue_by_id_or_key
- [x] create_issue (task issue type only)
- [ ] create_issue (story, epic, sub-task issue types)
- [ ] update_issue
- [ ] delete_an_issue
- [ ] archieve_an_issue
- [ ] list_comments_from_issue
- [ ] get_comment_from_issue_by_id
- [ ] create_comment_in_issue
- [ ] update_comment_of_issue
- [ ] delete_comment_of_issue
- [ ] list_subtasks_from_issue
- [ ] get_user_by_username_or_key