mcp-confluence
mcp-confluence
MCP-сервер для Confluence Server / Data Center (Self-Hosted) с авторизацией по Personal Access Token. Даёт LLM-агенту доступ к поиску, чтению, созданию/редактированию страниц, комментариям, меткам и вложениям.
Работает с Confluence Server/DC REST API (
/rest/api). Для Confluence Cloud API отличается — этот сервер ориентирован именно на self-hosted.
Возможности
Инструмент | Назначение |
| Поиск по CQL |
| Страница по ID (тело в storage-формате, версия, метки) |
| Страница по пространству + заголовку |
| Список пространств |
| Дочерние страницы |
| Создать страницу |
| Обновить (версия инкрементируется автоматически) |
| Удалить страницу |
| Добавить комментарий |
| Метки |
| Список вложений |
| Загрузить файл как вложение |
| Скачать вложение на диск |
Установка
npm install
npm run buildНастройка
Вариант A — веб-панель (проще)
npm run configОткройте http://127.0.0.1:4321. Форма позволяет:
заполнить все поля (Base URL, PAT либо логин/пароль, TLS);
проверить подключение одной кнопкой (запрос к вашему Confluence);
сохранить
.envв корень проекта;скопировать готовый JSON-конфиг для Claude.
Панель слушает только 127.0.0.1 и наружу не доступна.
Вариант B — вручную
Скопируйте .env.example в .env и заполните, либо задайте переменные окружения:
Переменная | Обязательна | Описание |
| да | URL инстанса, например |
| да* | Personal Access Token (рекомендуемый способ) |
| да* | Basic Auth (fallback, если PAT не задан) |
| нет |
|
* Нужен либо CONFLUENCE_PAT, либо пара логин/пароль.
Как получить PAT: в Confluence → аватар → Settings → Personal Access Tokens → Create token.
Подключение к Claude Code / Claude Desktop
Добавьте в конфиг MCP-клиента:
{
"mcpServers": {
"confluence": {
"command": "node",
"args": ["G:/Portfolio/mcp-confluence/dist/index.js"],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.company.local",
"CONFLUENCE_PAT": "your-personal-access-token"
}
}
}
}Для Claude Code также можно быстрее:
claude mcp add confluence -- node G:/Portfolio/mcp-confluence/dist/index.js(предварительно задав переменные окружения или прописав их через -e KEY=value).
Docker
Образ собирается multi-stage (сборка TypeScript → лёгкий node:22-alpine рантайм, ~260 МБ, запуск от непривилегированного пользователя node).
docker build -t mcp-confluence:latest .MCP-сервер (stdio) — MCP-клиент запускает контейнер сам. Пример для Claude Code:
claude mcp add confluence -- \
docker run --rm -i \
-e CONFLUENCE_BASE_URL=https://confluence.company.local \
-e CONFLUENCE_PAT=your-token \
mcp-confluence:latestКлючевой флаг — -i (interactive): протокол MCP идёт через stdin/stdout.
Веб-панель настройки — нужен проброс порта и CONFIG_UI_HOST=0.0.0.0:
docker run --rm -p 4321:4321 -e CONFIG_UI_HOST=0.0.0.0 \
-v "$(pwd)/.env:/app/.env" \
mcp-confluence:latest dist/web.jsИли через compose:
docker compose up # поднимет панель на http://localhost:4321
.envвнутри контейнера эфемерен — смонтируйте его томом (как выше), чтобы сохранённые настройки не пропали.
О формате тела страниц
Confluence хранит контент в storage-формате (XHTML с макросами). Примеры:
<p>Обычный абзац</p>
<h2>Заголовок</h2>
<ac:structured-macro ac:name="info">
<ac:rich-text-body><p>Инфо-блок</p></ac:rich-text-body>
</ac:structured-macro>При создании/обновлении страниц передавайте тело именно в этом формате.
Разработка
npm run dev # tsc в watch-режимеЛицензия
MIT