Skip to main content
Glama

JIRA MCP Server

Это сервер Model Context Protocol (MCP), который предоставляет инструменты для взаимодействия с JIRA. Он позволяет получать тикеты из активных спринтов и подробную информацию о тикетах через интерфейс MCP.

Возможности

Сервер предоставляет следующие инструменты:

  1. list-sprint-tickets: получает все тикеты в активном спринте для указанного проекта

    • Обязательный параметр: projectKey (строка)

  2. get-ticket-details: получает подробную информацию о конкретном тикете

    • Обязательный параметр: issueKey (строка)

  3. add-comment: добавляет комментарий к конкретному тикету

  4. link-tickets: связывает два тикета отношением 'relates to'

    • Обязательный параметр: sourceIssueKey (строка)

    • Обязательный параметр: targetIssueKey (строка)

  5. update-description: обновляет описание конкретного тикета

    • Обязательный параметр: issueKey (строка)

    • Либо description (строка), либо filePath (строка) — см. Редактирование содержимого из файла

    • Необязательный параметр: descriptionFormatplain (по умолчанию), wiki, markdown или adf

  6. list-child-issues: получает все дочерние задачи родительского тикета

    • Обязательный параметр: parentKey (строка)

  7. create-sub-ticket: создает подтикет (дочернюю задачу) для родительского тикета

    • Обязательный параметр: parentKey (строка)

    • Обязательный параметр: summary (строка)

    • Необязательный параметр: description (строка) или filePath (строка) — см. Редактирование содержимого из файла

    • Необязательный параметр: issueType (строка) — название типа подзадачи (например, 'Sub-task')

Related MCP server: mcp-jira

Настройка

  1. Установите зависимости:

    npm install
  2. Соберите TypeScript-код:

Этот шаг нужен только для Cline на Windows, где сейчас возникает проблема с выполнением npx

npm run build
  1. Настройте параметры MCP в файле настроек вашего приложения Claude (обычно он находится по пути ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json на Windows):

Настройки для Claude:

{
  "mcpServers": {
    "jira": {
      "command": "npx",
      "args": ["path/to/this/repo/jira.ts"],
      "env": {
        "JIRA_HOST": "https://your-domain.atlassian.net",
        "JIRA_EMAIL": "your-email@example.com",
        "JIRA_API_TOKEN": "your-api-token"
      }
    }
  }
}

Настройки для Cline:

{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["path/to/this/repo/dist/jira.js"],
      "env": {
        "JIRA_HOST": "https://your-domain.atlassian.net",
        "JIRA_EMAIL": "your-email@example.com",
        "JIRA_API_TOKEN": "your-api-token"
      }
    }
  }
}

Конфигурация

Вам нужно настроить следующие переменные окружения в параметрах MCP:

  1. JIRA_HOST: URL вашего домена Atlassian (например, https://your-company.atlassian.net)

  2. JIRA_EMAIL: email вашей учетной записи JIRA

  3. JIRA_API_TOKEN: ваш API-токен JIRA

Использование

После настройки вы можете использовать инструменты через интерфейс MCP в Claude:

Список тикетов спринта

Чтобы получить все тикеты активного спринта для проекта:

<use_mcp_tool>
<server_name>jira</server_name>
<tool_name>list-sprint-tickets</tool_name>
<arguments>
{
  "projectKey": "YOUR_PROJECT_KEY"
}
</arguments>
</use_mcp_tool>

Получение сведений о тикете

Чтобы получить подробную информацию о конкретном тикете:

<use_mcp_tool>
<server_name>jira</server_name>
<tool_name>get-ticket-details</tool_name>
<arguments>
{
  "issueKey": "PROJECT-123"
}
</arguments>
</use_mcp_tool>

Редактирование содержимого из файла

update-description, update-comment, add-comment, create-ticket и create-sub-ticket принимают filePath вместо встроенного текста. Это предназначено для длинного содержимого: храните исходный текст в файле, редактируйте этот файл и отправляйте снова — нет необходимости каждый раз повторно передавать весь текст через вызов инструмента. В двух инструментах создания описание остается необязательным, поэтому можно не указывать ни то, ни другое.

Формат определяется по расширению файла, поэтому descriptionFormat / commentFormat можно не указывать:

Расширение

Формат

Содержимое

.md, .markdown

markdown

Markdown (## headings, **bold**)

.wiki, .jira

wiki

Вики-разметка Jira (h2., {code})

.json, .adf

adf

Необработанный JSON в формате Atlassian Document Format

.txt, .text

plain

Обычный текст, обернутый в абзац

Явная передача формата переопределяет расширение; это также способ использовать файл с любым другим расширением. Пути могут быть абсолютными или относительными к рабочей директории сервера.

{
  "issueKey": "PROJECT-123",
  "filePath": "/abs/path/to/description.md"
}

Пустой файл отклоняется, а не затирает существующее описание или комментарий; передача одновременно и встроенного текста, и filePath является ошибкой.

Изменение существующего содержимого

Чтобы изменить часть уже существующего описания или комментария, сначала экспортируйте его с помощью export-content, отредактируйте файл и загрузите его снова — не нужно переписывать все целиком:

{ "issueKey": "PROJECT-123", "commentId": "54660", "filePath": "/tmp/pir-timeline.md" }

Экспорт сообщает, безопасно ли загружать это содержимое обратно как markdown. Jira хранит содержимое в формате ADF, и такие конструкции, как панели, упоминания, статусные плашки, медиафайлы, таблицы, списки задач и раскрывающиеся блоки, не имеют markdown-эквивалента — повторная загрузка markdown молча удалит их. Если такие элементы присутствуют, инструмент предупреждает и перечисляет их; вместо этого экспортируйте с "format": "adf" и изменяйте JSON, который всегда проходит полный цикл без изменений (.json-файлы распознаются как ADF при загрузке).

Если опустить filePath, содержимое будет возвращено непосредственно в ответе, а не записано в файл. Идентификаторы комментариев отображаются в get-ticket-details.

Версии содержимого (оптимистическая конкурентность)

update-description и update-comment требуют expectedVersion всякий раз, когда заменяемое содержимое не пусто: это версия, на которой основывалось изменение. Если с тех пор содержимое в Jira изменилось, обновление отклоняется, а не молча отбрасывает это изменение — та же блокировка, которую Confluence получает благодаря номерам версий страниц.

В Jira нет собственного номера версии, а временная метка updated задачи не является заменой: она обновляется при любом изменении задачи, поэтому переходы, метки и новые комментарии приводили бы к отклонению патчей описания, которые на самом деле не конфликтовали. Поэтому версия — это хэш самого содержимого (v1-…), и она меняется ровно тогда, когда меняется то, что патчится.

Версии можно получить из export-content и из get-ticket-details, который выводит Description version: и version: для каждого комментария — так что для небольшого изменения не нужен цикл экспорта.

Для первой записи описания версия не нужна. Сам пропуск expectedVersion является утверждением «здесь еще ничего нет», которое проверяет сервер: запись проходит, когда описание все еще пустое, и отклоняется — с указанием версии, которая сейчас в Jira, — если кто-то тем временем его записал. Таким образом, блокировка распространяется и на первую запись, и вызывающему коду не нужно получать версию пустого содержимого.

Передайте "force": true, чтобы пропустить проверку и перезаписать содержимое в любом случае.

Разработка

Сервер написан на TypeScript и использует:

  • @modelcontextprotocol/sdk для реализации MCP-сервера

  • jira.js для интеграции с JIRA API

Рекомендуемые скрипты:

  • Сборка один раз: npm run build

  • Сборка и наблюдение за файлами: npm run build:watch

  • Только проверка типов: npm run typecheck

  • Запуск для разработки с watch: npm run start:dev

  • Запуск скомпилированного сервера: npm start

  • Проверка форматирования: npm run fmt:check

  • Применение форматирования: npm run fmt

Типичный рабочий процесс:

  1. Внесите изменения в jira.ts

  2. Запустите npm run start:dev во время разработки или npm run build, а затем npm start для запуска скомпилированной версии

  3. При необходимости перезапустите ваш MCP-клиент, чтобы изменения вступили в силу

Обработка ошибок

Сервер включает обработку ошибок для:

  • Неверные учетные данные JIRA

  • Отсутствие активных спринтов

  • Неверные ключи проектов или ключи задач

  • Сетевые ошибки

Сообщения об ошибках будут возвращены в ответе инструмента.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides tools for AI assistants to interact with JIRA APIs, enabling them to read, create, update, and manage JIRA issues through standardized MCP tools.
    6
    20
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language interaction with JIRA through MCP, providing 35 tools for issues, comments, transitions, projects, boards, sprints, epics, links, worklogs, versions, attachments, users, and fields.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language interaction with Jira Cloud tickets, including listing, searching, creating, and updating issues through a set of MCP tools.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/boukeversteegh/mcp-server-jira'

If you have feedback or need assistance with the MCP directory API, please join our Discord server