jira-mcp
Provides tools to interact with Jira Server/Data Center, allowing management of issues, comments, transitions, worklogs, and issue links.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Jira MCP
Локальный MCP-сервер для Jira Server/Data Center. Дает Claude и Codex доступ к задачам, комментариям, вложениям, статусам и переходам, worklog, связям, доскам, спринтам, эпикам, версиям и компонентам.
Сервер работает через Jira REST API v2 и Agile API 1.0 с Basic Auth. Токен не нужен.
Статус
64 инструмента в 18 разделах (см. «Инструменты»). Покрыта повседневная работа с задачами, кроме администрирования Jira.
Проверено на Jira Server 8.8 с русской локализацией.
Все инструменты чтения проверены на реальных данных. Версии, компоненты, избранные фильтры и worklog проверены только на пустых списках, потому что таких данных в тестовом проекте не было.
Изменяющие инструменты для задач проверены на временных задачах: создание, правка, назначение, комментарии, вложения, worklog, наблюдатели, связи и удаленные ссылки, смена статуса.
Инструменты, которые меняют общие доски и проект (спринты, ранжирование, эпики, версии, компоненты), покрыты только автотестами.
Тесты: 123 теста, покрытие строк и ветвлений 99%. Тесты не обращаются к сети и к Jira, поэтому их безопасно запускать где угодно, в том числе с заполненным
.env.
Особенности Jira, которые учитывает сервер:
имена типов задач и статусов локализованы, а часть API Jira понимает только исходные (английские) имена.
get_create_fieldsпринимает видимое имя типа, аget_issue_historyпоказывает статусы так, как они называются в Jira сейчас.get_project_statusesотдает ответ Jira как есть, поэтому типы задач в нем могут быть на английском (Taskвместо «Задача»);на переходах без экрана Jira молча отбрасывает комментарий.
change_statusв этом случае добавляет комментарий отдельным запросом;у канбан-досок нет спринтов и бэклога:
list_sprintsиget_backlogработают только со скрам-досками;notify_issueтребует настроенной исходящей почты (SMTP) в Jira.
Пока не реализовано:
удаление, клонирование и массовое создание задач, голоса;
правка и удаление спринтов, версий и компонентов, создание и правка сохраненных фильтров;
комментарии с ограниченной видимостью (по роли или группе);
администрирование Jira (схемы, workflow, пользователи) — не планируется.
Related MCP server: jira-mcp
Различия ОС
Команды ниже даны в двух вариантах: Linux/macOS (bash/zsh) и Windows (PowerShell). Главное отличие — расположение файлов в виртуальном окружении:
Linux/macOS | Windows | |
Создать окружение |
|
|
Python окружения |
|
|
pip окружения |
|
|
Перенос строки команды |
|
|
Пример абсолютного пути |
|
|
В JSON-файлах (Claude Desktop, .mcp.json) пути Windows пишите с прямыми
слэшами (C:/Users/me/jira-mcp/main.py) или удваивайте обратные
(C:\\Users\\me\\jira-mcp\\main.py). В TOML (Codex) используйте строки в
одинарных кавычках: 'C:\Users\me\jira-mcp\main.py'.
Установка
Нужны Python 3.10 или новее и сетевой доступ к Jira (внутренняя сеть или VPN).
Linux/macOS:
git clone <URL_РЕПОЗИТОРИЯ> jira-mcp
cd jira-mcp
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python -m unittest -vWindows:
git clone <URL_РЕПОЗИТОРИЯ> jira-mcp
cd jira-mcp
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\python.exe -m unittest -vАктивировать окружение (activate) не нужно: MCP-клиент запускает
python из .venv по полному пути.
Настройки
Сервер читает настройки из переменных окружения:
Переменная | Обязательна | По умолчанию | Описание |
| да |
| |
| да | логин Jira | |
| да | пароль Jira | |
| нет |
| проверять TLS-сертификат |
| нет |
| таймаут запроса, секунды |
| нет |
| потолок |
Обычно их передает MCP-клиент при подключении сервера: -e в
claude mcp add, блок env в JSON/TOML-конфигурации. Так у каждого проекта
или подключения могут быть свои Jira и учётная запись. Каждое подключение
запускает отдельный процесс сервера со своими значениями. Примеры ниже.
Для запуска без клиента или как общие значения по умолчанию можно создать
.env рядом с main.py.
Linux/macOS:
cp .env.example .env
chmod 600 .envWindows:
Copy-Item .env.example .envПеременные, переданные клиентом, имеют приоритет над .env. Файлы .env и
.env.* (кроме .env.example) находятся в .gitignore. Не коммитьте их.
Claude Code
Для одного проекта (рекомендуется)
Запустите из каталога проекта, в котором нужна Jira. --scope local
сохраняет сервер только для этого проекта и только у вас.
Linux/macOS:
MCP_DIR="/ABSOLUTE/PATH/jira-mcp"
claude mcp add \
--transport stdio \
--scope local \
-e JIRA_URL=http://jira.company.local:8080 \
-e JIRA_USER=firstname.lastname \
-e JIRA_PASSWORD=your-password \
jira -- \
"$MCP_DIR/.venv/bin/python" \
"$MCP_DIR/main.py"Windows:
$MCP_DIR = "C:\ABSOLUTE\PATH\jira-mcp"
claude mcp add `
--transport stdio `
--scope local `
-e JIRA_URL=http://jira.company.local:8080 `
-e JIRA_USER=firstname.lastname `
-e JIRA_PASSWORD=your-password `
jira -- `
"$MCP_DIR\.venv\Scripts\python.exe" `
"$MCP_DIR\main.py"Общий .mcp.json в репозитории проекта
Чтобы подключение было у всей команды (--scope project), не записывайте в
.mcp.json пароль и пути, зависящие от ОС. Claude Code подставит значения
${VAR} из окружения каждого пользователя:
{
"mcpServers": {
"jira": {
"command": "${JIRA_MCP_PYTHON}",
"args": ["${JIRA_MCP_DIR}/main.py"],
"env": {
"JIRA_URL": "http://jira.company.local:8080",
"JIRA_USER": "${JIRA_USER}",
"JIRA_PASSWORD": "${JIRA_PASSWORD}"
}
}
}
}Каждый участник один раз задает переменные у себя.
Linux/macOS (добавьте в ~/.bashrc или ~/.zshrc):
export JIRA_MCP_DIR="/ABSOLUTE/PATH/jira-mcp"
export JIRA_MCP_PYTHON="$JIRA_MCP_DIR/.venv/bin/python"
export JIRA_USER="firstname.lastname"
export JIRA_PASSWORD="your-password"Windows (сохраняется для пользователя, действует в новых терминалах):
setx JIRA_MCP_DIR "C:/ABSOLUTE/PATH/jira-mcp"
setx JIRA_MCP_PYTHON "C:/ABSOLUTE/PATH/jira-mcp/.venv/Scripts/python.exe"
setx JIRA_USER "firstname.lastname"
setx JIRA_PASSWORD "your-password"После setx перезапустите терминал и Claude Code.
Для всех проектов
Если настройки везде одинаковые, заполните .env рядом с main.py и
подключите сервер глобально.
Linux/macOS:
MCP_DIR="/ABSOLUTE/PATH/jira-mcp"
claude mcp add --transport stdio --scope user \
jira -- "$MCP_DIR/.venv/bin/python" "$MCP_DIR/main.py"Windows:
$MCP_DIR = "C:\ABSOLUTE\PATH\jira-mcp"
claude mcp add --transport stdio --scope user `
jira -- "$MCP_DIR\.venv\Scripts\python.exe" "$MCP_DIR\main.py"Сервер с тем же именем в local или project перекрывает глобальный.
Проверка (одинаково на всех ОС):
claude mcp get jira
claude mcp listВ новой сессии Claude Code выполните /mcp.
Claude Desktop
Откройте Settings → Developer → Edit Config. Откроется файл:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Добавьте сервер.
macOS:
{
"mcpServers": {
"jira": {
"command": "/ABSOLUTE/PATH/jira-mcp/.venv/bin/python",
"args": ["/ABSOLUTE/PATH/jira-mcp/main.py"],
"env": {
"JIRA_URL": "http://jira.company.local:8080",
"JIRA_USER": "firstname.lastname",
"JIRA_PASSWORD": "your-password"
}
}
}
}Windows:
{
"mcpServers": {
"jira": {
"command": "C:/ABSOLUTE/PATH/jira-mcp/.venv/Scripts/python.exe",
"args": ["C:/ABSOLUTE/PATH/jira-mcp/main.py"],
"env": {
"JIRA_URL": "http://jira.company.local:8080",
"JIRA_USER": "firstname.lastname",
"JIRA_PASSWORD": "your-password"
}
}
}
}Блок env можно не указывать, если заполнен .env рядом с main.py. Для
нескольких Jira добавьте несколько серверов с разными именами (jira-alpha,
jira-beta) и своим env.
Если в файле уже есть другие серверы, добавьте только нужную секцию, не перезаписывая остальную конфигурацию. После изменения полностью закройте Claude Desktop (на Windows — также из трея) и откройте снова.
Codex CLI
Linux/macOS:
MCP_DIR="/ABSOLUTE/PATH/jira-mcp"
codex mcp add jira \
--env JIRA_URL=http://jira.company.local:8080 \
--env JIRA_USER=firstname.lastname \
--env JIRA_PASSWORD=your-password \
-- \
"$MCP_DIR/.venv/bin/python" \
"$MCP_DIR/main.py"Windows:
$MCP_DIR = "C:\ABSOLUTE\PATH\jira-mcp"
codex mcp add jira `
--env JIRA_URL=http://jira.company.local:8080 `
--env JIRA_USER=firstname.lastname `
--env JIRA_PASSWORD=your-password `
-- `
"$MCP_DIR\.venv\Scripts\python.exe" `
"$MCP_DIR\main.py"Конфигурация Codex общая для всех проектов: ~/.codex/config.toml
(на Windows — %USERPROFILE%\.codex\config.toml). Для разных Jira добавьте
серверы с разными именами (jira-alpha, jira-beta) и своими --env.
Проверка (одинаково на всех ОС):
codex mcp get jira
codex mcp listВ новой сессии Codex выполните /mcp.
Codex Desktop
Codex Desktop, Codex CLI и IDE-расширение используют общий config.toml
(путь см. выше). Если сервер уже добавлен через codex mcp add, повторная
настройка не нужна: перезапустите приложение.
Также сервер можно добавить через Settings → MCP servers → Add server:
Name:
jiraType:
STDIOCommand: абсолютный путь к Python окружения (см. «Различия ОС»)
Args: абсолютный путь к
main.pyпеременные окружения
JIRA_URL,JIRA_USER,JIRA_PASSWORD
Ручная конфигурация, Linux/macOS:
[mcp_servers.jira]
command = "/ABSOLUTE/PATH/jira-mcp/.venv/bin/python"
args = ["/ABSOLUTE/PATH/jira-mcp/main.py"]
env = { JIRA_URL = "http://jira.company.local:8080", JIRA_USER = "firstname.lastname", JIRA_PASSWORD = "your-password" }Windows:
[mcp_servers.jira]
command = 'C:\ABSOLUTE\PATH\jira-mcp\.venv\Scripts\python.exe'
args = ['C:\ABSOLUTE\PATH\jira-mcp\main.py']
env = { JIRA_URL = "http://jira.company.local:8080", JIRA_USER = "firstname.lastname", JIRA_PASSWORD = "your-password" }Проверка Jira
После подключения попросите агента:
Покажи текущего пользователя Jira и доступные проекты.Если MCP подключен, но Jira не отвечает, проверьте:
доступ к внутренней сети или VPN;
JIRA_URL, логин и пароль вenvподключения MCP или в.env;права пользователя в нужном проекте;
статус сервера через
/mcp;что путь к Python указывает на окружение проекта:
.venv/bin/pythonна Linux/macOS,.venv\Scripts\python.exeна Windows.
Инструменты
Раздел | Чтение | Изменения |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Перед созданием задачи или сменой статуса агент должен сначала проверить доступные типы, поля и переходы:
get_fieldsсопоставляетcustomfield_XXXXXс человеческими именами и JQL-именами;get_edit_fieldsпоказывает, какие поля задачи можно менять и какими операциями.update_ticketпринимаетfields(замена значения) иupdate(операцииadd/remove/set, например добавить метку, не трогая остальные);list_transitionsпоказывает поля экрана перехода. Обязательные поля, чаще всегоresolutionпри закрытии, передаются вchange_statusчерезfields, а комментарий к переходу черезcomment.
Списки (get_comments, get_worklogs) возвращаются постранично:
{items, start_at, max_results, total, next_start_at}. Для следующей
страницы передайте next_start_at как start_at. get_issue_history
показывает, кто, когда и что менял в задаче, с фильтром по полю, например
field="status". Для назначения задачи используйте find_assignable_users:
find_users находит и тех, на кого назначить нельзя. Если Jira отклонила
действие, get_my_permissions покажет, каких прав не хватает.
Доски, спринты и эпики работают через Agile API (/rest/agile/1.0, нужен
Jira Software):
колонка доски и статус — разные вещи.
get_board_configпоказывает, какие статусы попадают в каждую колонку;у канбан-досок нет спринтов и бэклога:
list_sprintsиget_backlogработают только со скрам-досками, для канбана Jira вернет ошибку;групповые операции (
move_to_sprint,move_to_backlog,add_to_epic,rank_issues) принимают до 50 задач за вызов.
Списки досок, спринтов, эпиков и задач на них тоже постраничные, в том же
формате {items, ..., next_start_at}.
Структура
main.py # точка входа для MCP-клиентов
src/jira_mcp/
app.py # экземпляр FastMCP
settings.py # настройки из env / .env
client.py # HTTP-сессия Jira и общие хелперы
formatting.py # компактный вид задач в Agile-списках
server.py # регистрация инструментов и запуск
tools/<раздел>/<команда>.py # по одному файлу на инструмент
tests/ # тесты по разделамСервер также запускается как модуль.
Linux/macOS:
PYTHONPATH=src .venv/bin/python -m jira_mcpWindows:
$env:PYTHONPATH = "src"; .venv\Scripts\python.exe -m jira_mcpЧтобы добавить инструмент:
Создайте
src/jira_mcp/tools/<раздел>/<команда>.pyс функцией под@mcp.tool(). Запросы к Jira делайте черезclient.request(...):по умолчанию запрос идет в
/rest/api/2; для досок, спринтов и эпиков передайтеapi="agile"(/rest/agile/1.0);для списков используйте
client.page(path, items_key, start_at=..., max_results=...). Он возвращает одну страницу в едином формате{items, start_at, max_results, total, next_start_at}для обоих API. Чтобы получить следующую страницу, передайтеnext_start_atкакstart_at; на последней странице он равенnull.
Импортируйте модуль в
src/jira_mcp/tools/<раздел>/__init__.py. Для нового раздела добавьте его вsrc/jira_mcp/tools/__init__.py.Добавьте имя в
EXPECTED_TOOLSвtests/test_server.py, а тест — вtests/test_<раздел>.py. В тестах подменяйтеjira_mcp.client.request.
Обновление
Linux/macOS:
git pull
.venv/bin/pip install -r requirements.txt
.venv/bin/python -m unittest -vWindows:
git pull
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\python.exe -m unittest -vПовторно добавлять MCP не нужно, пока путь к каталогу не изменился. Но уже
запущенные сессии продолжают работать на старом коде: перезапустите сервер
через /mcp или откройте новую сессию.
Если раньше настройки лежали в config.py, перенесите значения в .env (те
же имена, формат JIRA_URL=...) или в env подключения MCP. Затем удалите
config.py: сервер его больше не читает. Если вы вручную создавали
src/jira_mcp/config.py, тоже удалите его. Git его не игнорирует, и файл с
паролем можно случайно закоммитить.
Ссылки
Документация по клиентам:
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Related MCP Servers
- AlicenseAqualityFmaintenanceA Model Context Protocol server that enables interaction with Jira's REST API using natural language commands, allowing users to manage Jira projects, issues, comments, and workflows through Claude Desktop and other MCP clients.107MIT
- FlicenseNot gradedqualityDmaintenanceA local MCP server that wraps the Jira REST API v3, enabling issue management, searching, commenting, and transitions for openmrs.atlassian.net via Basic Auth.1-
- AlicenseNot gradedqualityDmaintenanceA server that exposes Jira Cloud operations as MCP tools, enabling programmatic management of Epics, Stories, Tasks, and Sprints directly from an AI chat or agentic workflow.1MIT
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server that exposes Jira issue operations (get, search, create) as tools for AI clients like Claude.126 npmISC