Atlassian MCP Server
This server lets AI assistants read and modify Jira issues and Confluence pages through MCP.
Jira: search issues with JQL, get issue details (parent, subtasks, links, remote links), create and update issues, list projects, and get/add comments.
Confluence: search pages with CQL, get page content by ID, create/update pages in Atlassian Document Format (ADF), list spaces, and find pages related to a Jira issue via remote links and title search.
Markdown import/export: convert Confluence pages to Markdown using the CLI or the
confluence_export_markdownMCP tool, including frontmatter, tables, and conflict handling.
Provides tools for Confluence Server/Data Center to search pages with CQL, get page content, create and update pages in ADF format, list spaces, and find related documentation for Jira issues.
Provides tools for Jira Server/Data Center to search issues with JQL, get issue details including subtasks and links, create and update issues, list projects, and manage comments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Atlassian MCP Server Find Confluence pages linked to Jira issue ABC-123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Atlassian MCP Server (Jira + Confluence)
MCP-сервер для Jira и Confluence Server/Data Center. Работает по stdio и предоставляет модели инструменты для чтения и изменения задач Jira, а также поиска и редактирования страниц Confluence через REST API.
Возможности
Jira
Инструмент | Назначение |
| Поиск задач по JQL с пагинацией |
| Детали задачи, родительская задача, подзадачи, связи, удалённые ссылки и ссылки Confluence |
| Создание задачи |
| Изменение заголовка, описания или приоритета |
| Список проектов |
| Комментарии к задаче |
| Добавление комментария |
Confluence
Инструмент | Назначение |
| Поиск страниц по CQL с URL и метаданными |
| Содержимое страницы по ID |
| Создание страницы в формате ADF |
| Изменение заголовка или тела страницы в формате ADF |
| Список пространств |
| Поиск документации для задачи Jira: сначала удалённые ссылки Jira, затем поиск заголовков по CQL |
Related MCP server: Jira Utilities MCP Server
Требования
Node.js 20 или новее;
доступ к REST API Jira и Confluence;
учётные данные с правами на выполняемые операции.
Jira использует Basic-аутентификацию (JIRA_USERNAME и JIRA_API_TOKEN). Confluence использует Bearer-аутентификацию: CONFLUENCE_API_TOKEN должен быть персональным токеном доступа. Значение CONFLUENCE_USERNAME обязательно для единообразной конфигурации, но в Bearer-аутентификации не передаётся.
Установка и сборка
npm install
npm run buildКонфигурация
Сервер ожидает шесть переменных окружения:
# Jira Server/Data Center
JIRA_URL=https://jira.example.com
JIRA_USERNAME=your-username
JIRA_API_TOKEN=your-api-token-or-password
# Confluence Server/Data Center
CONFLUENCE_URL=https://confluence.example.com
CONFLUENCE_USERNAME=your-username
CONFLUENCE_API_TOKEN=your-personal-access-tokenШаблон находится в .env.example. Обычные команды npm start и npm run inspect не читают .env: передавайте переменные в конфигурации MCP-клиента либо экспортируйте их в окружение. Для локальной разработки используйте npm run start:local или npm run inspect:local — эти команды загружают .env средствами Node.js 20+.
Например, в PowerShell:
$env:JIRA_URL = "https://jira.example.com"
$env:JIRA_USERNAME = "your-username"
$env:JIRA_API_TOKEN = "your-api-token-or-password"
$env:CONFLUENCE_URL = "https://confluence.example.com"
$env:CONFLUENCE_USERNAME = "your-username"
$env:CONFLUENCE_API_TOKEN = "your-personal-access-token"
npm startПодключение к Codex
Codex Desktop, Codex CLI и IDE-расширение используют общую конфигурацию MCP. В Codex Desktop откройте Settings → MCP servers → Add server, выберите STDIO, укажите команду и переменные окружения из примера ниже, сохраните и перезапустите Codex. Подробности — в официальной документации Codex.
После публикации пакета в npm добавьте в ~/.codex/config.toml:
[mcp_servers.atlassian]
command = "npx"
args = ["-y", "mcp-server-atlassian"]
[mcp_servers.atlassian.env]
JIRA_URL = "https://jira.example.com"
JIRA_USERNAME = "your-username"
JIRA_API_TOKEN = "your-api-token-or-password"
CONFLUENCE_URL = "https://confluence.example.com"
CONFLUENCE_USERNAME = "your-username"
CONFLUENCE_API_TOKEN = "your-personal-access-token"Для запуска из локального клона без копирования секретов в config.toml используйте .env:
[mcp_servers.atlassian]
command = "node"
args = ["--env-file=.env", "dist/index.js"]
cwd = "D:\\path\\to\\jira-confluence-mcp"После перезапуска откройте /mcp в Codex CLI либо список MCP-серверов в Desktop и убедитесь, что сервер atlassian подключён. Для первой проверки выполните jira_list_projects или confluence_list_spaces.
Подключение MCP-клиента
После сборки точкой входа является dist/index.js. Пример конфигурации клиента:
{
"mcpServers": {
"atlassian": {
"command": "node",
"args": ["/absolute/path/to/jira-confluence-mcp/dist/index.js"],
"env": {
"JIRA_URL": "https://jira.example.com",
"JIRA_USERNAME": "your-username",
"JIRA_API_TOKEN": "your-api-token-or-password",
"CONFLUENCE_URL": "https://confluence.example.com",
"CONFLUENCE_USERNAME": "your-username",
"CONFLUENCE_API_TOKEN": "your-personal-access-token"
}
}
}
}Не добавляйте реальные токены в репозиторий или общие конфигурационные файлы.
Локальный запуск и разработка
npm start # запуск со значениями из окружения MCP-клиента
npm run start:local # локальный запуск с переменными из .env
npm run dev # компиляция TypeScript в watch-режиме
npm run build # компиляция в dist/
npm run inspect # Inspector со значениями из окружения
npm run inspect:local # Inspector с переменными из .envnpm start запускает сервер по stdio; это не HTTP-сервис и не открывает порт.
Примечания по API
URL Jira и Confluence указываются без обязательного завершающего
/: лишние слеши автоматически убираются.Тела страниц при создании и обновлении должны быть валидным JSON в формате Atlassian Document Format (ADF).
confluence_find_pages_for_issueпо умолчанию ищет в пространствеZPA; при необходимости передайтеspaceKey.
Импорт Confluence в Markdown
Импорт доступен независимо от MCP, через Node.js. REST API используется только на чтение. Нужны Node.js 20.6+ для флага --env-file (либо передайте переменные окружения самостоятельно) и собранный проект:
npm ci
npm run build
node --env-file=.env dist/import-confluence.js 468684852 --out imports --modules=ma,qcCLI использует CONFLUENCE_URL и CONFLUENCE_API_TOKEN. Jira credentials не нужны; JIRA_URL необязателен и задаёт адрес ссылок Jira. Без него используется origin Confluence. Для Jira с отдельным хостом или context path задайте его явно. Существующие переменные окружения имеют приоритет над .env.
Движок преобразования
Для импорта используется remark:
node --env-file=.env dist/import-confluence.js 468684852 478273679 --converter remark --out imports
npm run import:confluence -- --helpremark — единственный встроенный движок и значение по умолчанию. Интерфейс MarkdownConverter в src/import/converters.ts сохранён: id, version и convert(html). Нормализация Confluence и файловая синхронизация независимы от адаптера. При изменении правил увеличивайте FORMAT_VERSION, при изменении адаптера — его version.
Офлайн-пример без сети и учётных данных:
node dist/import-confluence.js --fixture test/fixtures/page.json --out imports/sampleFixture — JSON страницы REST API с id, title, space, version, body.storage. Офлайн-режим не разрешает вложения и ссылки по названию через API; они получают предупреждения. Для правильного source задайте CONFLUENCE_URL; иначе используется демонстрационный адрес.
Формат и ограничения
Файл начинается с YAML frontmatter: title, source, page_id (строка), space, version, updated.
При указании --modules=ma,qc добавляется массив modules: ["ma","qc"].
Параметр необязателен; коды модулей указываются через запятую.
updated — дата версии страницы в часовом поясе исходного timestamp, не время импорта.
После frontmatter расположен единственный H1 с названием страницы.
Заголовки источника нормализуются начиная с H2; глубина сверх H6 сопровождается предупреждением.
Сохраняются вложенные списки, начальный номер списка, жирный/курсив/зачёркнутый текст и код.
Все таблицы сохраняются как GFM-таблицы для Obsidian с выравниванием колонок в исходном Markdown. Абзацы и пункты списков внутри ячеек разделяются через ; списки сохраняют номера и отступы. Длина ячейки не меняет представление. Пустые значения остаются пустыми.
Объединения rowspan и colspan в данных разворачиваются: значение повторяется в каждой покрытой ячейке. Многоуровневая шапка объединяется через : общий заголовок попадает в каждую дочернюю колонку. Для таблиц без шапки добавляется «Столбец N», для таблиц свойств — «Поле / Значение».
Вложенная таблица выносится сразу после родительской, с подписью и идентификатором блока. В исходной ячейке остаётся ссылка Obsidian вида [[#^table-id|[1]]]. Идентификатор строится по ID исходной таблицы, а при его отсутствии — по содержимому. В последнем случае изменение содержимого меняет идентификатор. Ссылки внутри экспорта обновляются вместе с ним.
Блоки кода внутри таблиц превращаются в строки встроенного кода через . Для сочетания обратного слеша с вертикальной чертой применяется HTML , чтобы не создавать лишнюю колонку. Неоднозначные размеры объединений отмечаются в отчёте; превышение 512 колонок прерывает импорт.
Картинки становятся обычными ссылками на оригиналы, без скачивания и встраивания. Вложения ищутся через API, включая вложения другой страницы.
Ссылки на пользователей, включая ответственного аналитика, сохраняются как ссылки на профиль Confluence.
Ссылки на страницы и исходные якоря пока ведут в Confluence. В манифесте сохраняются распознанные linkedPageIds для будущего режима Obsidian; ссылки без ID не угадываются.
Контейнеры section/column/panel/expand/info/note/warning/tip раскрываются; toc удаляется. Jira key становится ссылкой, Jira JQL — ссылкой на поиск, а не снимком результатов. Code/noformat становятся блоками кода. Неизвестные макросы сохраняют доступный текст и явную отметку.
Динамические include/excerpt и результаты запросов не загружаются рекурсивно. Цвета и расположение колонок не сохраняются. Преобразование сложных таблиц является нормализацией структуры, а не копией внешнего вида страницы.
Обновление и конфликты
Имена файлов стабильны: .md. В каталоге создаётся .confluence-import.json с адресом источника, версией, движком, версией преобразования, SHA-256 результата, ссылками и предупреждениями.
Повторный запуск получает страницу заново, но идентичный результат не переписывает файлы.
Новая версия страницы или другой движок обновляют тот же файл.
Локальные правки и существующий файл без записи в манифесте дают conflict; файл сохраняется. Для сравнения или восстановления используйте другой выходной каталог.
Страница с тем же ID от другого источника и более старая версия также дают конфликт.
HTTP 403/404 и другие ошибки не удаляют предыдущий импорт.
Запись каждого файла атомарна. Каталог защищён от параллельных писателей через .import-lock. После аварийного завершения удалять оставшийся пустой lock-каталог можно только убедившись, что импорт не запущен. Файл страницы и манифест не являются общей транзакцией: сбой между их записью приведёт к безопасному конфликту на следующем запуске.
Итоговый JSON содержит статусы created, updated, unchanged, conflict, error и предупреждения. При конфликте/ошибке код выхода 1, при успешной обработке — 0. Ошибка одной страницы не останавливает остальные.
Импорты в стандартном imports/ исключены из Git. RAG-индекс и локальные wikilinks пока не реализованы.
MCP
Новый инструмент confluence_export_markdown:
{
"pageId": "468684852",
"converter": "remark",
"modules": ["ma", "qc"],
"outputDirectory": "D:/knowledge/confluence"
}Без outputDirectory возвращает Markdown и предупреждения без файловой записи. С каталогом использует тот же механизм импорта, что и CLI; путь относится к машине MCP-сервера. После пересборки перезапустите подключение MCP, чтобы новый инструмент появился в клиенте.
Проверки
npm testТесты проверяют конвертацию, метаданные, таблицы, ссылки, макросы, конфликты, неизменность файлов при повторном импорте, CLI с локальным HTTP-сервером и MCP-обработчик. Реальная доступность конкретных страниц зависит от прав токена Confluence.
Available Tools
13 toolsconfluence_create_pageA
Создать новую страницу в Confluence (формат ADF)
Inputs: body (required), title (required), spaceKey (required), parentId.
confluence_find_pages_for_issueA
Find Confluence pages for a Jira issue using remote links, then CQL title search
Inputs: issueKey (required), limit, spaceKey.
confluence_get_pageC
Получить содержимое страницы Confluence по её ID
Inputs: pageId (required).
confluence_list_spacesA
Получить список всех пространств Confluence
Inputs: no named parameters.
confluence_search_pagesB
Search Confluence pages with CQL and return page IDs and URLs
Inputs: cql (required), limit, start.
confluence_update_pageC
Обновить существующую страницу Confluence
Inputs: pageId (required), body, title.
jira_add_commentB
Добавить комментарий к задаче Jira
Inputs: body (required), issueKey (required).
jira_create_issueB
Создать новую задачу в Jira
Inputs: summary (required), projectKey (required), priority, issueType, +1 more.
jira_get_commentsB
Получить список комментариев к задаче Jira
Inputs: issueKey (required).
jira_get_issueA
Get Jira issue details including parent, subtasks, issue links and remote links
Inputs: issueKey (required).
jira_list_projectsA
Получить список всех проектов Jira
Inputs: no named parameters.
jira_search_issuesA
Поиск задач Jira по JQL-запросу
Inputs: jql (required), startAt, maxResults.
jira_update_issueA
Обновить существующую задачу в Jira
Inputs: issueKey (required), summary, priority, description.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool targets a distinct resource and action, with clear separation between Jira and Confluence tools. Potential overlap between search tools is resolved by context: jira_search_issues searches issues, confluence_search_pages searches pages, and confluence_find_pages_for_issue links issues to pages.
All tool names follow a consistent snake_case pattern with a product prefix and a verb_noun structure, e.g., jira_create_issue, confluence_get_page. Minor verb variation (search, list, find) is still predictable and does not create confusion.
With 13 tools covering both Jira and Confluence core operations, the set is well-scoped for an Atlassian integration. Each tool addresses a meaningful operation without unnecessary bloat or duplication.
The server covers essential Jira issue and Confluence page workflows, including search, read, create, update, and comments. Minor gaps exist such as delete operations, Jira transitions, and Confluence page deletion, but core integration workflows are not blocked.
Maintenance
Related MCP Connectors
Confluence MCP — wraps the Confluence Cloud REST API v2 (OAuth)
Read and write Mission Control state via MCP — projects, tasks, subtasks, templates, status updates.
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
Manage Timequip projects, tasks, comments, members, and dashboards through MCP.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides tools for AI assistants to interact with JIRA APIs, enabling them to read, create, update, and manage JIRA issues through standardized MCP tools.610 npm3MIT
- FlicenseNot gradedqualityBmaintenanceProvides JIRA issue management and automation through MCP tools and standalone scripts, enabling reading, searching, analyzing, and modifying issues with batch processing and OCR capabilities.-
- AlicenseNot gradedqualityCmaintenanceProvides JIRA issue search, retrieval, and update functionalities via MCP.63 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables to interact with JIRA issues and sprints through MCP tools, including fetching tickets, adding comments, linking issues, and more.413 npm1ISC