confluence-cloud-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CONFLUENCE_EMAIL | Yes | Atlassian account email used for Basic Auth | |
| CONFLUENCE_BASE_URL | Yes | The Confluence Cloud site base URL, e.g. https://example.atlassian.net | |
| CONFLUENCE_API_TOKEN | Yes | Atlassian API token | |
| CONFLUENCE_ALLOW_RAW_WRITE | No | Set to 'true' to enable raw POST/PUT/PATCH/DELETE. Defaults to false. | false |
| CONFLUENCE_ALLOW_CUSTOM_DOMAIN | No | Set to 'true' if using a managed custom domain rather than *.atlassian.net. Defaults to false. | false |
| CONFLUENCE_ALLOW_LOCAL_FILE_UPLOAD | No | Set to 'true' to enable local file uploads as attachments. Defaults to false. | false |
| CONFLUENCE_ALLOW_DESTRUCTIVE_OPERATIONS | No | Set to 'true' to enable destructive operations like page delete/purge/raw DELETE. Defaults to false. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| confluence_get_content_treeA | HIGH-LEVEL: Get a page or folder hierarchy in one MCP call, rendered as an indented text tree (title [id], a trailing / marks folders). Prefer this over recursively calling confluence_list_children: the server reads v2 descendants, consumes cursor pagination, and rebuilds the hierarchy. output_mode=compact (default) returns the deepest view that fits the output budget and lists collapsed branches in omittedBranches, so a follow-up call can expand only what matters; output_mode=outline returns just the direct children with child counts and is the cheapest way to map a large or unknown tree first; output_mode=detailed returns raw node objects and is only worth it when parentId, childPosition or status are needed. Retained document versions, which Confluence stores as "Versions of ..." child content, are excluded by default so history cannot consume the item budget ahead of sibling branches; set include_version_history=true to include them, and status.excludedVersionHistory reports what was skipped. status separates fetchedItems from renderedItems and names every truncationReason. When status.nextCursor is returned, pass it back as cursor with the same root_id, depth and output_mode to continue the traversal; when truncationReasons contains output_budget, raising max_chars renders more of what was already fetched without extra API calls. |
| confluence_search_and_fetchA | HIGH-LEVEL: Find pages and read their bodies in one MCP call. Prefer this over confluence_search followed by confluence_get_page per result. Pass a plain query with search_mode instead of writing CQL: auto (default) tries exact title, then title prefix, then full text and stops at the first mode that matches, which keeps identifiers such as codes or part numbers from being diluted by full-text tokenization; exact_title, title_prefix and full_text pin one strategy; cql is the escape hatch for a hand-written query. strategy.cqlUsed reports what actually ran. Non-page or failed fetches come back as partial results. |
| confluence_get_page_contextA | HIGH-LEVEL: Gather the information commonly needed to understand one page in one MCP call: body/current version plus optional ancestors, attachments, and comments. Prefer this over calling several page context primitives separately; optional section failures are returned with partial status. |
| confluence_get_space_overviewA | HIGH-LEVEL: Get space metadata and the homepage/root content tree in one MCP call. Prefer this when first learning a space instead of listing spaces, fetching the space, and recursively listing children. Provide either space_id or space_key; with space_key (for example DOCS) the server resolves the numeric space id itself. status.nextCursor can be passed back as cursor to continue the tree traversal. The tree is always budgeted and reports partial/truncated state. |
| confluence_get_comment_threadA | HIGH-LEVEL: Get one footer or inline comment plus its reply tree in one MCP call. Prefer this over repeatedly calling confluence_get_comment and child-comment endpoints. max_depth and max_items bound recursive traversal; partial/truncated status is explicit. |
| confluence_searchA | Primitive: search Confluence content with raw CQL when only compact search metadata is needed, or when the query needs fields the high-level tool does not expose (label, space, type, ancestor, lastmodified). For search plus page bodies, and for plain queries that should not be hand-written as CQL, prefer confluence_search_and_fetch. CQL matching: title = "Exact Title" matches the whole title; title ~ "Prefix*" matches a partial title; text ~ "words" searches full text. Full text is tokenized, so an identifier such as AB12-C also matches pages containing only its fragments: when the exact title is known, try title = first, then title ~ "...", and use text ~ only as the fallback. Combine with and/or, for example space = "DOCS" and title ~ "Report". |
| confluence_list_pagesC | List Confluence pages with optional space, title, status, ID, and body format filters. Use cursor from the previous response for the next page. |
| confluence_get_pageA | Primitive: get one Confluence page by ID. Use it when a single page body or a specific field set is all that is needed. For the page plus its ancestors, attachments, or comments, prefer confluence_get_page_context. |
| confluence_get_contentA | Get a generic Confluence content item through REST API v1 when v2 does not expose the needed content shape or expansion. |
| confluence_list_spacesC | List Confluence spaces with optional key, type, status, and description format filters. |
| confluence_get_spaceA | Primitive: get one Confluence space by ID when only the space record is needed. When first understanding a space and its structure, prefer confluence_get_space_overview, which also accepts a space key. |
| confluence_get_folderA | Get one Confluence folder by ID, optionally including direct children, operations, properties, or collaborators. |
| confluence_create_folderB | Create a folder in a Confluence space, optionally under a parent page or folder. |
| confluence_list_childrenA | Primitive: list one direct level of page or folder children. Use it when exactly one immediate level is needed, or when the caller wants to drive cursor pagination itself. For recursive hierarchy exploration prefer confluence_get_content_tree; for a large or unknown hierarchy call it with output_mode=outline first and expand only the branches that matter. |
| confluence_list_descendantsA | Primitive: list one paginated descendants response below a page or folder, in flat top-to-bottom order. Returns the API response as-is, including the "Versions of ..." containers Confluence uses for retained document versions; set include_version_history=false to drop those and everything under them from this page of results. Use it when a raw page of descendants or manual cursor control is needed. For a rendered hierarchy with pagination handled server-side, and with version history excluded by default, prefer confluence_get_content_tree. |
| confluence_get_ancestorsA | Primitive: get the ancestor chain for a page or folder. When the surrounding page context is also needed, prefer confluence_get_page_context. |
| confluence_list_attachmentsA | Primitive: list attachments for a page with optional filename, media type, status, and cursor filters. For attachments together with the page body and comments, prefer confluence_get_page_context. |
| confluence_get_attachmentB | Get attachment metadata and optional version, labels, properties, operations, or collaborators. |
| confluence_list_commentsA | Primitive: list root footer or inline comments on a page. For one discussion and all bounded replies, prefer confluence_get_comment_thread; use this for a single page-level comment list. |
| confluence_get_commentA | Primitive: get one footer or inline comment by ID. For the comment plus its bounded reply tree, prefer confluence_get_comment_thread. |
| confluence_list_versionsB | List page version history with optional body representation and cursor pagination. |
| confluence_get_page_versionC | Get details for one historical page version. |
| confluence_get_content_historyB | Get v1 history details for generic Confluence content, useful when the v2 page model does not expose the required history shape. |
| confluence_create_pageB | Create a published or draft Confluence page in a space, optionally under a parent page. Body is Confluence storage or Atlas document format. |
| confluence_update_pageA | Update a page body and title using an explicit current version number. Read the page first when unsure; Confluence requires optimistic versioning. |
| confluence_update_page_titleC | Update only a page title using the v2 title endpoint and explicit version number. |
| confluence_create_commentC | Create a footer comment on a page or as a reply to an existing comment. |
| confluence_update_commentA | Update a footer comment body. Use confluence_get_comment first if you need to inspect its current version. |
| confluence_create_inline_commentC | Create an inline comment on a page. inline_comment_properties should contain the selection coordinates required by the Confluence v2 API. |
| confluence_update_inline_commentC | Update or resolve an inline comment. |
| confluence_delete_pageA | Move a page to the Confluence trash, or permanently purge a trashed page. Disabled unless CONFLUENCE_ALLOW_DESTRUCTIVE_OPERATIONS=true and confirm=true. |
| confluence_upload_attachmentA | Upload a local file to a page using REST API v1. Disabled unless CONFLUENCE_ALLOW_LOCAL_FILE_UPLOAD=true and confirm=true; the file path is read by this local process. |
| confluence_raw_requestA | Call an allowlisted Confluence REST API path for an operation not covered by a named tool. Path must be under /wiki/api/v2/ or /wiki/rest/api/. GET is enabled by default; non-GET requires CONFLUENCE_ALLOW_RAW_WRITE=true and confirm=true, and DELETE also requires destructive opt-in. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 33 tools
All 33 tools have clearly defined, non-overlapping purposes. High-level composite tools (e.g., confluence_get_content_tree, confluence_search_and_fetch) are explicitly distinguished from the primitives they wrap (e.g., confluence_list_children, confluence_search), with guidance on when to prefer each. No two tools appear to do the same thing.
Every tool follows the same `confluence_` prefix plus a verb_noun convention (e.g., list_pages, get_page, create_page, update_page, delete_page, upload_attachment). Even composite tools like get_content_tree and get_space_overview fit the pattern with descriptive nouns. No mixed camelCase or inconsistent verbs observed.
With 33 tools, this server exceeds the 25+ threshold that signals an overly heavy tool surface. While each tool is individually useful, the large number increases the risk of agent confusion and selection fatigue. A few composite tools absorb some redundancy, but the overall count is still high for a typical MCP server.
The tool surface covers core Confluence operations thoroughly: page and comment CRUD, folder management, attachments, version history, search, and content tree traversal. Minor gaps exist (e.g., no explicit move/copy page, no label management), but the raw_request escape hatch mitigates these, so the set is nearly complete for common workflows.