confluence-dc-advops-mcp
Summary: Manage Confluence Data Center pages and space templates via MCP: reparent pages, round-trip page storage XML to/from disk, and handle Create-from-template snapshots.
Reparent one or many pages under new parents.
Download a page's
body.storageXML to a local file.Publish a page's storage XML from a local file, with auto version bump and optional title/reparent.
List space page templates.
Download a space template's storage XML to a local file.
Create a new space template from a local storage XML file.
Update a space template's body from a local storage XML file (preserves labels, optional rename).
Sync a page's body (and labels per README) to a space template (Create-from-template snapshot).
Delete one or many space templates (destructive; requires explicit human confirmation
confirm="DELETE"and exact names).
Provides tools for managing Confluence Data Center pages (get, update, move, sync with space templates) and space templates (list, get, create, update, delete).
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., "@confluence-dc-advops-mcp move page 123456 under parent 789012"
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.
confluence-dc-advops-mcp
Local MCP helpers for Confluence Data Center used from Cursor.
Русская документация: README.ru.md.
Talks to the same proxy/auth as @atlassian-dc-mcp/confluence
(local TLS proxy + token from keychain / env). Prefer these tools over
ad-hoc curl to the public Confluence hostname.
Auth
Same sources as @atlassian-dc-mcp/confluence:
CONFLUENCE_HOST(env or~/.atlassian-dc-mcp/confluence.env) — typically your local proxy, e.g.https://localhost:8443CONFLUENCE_API_TOKEN(env), or macOS Keychain serviceatlassian-dc-mcp/ accountconfluence-token
Do not commit tokens or *.env files. See SECURITY.md.
Related MCP server: confluence-mcp-server
Tools
Tool | When |
| Reparent only (until upstream |
| Direct children + tree |
| Sibling order / append: |
| Exact full child order (permutation; sequential movepage) |
| Page version metadata only (who / when / message); no bodies |
| Dump page |
| Tiny link |
| Publish page storage XML from file (auto version bump) |
| Headings in a local storage file (no bodies) |
| One section as text / markdown / storage fragment (optional |
| Replace one section body on disk ( |
| Macro inventory (no bodies) |
| Replace one macro body (e.g. mermaid CDATA) |
| List attachments on a page |
| Download attachment binary to a local file |
| Upload attachment or new version of same filename; comment uses UTF-8 charset in multipart |
| Footer (page) comments; quote page text in the body (no inline create) |
| Read inline comments (open vs resolved) and reply in thread |
| Page labels ( |
| List space page templates ( |
| Dump space template body to a local XML file |
| Create new space template from file (POST); optional |
| Publish space template body from file |
| Set labels on a space template (body unchanged) |
| Fast path: copy page body and labels → space Create-from-template snapshot |
| Destructive. Delete Create template(s). Requires human chat OK + |
Fast path for large pages (BRD/SRS/…)
confluence_getStorageToFile→/path/to/page.xmlconfluence_storage_listHeadings/getSection(format: text) — do not@or Read the dump file into chatconfluence_storage_replaceSectionorconfluence_storage_replaceMacroBody(dryRunfirst if unsure)confluence_updateStorageFromFile(omitversionto auto-bump, or pass current+1)Verify with
user-confluence-dc/confluence_getContentbodyMode: text(limit chars)If the page is also a Create-from-template snapshot → sync space template (below)
Delete the temp file
These storage tools do not publish and do not return the full XML. Python/StrReplace on the dump is a fallback when they do not cover the case.
Page versions (who / when — not full blame)
confluence_listVersions— metadata only (number,when,message,by). Paginate withstart/limit; cap withmaxResults.To inspect an old body:
confluence_getStorageToFilewithversion: N→ local XML, thenstorage_getSection/ search on disk. Do not pull historical XML into chat.Not git-blame: a version author is who saved that snapshot; use snippet search on the dump for “who wrote this line”.
Do not round-trip the whole page through Markdown (macros/layout will not survive).
For tiny pages that are not templates, user-confluence-dc confluence_updateContent is still ok.
Links in text/markdown
Confluence often stores page links as empty ac:link with the target only in ri:* attributes (UI fills the title). format: storage is unchanged. For format: text / markdown (and headings that are only a link), the converter fills a label so agents do not treat the field as empty:
Prefer visible anchor text (
ac:plain-text-link-body/ac:link-body); do not also appendri:content-title.Otherwise first target:
ri:page/ri:blog-post→ri:content-titleplus[spaceKey]whenri:space-keyis set;ri:url→ri:value;ri:attachment→ri:filename;ri:space→ key/name;ri:user→[user](no invented display name).Markdown: same labels;
ri:urlmay become[label](url). Page links stay bare titles (no invented/wiki/…URLs).No REST lookup of titles/ids; no default space when
ri:space-keyis missing; tiny/pageIdnot resolved here.
Same contract as user-confluence-dc confluence_getContent with bodyMode: text (upstream mapper). Non-expand macros still appear as [macro: …] stubs in getSection text — bodies inside those macros are not walked. ac:inline-comment-marker (yellow highlight) is unwrapped: inner text is kept, ac:ref is not.
Tiny URLs (/x/{code})
DC encodes pageId as little-endian uint32 → standard base64, then /→- and +→_ (Atlassian KB). This is not RFC4648 base64url. confluence_resolveTinyUrl:
Decode with the DC alphabet →
GET /content/{id}.On 404, retry decode with
-↔_swapped (codes produced by a base64url encoder).If still 404, follow
pages/tinyurl.action?urlIdentifier={code}(undocumented; CONFSERVER-102023).Response includes
resolvedVia:decode|decode-swapped|tinyurl-action.
Use before getContent / getStorageToFile when the user pasted a short link — not CQL by title. Anchors after the code (/x/ZIAB#fragment) are ignored.
Fast path: page → space template (Create from template)
Catalog / BSA page = source of truth. Space template = snapshot for «Create from template».
confluence_syncPageToSpaceTemplate
contentId: "<pageId>"
spaceKey: "<spaceKey>"
templateId: "<templateId>"
descriptionSuffix: "(sync note)" # optional
# copyPageLabels: true by default — template labels come from the pageDC notes:
List:
/rest/experimental/template/page?spaceKey=…GET by template id alone often 404 — always pass
spaceKeyUpdate:
PUT /rest/experimental/templatewithtemplateType: "page"andbody.storageDelete:
DELETE /rest/experimental/template/{id}— only via MCP delete tools after human confirmation (confirm: "DELETE"+ exactconfirmName/confirmNames). No trash restore.
Labels (pages + Create from template)
Confluence copies space-template labels onto pages created from that template. Put labels on the catalog page, then sync (or set them on the template). New pages from «Create from template» inherit them.
Tool | When |
| Read labels on a page |
| Add without removing others |
| Remove by name |
| Replace global labels ( |
| Labels on the template only (keeps body) |
confluence_syncPageToSpaceTemplate copies the page’s global labels onto the template (copyPageLabels default true). If the page has none, current template labels are kept. Pass labels: [...] to set them explicitly. Create/update-from-file accept labels and copyLabelsFromContentId.
Page API: GET/POST /rest/api/content/{id}/label, DELETE …/label?name=. Template labels go in the experimental template PUT payload (omitting them can wipe labels on DC — tools always send a list unless you set keepLabels: false with no replacement).
Footer comments (page comments)
No inline comments. Put a quote from the page in the comment body so the subject is clear.
Tool | When |
| List footer comments ( |
| New footer comment under a page |
| Reply in a footer thread |
bodyFormat: plain (default — wrap in <p>, blank lines = paragraphs) or storage (raw Confluence storage XML).
Inline comments (read + reply only)
Does not create new text anchors. Use footer comments with a quote if you need a new note.
Tool | When |
| List inline comments; |
| Reply in an existing inline thread |
Each item includes status (open|resolved), visibleOnPage (true when open on the page), and originalSelection (anchored text when present).
Cursor config
"confluence-dc-advops": {
"command": "node",
"args": ["/path/to/confluence-dc-advops-mcp/index.js"],
"env": {
"CONFLUENCE_HOST": "https://localhost:8443",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}After changing index.js, reload MCP servers in Cursor so new tools appear.
Available Tools
11 toolsconfluence_createSpaceTemplateFromFileA
Create a new space page template from a local storage XML file via POST /rest/experimental/template. Use after a new BSA заготовка exists and needs a TempStream Create-from-template entry. Fails if a template with the same name already exists.
Inputs: name (required), filePath (required), spaceKey (required), labels, +1 more.
confluence_deleteSpaceTemplateADestructiveIdempotent
DESTRUCTIVE. Delete one TempStream/space Create template (DELETE /rest/experimental/template/{id}). ALWAYS stop and get explicit human approval in chat first — never invent confirm. Requires confirm="DELETE" and confirmName=exact template name. No trash restore; archive dump first.
Inputs: confirm (required), spaceKey (required), confirmName (required), name, +1 more.
confluence_deleteSpaceTemplatesADestructiveIdempotent
DESTRUCTIVE. Delete several space Create templates by id. ALWAYS get explicit human approval in chat first. Requires confirm="DELETE" and confirmNames[] exact names (same order as templateIds). Continues on per-item errors. Archive dump first.
Inputs: confirm (required), spaceKey (required), templateIds (required), confirmNames (required).
confluence_getSpaceTemplateToFileA
Download a space page template body.storage to a local XML file. Requires spaceKey (GET by id alone 404s on DC). Identify by templateId and/or exact/partial name.
Inputs: filePath (required), spaceKey (required), name, templateId.
confluence_getStorageToFileB
Download Confluence page body.storage XML to a local file for surgical edits (large templates). Returns version/title/path. Prefer this over stuffing huge storage into chat.
Inputs: filePath (required), contentId (required).
confluence_listSpaceTemplatesA
List space page templates via /rest/experimental/template/page (DC). Use spaceKey=TempStream for ДРП Create from template. Optional nameContains filter. Does not expand body by default (fast).
Inputs: spaceKey (required), expandBody, nameContains.
confluence_movePageA
Move (reparent) a Confluence Data Center page under a new parent. Uses PUT /rest/api/content/{id} with ancestors. Does not change page body.
Inputs: parentId (required), contentId (required), versionComment.
confluence_movePagesA
Move several Confluence pages under new parents, sequentially. Each item reports success/error.
Inputs: moves (required), versionComment.
confluence_syncPageToSpaceTemplateB
Fast path: copy body.storage from a BSA/page contentId into a TempStream space template (Create from template snapshot). Example: contentId=259706536 (Заготовка BRD) → templateId=227016711 (CR-XXX-BRD) spaceKey=TempStream.
Inputs: spaceKey (required), contentId (required), name, templateId, +2 more.
confluence_updateSpaceTemplateFromFileA
Update a space page template body from a local storage XML file via PUT /rest/experimental/template. Preserves labels by default. BSA page remains source of truth — this publishes a snapshot for Create from template. To rename: pass templateId + new name (id alone is used for lookup).
Inputs: filePath (required), spaceKey (required), name, keepLabels, +2 more.
confluence_updateStorageFromFileA
Publish page body from a local storage XML file via the Confluence proxy (same auth as confluence-dc). Auto-increments version unless you pass version (= current+1). Pass content as-is — do not re-escape entities. Optional parentId to reparent in the same PUT.
Inputs: filePath (required), contentId (required), title, version, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Every tool targets a distinct action and resource: storage file operations, page moving (single/multiple), and space template lifecycle (list, get, create, update, sync, delete). The destructive delete tools further differentiate with explicit approval requirements. No two tools cause confusion.
All tool names follow a consistent 'confluence_verbNoun' pattern with camelCase after the underscore (e.g., confluence_updateStorageFromFile, confluence_movePages). The pattern is uniform and predictable, aiding agent selection.
With 11 tools, the set is well-scoped for the domain of Confluence Data Center advanced operations, particularly around storage XML and space templates. Each tool serves a clear purpose without unnecessary overlap, making the count appropriate.
The tool surface covers the core workflows for managing storage XML files and space templates (CRUD, sync, move, delete). Minor gap: no tool to create a page from a template, but that aligns with the server's focus on template management rather than page creation. Overall, it's nearly complete for its stated purpose.
Maintenance
Related MCP Connectors
One MCP server for all your MCP servers: code mode, per-tool permissions, approvals and audit.
MCP server for Appcircle mobile CI/CD platform.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
MCP Server for JFrog, providing tools for development and artifact management.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProduction-ready MCP server for Atlassian Jira and Confluence, providing tools for issue management, page retrieval, and content operations.115 npm1MIT
- AlicenseAqualityDmaintenanceMCP server for Confluence Cloud/Server/Data Center, enabling page search, CQL queries, page CRUD, attachment upload, and user identity lookup.23366 npm4MIT
- AlicenseAqualityCmaintenanceAn MCP server for reading and writing Confluence pages in native Atlassian Document Format (ADF), enabling precise edits at the document node level without loss of formatting.43MIT
- AlicenseBqualityDmaintenanceMCP server for administering Atlassian Confluence Cloud wiki pages, supporting CRUD operations, page navigation, comments, attachments, and more.621GPL 3.0