Atlassian Confluence MCP Server
This server provides a comprehensive MCP interface to Atlassian Confluence, enabling AI assistants to read, search, create, and manage wiki content, spaces, and related artifacts.
Connection & spaces: Test connectivity, list/get spaces, create/delete spaces, get space homepage.
Pages: Get by ID/title/URL, list, create, update, patch (find/replace), append/prepend, delete, copy, move.
Search: Full CQL search, text search, recently modified pages.
Content organization: Manage labels, comments, attachments (including upload), child/ancestor navigation, version history, content properties.
Collaboration: Get current user, manage page watchers, get/set page permissions.
Productivity: Extract inline tasks, export pages to PDF/Word, access personal space.
Provides tools for interacting with Atlassian Confluence, enabling AI assistants to read, create, update, delete, search, and manage pages, spaces, labels, comments, attachments, version history, and page hierarchy.
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 Confluence MCP Server search for pages about deployment guide"
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 Confluence MCP Server
An open-source Model Context Protocol (MCP) server for Atlassian Confluence that lets AI assistants like Claude and Windsurf read, create, search, and manage Confluence wiki pages. Works with Confluence Cloud, on-premise Server, and Data Center deployments — connect your AI coding agent to your team's knowledge base in seconds via npx.
Why atlassian-confluence-mcp-server?
✅ Only MCP server supporting Cloud + Server + Data Center in one package
✅ 47 tools — most comprehensive Confluence MCP available
✅ Zero config via
npx— no install needed✅ PAT, Basic Auth, and API token support
✅ Actively maintained with provenance-signed releases
Related MCP server: finviet-confluence-mcp
Why use this instead of Atlassian's official MCP server?
Feature | This package | Atlassian Official |
Confluence Cloud | ✅ | ✅ |
On-premise Server | ✅ | ❌ |
Data Center | ✅ | ❌ |
Zero config via npx | ✅ | ❌ |
47 tools | ✅ | ~15 tools |
Space management (create/delete) | ✅ | ❌ |
Page copy/move | ✅ | ❌ |
Watchers | ✅ | ❌ |
Permissions/restrictions | ✅ | ❌ |
Task extraction | ✅ | ❌ |
Export (PDF/Word) | ✅ | ❌ |
Open source | ✅ MIT | ✅ |
Works offline/intranet | ✅ | ❌ |
Features
Space Management — Create, delete, list, and inspect spaces
Page CRUD — Create, read, update, delete, copy, and move pages
Search — Full CQL and text search, recently modified pages
Labels — Add, list, and remove page labels
Comments — Read and post page comments
Attachments — List and upload page and comment attachments
Page Hierarchy — Navigate parent/child relationships
Version History — Browse and inspect page versions
Watchers — View and manage page watchers
Permissions — Get and set page restrictions
Tasks — Extract inline tasks from pages
Export — Generate PDF/Word export URLs
Personal Space — Create pages in your personal space
URL Parsing — Retrieve page content from a Confluence URL
Prerequisites
Node.js 22.12+
A Confluence instance (Cloud or Server/Data Center 7.9+)
Authentication credentials (PAT or username/password)
Installation
Via npx (no install required)
npx atlassian-confluence-mcp-serverGlobal install
npm install -g atlassian-confluence-mcp-serverFrom source
git clone https://github.com/anuragagrawal0430/atlassian-confluence-mcp-server.git
cd atlassian-confluence-mcp-server
npm install
npm run buildConfiguration
All configuration is passed through environment variables. Never hard-code credentials.
Variable | Required | Description |
| Yes | Root URL of your Confluence instance |
| See below | API token (Cloud) or Personal Access Token (Server/DC) |
| Cloud only | Your Atlassian account email |
| Alt auth | Password or API token for Basic Auth |
| No | Defaults to |
| No | Defaults to |
| No | Optional comma-separated allowlist of tool names to expose |
| No | Optional comma-separated allowlist of space keys for requests with |
| No | Defaults to |
| No | Client-side max file size for |
| No | Security: Comma-separated allowlist of absolute directory paths from which file uploads are allowed. Empty by default (uploads disabled). |
Confluence Cloud
Cloud API tokens are generated from your Atlassian account and require both your email and the token:
CONFLUENCE_BASE_URL=https://your-site.atlassian.net
CONFLUENCE_USERNAME=you@example.com
PAT=your-api-tokenGo to https://id.atlassian.com/manage-profile/security/api-tokens
Click Create API token, give it a label, and copy the value
Set
CONFLUENCE_USERNAMEto your Atlassian account emailSet
PATto the copied API token
Confluence Server / Data Center (7.9+)
Server and Data Center instances use a Personal Access Token with Bearer authentication. Only the token is needed:
CONFLUENCE_BASE_URL=https://confluence.example.com
PAT=your-personal-access-tokenNavigate to Profile > Settings > Personal Access Tokens
Create a token with the required permissions
Copy the token value
Basic Authentication (fallback)
For older Server versions without PAT support, use username/password:
CONFLUENCE_BASE_URL=https://confluence.example.com
CONFLUENCE_USERNAME=your-username
CONFLUENCE_PASSWORD=your-passwordSecurity Controls (important)
The server now uses secure defaults to reduce prompt-injection blast radius and credential leakage risk:
CONFLUENCE_READ_ONLY=trueby defaultMutating tools are disabled unless you set
CONFLUENCE_READ_ONLY=false.
CONFLUENCE_ENABLE_DESTRUCTIVE_TOOLS=falseby defaultconfluence_delete_page,confluence_delete_space, andconfluence_set_page_permissionsremain disabled unless explicitly enabled.
CONFLUENCE_ENABLED_TOOLS(optional)Restrict exposure to an explicit tool allowlist.
CONFLUENCE_ALLOWED_SPACES(optional)Restrict requests that include
spaceKey/destinationSpaceKeyto an approved set.
CONFLUENCE_ALLOW_INSECURE_HTTP=falseby defaultHTTPS is required unless this is set to
true.Even when enabled, insecure HTTP is restricted to localhost/loopback only.
CONFLUENCE_MAX_ATTACHMENT_BYTES(optional, default 50 MB)Caps how large a host file
confluence_upload_attachmentwill read before calling Confluence.Independent of the instance "Attachment Maximum Size" admin setting (not exposed via public REST).
CONFLUENCE_UPLOAD_ALLOWED_DIRS(optional, defaults to empty)Explicitly restricts which host directories the MCP server is allowed to read files from when uploading attachments.
If not configured, file uploads from the host filesystem are entirely disabled.
Example (enable safe writes, keep destructive tools disabled):
CONFLUENCE_READ_ONLY=false
CONFLUENCE_ENABLE_DESTRUCTIVE_TOOLS=falseExample (strict allowlist):
CONFLUENCE_ENABLED_TOOLS=confluence_get_page,confluence_search_pages,confluence_get_page_body_chunkExample (space-level allowlist):
CONFLUENCE_ALLOWED_SPACES=ENG,SECURITYMCP Client Configuration
Cloud (npx)
{
"mcpServers": {
"confluence": {
"command": "npx",
"args": ["-y", "atlassian-confluence-mcp-server"],
"env": {
"CONFLUENCE_BASE_URL": "https://your-site.atlassian.net",
"CONFLUENCE_USERNAME": "you@example.com",
"PAT": "your-api-token"
}
}
}
}Server / Data Center (npx)
{
"mcpServers": {
"confluence": {
"command": "npx",
"args": ["-y", "atlassian-confluence-mcp-server"],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"PAT": "your-personal-access-token"
}
}
}
}Global install
{
"mcpServers": {
"confluence": {
"command": "atlassian-confluence-mcp-server",
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"PAT": "your-personal-access-token"
}
}
}
}From source
{
"mcpServers": {
"confluence": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"PAT": "your-personal-access-token"
}
}
}
}Available Tools (47)
Note: tool exposure depends on security configuration. With the default CONFLUENCE_READ_ONLY=true, mutating tools are intentionally hidden/blocked.
Connection
Tool | Description |
| Test connection to Confluence API |
Spaces
Tool | Description |
| List all spaces |
| Get space details by key |
| Alias for |
| Create a new space |
| Delete a space and all its content |
| Get the homepage of a space |
Pages
Tool | Description |
| List pages, optionally filtered by space |
| Get page by ID |
| Get page by title within a space |
| Create a new page |
| Update an existing page |
| Server-side exact find/replace patch for large pages |
| Replace middle range using offsets or line numbers |
| Append or prepend content server-side |
| Read large page body in offset/length chunks |
| Delete a page |
| Copy a page, optionally to a different space |
| Move a page to a different parent or space |
Search
Tool | Description |
| Search using CQL |
| Search pages by text |
| Get recently modified pages |
Labels
Tool | Description |
| Get labels on a page |
| Add a label to a page |
| Remove a label from a page |
Comments
Tool | Description |
| Get comments on a page |
| Add a comment to a page |
Attachments
Tool | Description |
| List attachments on a page |
| List attachments on a comment |
| Upload/upsert a local file as a page or comment attachment |
Page Hierarchy
Tool | Description |
| Get child pages of a parent |
| Get ancestor pages |
Version History
Tool | Description |
| Get page version history |
| Get a specific page version |
Properties
Tool | Description |
| Get content properties of a page |
User
Tool | Description |
| Get current authenticated user |
Watchers
Tool | Description |
| Get users watching a page |
| Add current user as a watcher |
| Remove current user as a watcher |
Permissions
Tool | Description |
| Get page restrictions/permissions |
| Set page restrictions/permissions |
Tasks
Tool | Description |
| Extract inline tasks from a page |
Export
Tool | Description |
| Get export URL for a page (PDF or Word) |
Utilities
Tool | Description |
| Get page from a Confluence URL |
Personal Space
Tool | Description |
| Get current user's personal space key |
| Create page in personal space |
| Create a private space |
Resources
URI | Description |
| List of all Confluence spaces |
Example CQL Queries
# Pages in a specific space
type=page AND space=TEAM
# Pages with a label
type=page AND label=documentation
# Recently modified pages
type=page AND lastModified > now("-7d")
# Title search
type=page AND title~"Meeting Notes"
# Pages created by current user
type=page AND creator=currentUser()Page Body Format
Pages use Confluence storage format (XHTML):
<p>This is a paragraph.</p>
<h1>Heading 1</h1>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
<ac:structured-macro ac:name="code">
<ac:parameter ac:name="language">javascript</ac:parameter>
<ac:plain-text-body><![CDATA[console.log("Hello");]]></ac:plain-text-body>
</ac:structured-macro>Editing Very Large Pages
When a page body is very large (for example hundreds of KB), avoid sending the full body through confluence_update_page.
Recommended workflow:
Use
confluence_get_page_body_chunkto inspect the relevant part of the page.Use one of:
confluence_patch_pagefor exact find/replace edits.confluence_replace_page_rangefor replacing a specific middle range.confluence_append_to_pagefor incremental append/prepend updates.
Notes:
Offset-based range replacement is the most reliable mode for storage XHTML.
Line-based replacement requires actual newline characters in the stored body.
These tools still perform a full Confluence update under the hood, but the full body remains server-side.
Security
Credentials are read exclusively from environment variables — never hard-coded.
Input validation — all user-supplied parameters are validated and sanitized before use.
CQL injection prevention — user input interpolated into CQL queries is escaped.
URL path encoding — all dynamic path segments are encoded with
encodeURIComponent.Request timeouts — all HTTP requests have a 30-second timeout to prevent hanging.
Error sanitization — API error responses are truncated and stripped of HTML before surfacing.
Pagination limits — query limits are clamped to a safe maximum (100) to prevent abuse.
Contributing
Please see CONTRIBUTING.md for guidelines on how to contribute to this project.
Security Policy
For security policies and vulnerability reporting, see SECURITY.md.
Changelog
See CHANGELOG.md for a history of changes.
License
Acknowledgments
Available Tools
28 toolsconfluence_export_pageARead-onlyIdempotent
Get export URL for a page (PDF or Word)
Inputs: pageId (required), format.
confluence_get_child_pagesARead-onlyIdempotent
Get child pages of a parent page
Inputs: parentId (required), limit.
confluence_get_comment_attachmentsBRead-onlyIdempotent
Get attachments on a comment
Inputs: commentId (required).
confluence_get_current_userARead-onlyIdempotent
Get the current authenticated user
Inputs: no named parameters.
confluence_get_pageARead-onlyIdempotent
Get a specific page by ID (for very large pages, prefer confluence_get_page_body_chunk)
Inputs: pageId (required), includeBody.
confluence_get_page_ancestorsBRead-onlyIdempotent
Get ancestor pages of a page
Inputs: pageId (required).
confluence_get_page_attachmentsBRead-onlyIdempotent
Get attachments on a page
Inputs: pageId (required).
confluence_get_page_body_chunkARead-onlyIdempotent
Read a page body in chunks by character offset/length (useful for very large pages)
Inputs: pageId (required), length, offset.
confluence_get_page_by_titleARead-onlyIdempotent
Get a page by its title within a space
Inputs: title (required), spaceKey (required).
confluence_get_page_by_urlARead-onlyIdempotent
Get a page by its Confluence URL (e.g., https://confluence.example.com/display/SPACE/Page+Title or ?pageId=12345)
Inputs: pageUrl (required).
confluence_get_page_commentsBRead-onlyIdempotent
Get comments on a page
Inputs: pageId (required).
confluence_get_page_labelsARead-onlyIdempotent
Get labels attached to a page
Inputs: pageId (required).
confluence_get_page_permissionsBRead-onlyIdempotent
Get page restrictions/permissions
Inputs: pageId (required).
confluence_get_page_propertiesARead-onlyIdempotent
Get content properties of a page
Inputs: pageId (required).
confluence_get_pagesARead-onlyIdempotent
List pages, optionally filtered by space
Inputs: limit, start, spaceKey.
confluence_get_page_tasksBRead-onlyIdempotent
Get inline tasks from a page
Inputs: pageId (required).
confluence_get_page_versionARead-onlyIdempotent
Get a specific version of a page
Inputs: pageId (required), versionNumber (required).
confluence_get_page_versionsCRead-onlyIdempotent
Get version history of a page
Inputs: pageId (required), limit.
confluence_get_page_watchersBRead-onlyIdempotent
Get users watching a page
Inputs: pageId (required).
confluence_get_personal_space_keyARead-onlyIdempotent
Get the personal space key for the current authenticated user
Inputs: no named parameters.
confluence_get_recently_modifiedBRead-onlyIdempotent
Get recently modified pages
Inputs: limit, spaceKey.
confluence_get_spaceBRead-onlyIdempotent
Get details of a specific space by key
Inputs: spaceKey (required).
confluence_get_space_by_keyBRead-onlyIdempotent
Get details of a specific space by key
Inputs: spaceKey (required).
confluence_get_space_homepageARead-onlyIdempotent
Get the homepage of a space
Inputs: spaceKey (required).
confluence_get_spacesCRead-onlyIdempotent
List all spaces in Confluence
Inputs: limit, start.
confluence_searchARead-onlyIdempotent
Search for content using CQL (Confluence Query Language)
Inputs: cql (required), limit.
confluence_search_pagesBRead-onlyIdempotent
Search for pages by text content
Inputs: query (required), limit, spaceKey.
confluence_test_connectionARead-onlyIdempotent
Test connection to Confluence API
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Most tools target distinct resources, but there is clear overlap between confluence_get_space and confluence_get_space_by_key, which have identical descriptions. confluence_search and confluence_search_pages also blur together since both search for pages by different mechanisms.
Tool names consistently follow a confluence_verb_noun pattern and use snake_case throughout. Minor deviations like confluence_get_recently_modified lacking a noun and confluence_test_connection not using get are not seriously confusing.
28 tools is above the 25+ threshold and feels heavy for a set that is almost entirely read-only. Many niche endpoints like watchers, tasks, personal space key, and individual versions could be consolidated.
The tool surface is severely incomplete for a Confluence integration because it contains no create, update, delete, or write operations at all. Agents can read and search content but cannot perform any meaningful action on the Confluence instance.
Maintenance
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseBqualityCmaintenanceAn open-source Model Context Protocol (MCP) server for Atlassian Jira and Confluence Cloud, enabling LLMs to search, read, write, and manage issues and pages.223MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to read Confluence page content by URL, supporting self-hosted Confluence with basic auth.-
- AlicenseAqualityDmaintenanceMCP server for Confluence Server/Data Center (self-hosted) that gives LLM agents access to search, read, create/edit pages, comments, labels, and attachments via the Confluence REST API.1535 npmISC
- FlicenseNot gradedqualityDmaintenanceAn MCP server for integrating Confluence with AI applications, enabling listing spaces, browsing and searching pages, and retrieving Confluence instance info.-