Verified MCP server: Confluence

The Confluence MCP server, enumerated live on a real Mac.

  • Tools enumerated2026-08-03macOS 15.7.7
  • Packagemcp-atlassian 0.23.0
  • Self-reportedAtlassian MCP 3.4.5
  • MCP protocol2025-06-18
  • RuntimePython 3.13 (uvx 0.10.2)

The tool list below is a live capture from the running server; an authenticated tool call is still pending credentials.

The short answer

Last verified 2026-08-03

The Confluence MCP server lets an AI assistant search your wiki and read pages, page trees, comments, attachments and permissions, from a chat window or a scheduled routine. It is one half of mcp-atlassian, a community package that covers Confluence and Jira from the same command and runs on your own Mac against an Atlassian API token, and it is not the same product as Atlassian's own hosted Rovo MCP Server, which your client reaches over the network once it has signed in to Atlassian. We ran the community one with its read-only switch on, spoke the protocol to it, and enumerated every tool that configuration exposes: the table below is that capture, word for word. What we could not do is complete an authenticated call. That needs a token for a real Confluence site, so the single call we made came back as a 404 from the placeholder address we had pointed it at, printed in full below, and this page stops there. One detail is worth catching before you start, because it costs people an evening: the address you paste ends in /wiki, and the Jira one does not. [1][3][8][5]

  • Tools

    20, enumerated live

  • Credentials

    Atlassian API token needed [9]

  • Transport

    stdio, runs on your Mac [5]

  • Maintainer

    sooperset, community project [1][3]

  • Downloads

    358k last week [2]

  • License

    MIT [4]

Verification

How this MCP server was verified.

Method

We spawned the server with uvx over stdio against a placeholder Confluence address, with placeholder values in CONFLUENCE_URL, CONFLUENCE_USERNAME and CONFLUENCE_API_TOKEN and READ_ONLY_MODE set to true, completed the MCP initialize handshake, and called tools/list: the 20 tools below are that response, word for word. We then made one real tools/call, confluence_search, and it failed, as it had to. The excerpt printed beside it is what came back, a 404 from the placeholder address, which is a configuration and authentication error rather than a Confluence result. An authenticated call here is pending an Atlassian API token for a real wiki, which we do not have, so nothing on this page claims a successful Confluence read. Four more runs of the same package on the same Mac that day produced the rest of the errors quoted below: one with no Atlassian variables at all, one with a malformed address, one calling a tool name that does not exist, and one sending arguments the tools reject. One thing to expect in the banner below: its timestamps read 08/04/26 because the run crossed local midnight, while the capture is dated 2026-08-03 with the rest of its batch.

Startup banner

╭──────────────────────────────────────────────────────────────────────────────╮
│                                                                              │
│                                                                              │
│                         ▄▀▀ ▄▀█ █▀▀ ▀█▀ █▀▄▀█ █▀▀ █▀█                        │
│                         █▀  █▀█ ▄▄█  █  █ ▀ █ █▄▄ █▀▀                        │
│                                                                              │
│                                                                              │
│                                                                              │
│                                FastMCP 3.4.5                                 │
│                            https://gofastmcp.com                             │
│                                                                              │
│                  🖥  Server:      Atlassian MCP, 3.4.5                        │
│                  🚀 Deploy free: https://horizon.prefect.io                  │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯


WARNING - mcp_atlassian.utils.toolsets - TOOLSETS is not set — currently defaults to all toolsets. In v0.22.0, the default will change to 6 core toolsets only. Set TOOLSETS=all explicitly to preserve current behavior.
[08/04/26 00:08:49] INFO     Starting MCP server 'Atlassian     transport.py:241
                             MCP' with transport 'stdio'                        

One real tool call

tools/call confluence_search {"query": "siteSearch ~ \"onboarding\"", "limit": 3}
Error calling tool 'search': 404 Client Error: Not Found for url: https://example.atlassian.net/wiki/rest/api/search?start=0&limit=3&cql=siteSearch+~+%22onboarding%22&expand=content.history,content.version

Real lines from the captured result: enough to prove the call answered.

Tools

Every tool, enumerated from the running server.

The server answered tools/list with 20 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.

ToolWhat it does
confluence_searchquery*limitspaces_filter

Search Confluence content using simple terms or CQL.

confluence_get_pagepage_idtitlespace_keyinclude_metadataconvert_to_markdown

Get content of a specific Confluence page by its ID, or by its title and space key.

confluence_get_page_childrenparent_id*expandlimitinclude_contentconvert_to_markdownstartinclude_folders

Get child pages and folders of a specific Confluence page.

confluence_get_space_page_treespace_key*limit

Get page hierarchy for a Confluence space as a flat list. Returns pages with parent_id and depth attributes for token-efficient processing. Filter by depth to focus on relevant sections, or find pages by title. Much more efficient than rendering full ASCII trees. Use this to understand space organization before creating/moving pages.

confluence_get_commentspage_id*

Get comments for a specific Confluence page.

confluence_get_labelspage_id*

Get labels for Confluence content (pages, blog posts, or attachments).

confluence_get_inline_commentspage_id*

Get all inline comments for a Confluence page.

confluence_search_userquery*limitgroup_name

Search Confluence users using CQL (Cloud) or group member API (Server/DC).

confluence_get_page_historypage_id*version*convert_to_markdown

Get a historical version of a specific Confluence page.

confluence_get_page_diffpage_id*from_version*to_version*

Get a unified diff between two versions of a Confluence page.

confluence_get_page_viewspage_id*include_title

Get view statistics for a Confluence page. Note: This tool is only available for Confluence Cloud. Server/Data Center instances do not support the Analytics API.

confluence_get_attachmentscontent_id*startlimitfilenamemedia_type

List all attachments for a Confluence content item (page or blog post). Returns metadata about attachments including: - Attachment ID, title, and file type - File size and download URL - Creation/modification dates - Version information **Important**: Confluence API returns 'application/octet-stream' as the media type for most binary files (PNG, JPG, PDF) instead of specific types like 'image/png'. For filtering by file type, using the 'filename' parameter is more reliable (e.g., filename='*.png' pattern matching if supported, or exact filename). Useful for: - Discovering what files are attached to a page - Getting attachment IDs for download operations - Checking if a specific file exists - Listing images/documents for processing

confluence_download_attachmentattachment_id*

Download an attachment from Confluence as an embedded resource. Returns the attachment content as a base64-encoded embedded resource so that it is available over the MCP protocol without requiring filesystem access on the server. Files larger than 50 MB are not downloaded inline; a descriptive error message is returned instead.

confluence_download_content_attachmentscontent_id*

Download all attachments for a Confluence content item as embedded resources. Returns attachment contents as base64-encoded embedded resources so that they are available over the MCP protocol without requiring filesystem access on the server. Files larger than 50 MB are skipped with an error entry in the summary.

confluence_get_page_imagescontent_id*

Get all images attached to a Confluence page as inline image content. Filters attachments to images only (PNG, JPEG, GIF, WebP, SVG, BMP) and returns them as base64-encoded ImageContent that clients can render directly. Non-image attachments are excluded. Files with ambiguous MIME types (application/octet-stream) are detected by filename extension as a fallback. Images larger than 50 MB are skipped with an error entry in the summary.

confluence_list_page_templatesspace_keylimit

List Confluence page content templates. This operation is only available for Confluence Cloud. Returns template metadata (ID, name, description, type) without the full body. Use confluence_get_page_template to fetch a template's body.

confluence_get_page_templatetemplate_id*

Get a Cloud page template by ID, including its storage-format body.

confluence_get_page_restrictionspage_id*

Get view and edit restrictions for a Confluence page. Returns the current restriction lists for the read (view) and update (edit) operations. An empty list means the page is unrestricted for that operation.

confluence_check_content_permissionscontent_id*user_identifier*operation*subject_type

Check whether a user or group can perform an operation on specific content. Wraps POST /wiki/rest/api/content/{id}/permission/check. Note: This tool is only available for Confluence Cloud. Server/Data Center instances use different permission APIs. Returns a JSON object with a 'hasPermission' boolean indicating whether the subject has the requested permission on the content.

confluence_get_space_permissionsspace_id*limitcursor

List all permission assignments for a Confluence space. Wraps GET /wiki/api/v2/spaces/{id}/permissions. Note: This tool is only available for Confluence Cloud. Server/Data Center instances use different permission APIs. Returns a JSON object with a 'results' list of permission assignment objects. Each entry contains the principal (user or group), the operation permitted, and the target. Use this to audit who has access to a space.

Parameters marked with * are required.

Setup

Working configs, one per app.

Copy the block for the app you use. Each one is the configuration this server was verified with.

Claude Desktop

Open the file ~/Library/Application Support/Claude/claude_desktop_config.json (in Claude Desktop: Settings, then Developer, then Edit Config) and add:

{
  "mcpServers": {
    "confluence": {
      "command": "uvx",
      "args": ["mcp-atlassian"],
      "env": {
        "CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
        "CONFLUENCE_USERNAME": "you@your-company.com",
        "CONFLUENCE_API_TOKEN": "your_api_token",
        "READ_ONLY_MODE": "true"
      }
    }
  }
}

Keep the /wiki on the end of the address, fill in the email you sign in with and a token from id.atlassian.com, then quit and reopen Claude Desktop. READ_ONLY_MODE is the switch that produced the 20 tools on this page: drop it and the same server also exposes the tools that create, edit and delete pages. If Claude Desktop cannot find uvx, write the full path instead: run which uvx in Terminal to see yours, which is /Users/yourname/.local/bin/uvx if you installed uv with the astral.sh installer and somewhere else if you installed it with Homebrew. [10][5][6][13]

Claude Code

One command in your terminal:

claude mcp add confluence -e CONFLUENCE_URL=https://your-company.atlassian.net/wiki -e CONFLUENCE_USERNAME=you@your-company.com -e CONFLUENCE_API_TOKEN=your_api_token -e READ_ONLY_MODE=true -- uvx mcp-atlassian

Each -e sets one environment variable, and everything after the double dash is the exact command Claude Code will run. Your token ends up in your shell history, so paste it in a fresh terminal if that matters to you. [11]

Cursor

Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:

{
  "mcpServers": {
    "confluence": {
      "command": "uvx",
      "args": ["mcp-atlassian"],
      "env": {
        "CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
        "CONFLUENCE_USERNAME": "you@your-company.com",
        "CONFLUENCE_API_TOKEN": "your_api_token",
        "READ_ONLY_MODE": "true"
      }
    }
  }
}

Cursor picks the file up on restart. A project-level .cursor/mcp.json is worth committing to git only after you have moved the token out of it. [12]

Routines

No JSON file and no terminal. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:

Name        Confluence
Command     uvx
Arguments   mcp-atlassian

Environment Variables
CONFLUENCE_URL=https://your-company.atlassian.net/wiki
CONFLUENCE_USERNAME=you@your-company.com
CONFLUENCE_API_TOKEN=your_api_token
READ_ONLY_MODE=true

All four values belong in the Environment Variables field, one per line, not in Arguments. Click Test Connection first: a working server answers with its tool count, twenty for this configuration. If it answers zero, the variables did not reach it. [14]

No terminal needed

Set the Confluence MCP server up without the terminal.

If you have never opened Terminal and never want to, this is your path, with one unavoidable detour: this server needs an Atlassian API token, so step two is getting one. Routines is a Mac app that runs MCP servers for you: fill in the fields once, and this server's tools are available to your AI in chat and in scheduled routines.

  1. 01

    Install Routines

    Download the app from getroutines.ai/download, drag it to Applications, and sign in.

  2. 02

    Create an Atlassian API token

    Go to id.atlassian.com, open Security, then API tokens, and create one. Copy it somewhere safe: Atlassian shows it once. It is the same token page Jira uses, so one you already made works here. You will also need the email address you sign in with.

  3. 03

    Find your wiki address

    Open Confluence in a browser and read the address bar: the part you need is the https://something.atlassian.net/wiki prefix, with the /wiki on the end. That trailing /wiki is the single most common thing people get wrong here, because the Jira address does not have it.

  4. 04

    Open the MCP settings and choose Command (stdio)

    Click your account at the bottom of the sidebar, choose Settings, open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server. Switch the form to Command (stdio): this server is a command that runs on your Mac, not a web address. Name it Confluence. Command: uvx. Arguments: mcp-atlassian.

  5. 05

    Paste the environment variables

    In the Environment Variables field put one per line: CONFLUENCE_URL=https://your-company.atlassian.net/wiki, then CONFLUENCE_USERNAME=you@your-company.com, then CONFLUENCE_API_TOKEN= followed by the token you copied, then READ_ONLY_MODE=true. The first three are required, or the server starts with no tools at all. The fourth is the one that holds this connection to reading, which is the configuration we verified.

  6. 06

    Test, then add and use it

    Click Test Connection: Routines starts the server and reports how many tools it found, twenty for this configuration. Then click Add Server. The tools work in chat right away; to let a scheduled routine use them, open the routine, find the Tools & connections card, and tick the server under Apps.

Routine ideas

Routines worth scheduling.

Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.

A Monday wiki digest

Prompt

Every Monday at 8:30, search Confluence for pages in our team space that changed in the last seven days, and write a short summary of what changed and who changed it to wiki-digest.md.

A stale-docs sweep

Prompt

Every Friday at 15:00, walk the page tree of our Handbook space in Confluence, list the pages nobody has edited in 90 days with a one-line note on what each one covers, and save the list as stale-docs.md.

A runbook change watcher

Prompt

Every weekday at 8:00, check our Runbook page in Confluence for a new version since yesterday, and if there is one, summarize what changed in three bullets and save it as runbook-changes.md.

Troubleshooting

The errors we hit, and what fixed them.

Real errors captured during the verification run, printed exactly as the server returned them.

Test Connection succeeds but reports no tools

What you see

{"jsonrpc":"2.0","id":2,"result":{"tools":[]}}

The fix

The server starts happily with no Atlassian credentials at all and then exposes nothing, which is why this looks like a working connection with a broken server. We reproduced it by launching it with every Confluence and Jira variable removed: the handshake completed, the banner printed as usual, and tools/list came back with the empty list above. Check that CONFLUENCE_URL, CONFLUENCE_USERNAME and CONFLUENCE_API_TOKEN all actually reached the process. In a form-based client that means the Environment Variables field, not the arguments.

Every search comes back as a 404

What you see

Error calling tool 'search': 404 Client Error: Not Found for url: https://example.atlassian.net/wiki/rest/api/search?start=0&limit=3&cql=siteSearch+~+%22onboarding%22&expand=content.history,content.version

The fix

The tools are there, the call goes out, and the address answers 404. We triggered this on purpose by pointing CONFLUENCE_URL at https://example.atlassian.net/wiki, which is not a real wiki. Note what the message hands you for free: the full URL the server built, so you can see exactly which address it used. Check that first. The usual mistake is pasting the Jira address, which has no /wiki on the end, and the same 404 also covers a wrong email or a mistyped token. Do not read a clean startup as proof the address is right, either: we started the server once with CONFLUENCE_URL set to not-a-valid-url and the handshake still completed, because the address is only tested when the first request goes out.

A tool call is rejected before it leaves your Mac

What you see

1 validation error for call[search]
query
  Missing required argument [type=missing_argument, input_value={}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.13/v/missing_argument

The fix

This one never reached Atlassian. The server checks arguments first, and confluence_search without a query is refused on the spot. Sending limit as the word three instead of a number gets the same treatment, with a line about being unable to parse the string as an integer in place of the missing-argument one. It is a useful failure to recognise, because it means the connection itself is fine: the assistant called the tool wrong, and asking it to try again with the missing value usually ends it.

Asking for a page by name alone gets refused

What you see

Error calling tool 'get_page': Either 'page_id' OR both 'title' and 'space_key' must be provided.

The fix

confluence_get_page takes either a page id or a title together with its space key, and it refuses anything less. People hit this when they ask for a page by name, because a title is not unique across spaces. Have the assistant run confluence_search first and take the id from the result, or give it the space key alongside the exact title.

A tool name that is almost right does nothing

What you see

Unknown tool: confluence_serach_pages

The fix

We asked for confluence_serach_pages, typo included, and this one line is the whole reply. Two things to take from it. Assistants invent plausible tool names, so a routine that fails this way is usually calling something that never existed rather than something that broke. And the reply arrives as an ordinary result rather than a protocol error, so an assistant can read straight past it: the twenty names in the table above are the entire vocabulary of this connection.

Your MCP client cannot start the server at all

The fix

The uvx command belongs to uv, the Python package runner, and this server is a Python one. If uv is not installed, every client on this page fails at the spawn step before the server can say anything: install it from astral.sh/uv and restart your client. There is a second version of the same failure: whichever folder uv landed in is usually missing from the PATH of an app launched from the Dock, so a client that works in a terminal can still fail in a window. Run which uvx in Terminal to see where yours is, /Users/yourname/.local/bin/uvx if you used the astral.sh installer and somewhere else if you installed uv with Homebrew, and paste that full path in as the command.

FAQ

Questions people ask.

What is the Confluence MCP server?

It is a small program that hands an AI assistant a set of Confluence actions: search the wiki with CQL, read a page, walk a space's page tree, and pull comments, labels, attachments, version history and permissions. Two servers can do this, and they are not the same product. Atlassian hosts its own, the Rovo MCP Server, which your client reaches over the network after signing in. The community one, mcp-atlassian, runs as a local process on your Mac and authenticates with an Atlassian API token. This page verified the community one, because it is the one that starts without an Atlassian tenant to sign into. The same package also covers Jira, which has its own page in this directory. [8][5]

What exactly did you verify, and what did you not?

We started the server, completed the MCP handshake, and read the tool list off the wire. That part is measured, and the table above is the raw response. The one real tool call we made did not succeed: confluence_search reached the placeholder address we had configured and came back with a 404, which is what an unauthenticated or misconfigured setup looks like from the outside. So the tool list is evidence, and nothing here describes what a successful Confluence search returns, because we never saw one. Every error we did get is printed in full, including the ones from four further probe runs.

Which tools does the Confluence MCP server include?

The configuration on this page enumerates 20, all of them reads: pages and search (confluence_search, confluence_get_page, confluence_get_page_children, confluence_get_space_page_tree, confluence_get_page_history, confluence_get_page_diff), comments and labels (confluence_get_comments, confluence_get_inline_comments, confluence_get_labels), people and analytics (confluence_search_user, confluence_get_page_views), attachments and images (confluence_get_attachments, confluence_download_attachment, confluence_download_content_attachments, confluence_get_page_images), templates (confluence_list_page_templates, confluence_get_page_template) and permissions (confluence_get_page_restrictions, confluence_check_content_permissions, confluence_get_space_permissions). The project's docs count 35 Confluence tools across 8 toolsets, and the 15 of those that write are exactly the ones our read-only run left out. The 98 tools the README advertises are Confluence and Jira together, not Confluence alone. [7][5]

Can it create or edit Confluence pages?

The package can. The configuration on this page cannot, on purpose. We ran it with READ_ONLY_MODE=true, which the docs describe as disabling write operations, and the 20 tools it answered with are all reads. Remove that line and the same command also exposes the tools that create, update, move, copy and delete pages, add comments and labels, and upload attachments, none of which we enumerated or can vouch for here. Read-only is the safer order anyway: let an assistant read your wiki for a week before you let it write to it. [6][7]

Does it need an API key or an account?

Yes. For the Cloud setup on this page that means your wiki address ending in /wiki, the email you sign in with, and an Atlassian API token created at id.atlassian.com under Security, then API tokens. Tokens belong to your Atlassian account rather than to one product, so the one you made for Jira works here too, and it reaches everything your account reaches: a page this server can read is a page you could open in your browser, no more and no less. Treat it like your password, keep it in the environment variables field rather than in a file you commit to git, and leave READ_ONLY_MODE=true in place so a badly worded routine cannot rewrite a page. Server or Data Center installs use a Personal Access Token instead, which we did not test. [9][5]

Why does PyPI say 0.23.0 while the server reports 3.4.5?

Both numbers are real and we captured both. PyPI publishes mcp-atlassian at 0.23.0. Over MCP the running process self-reports as Atlassian MCP 3.4.5, which is the version of FastMCP, the framework it is built on: the startup banner above prints 3.4.5 next to the FastMCP name. Reading 3.4.5 as the Confluence server's own version number would be wrong. [1]

Do I need this server to use Confluence in Routines?

No. Routines ships an Atlassian connector you turn on with a one-click sign-in, and it covers Confluence as well as Jira through Atlassian's hosted MCP server, so there is nothing to install and no token to paste. Set the community server up instead if you want the tool set on this page, page trees, version diffs, attachments and permission checks included, or if your Confluence is a Server or Data Center instance rather than Cloud. [14]

Sources

Every external claim, receipted.

Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.

  1. [1]

    PyPI: mcp-atlassianaccessed 2026-08-03

    Latest version 0.23.0, uploaded 2026-07-18.

  2. [2]

    pypistats API: recent downloadsaccessed 2026-08-03

    357,922 downloads in the last week, 1,902,768 in the last month.

  3. [3]

    GitHub: sooperset/mcp-atlassianaccessed 2026-08-03

    5,691 stars, not archived, and a push dated 2026-08-02 at access time, per the GitHub API.

  4. [4]

    mcp-atlassian LICENSE fileaccessed 2026-08-03

    MIT, as reported by the GitHub API for the repository.

  5. [5]

    mcp-atlassian READMEaccessed 2026-08-03

    The uvx command shape, the CONFLUENCE_URL value ending in /wiki with CONFLUENCE_USERNAME and CONFLUENCE_API_TOKEN beside it, the API token and Personal Access Token routes, and the count of 98 tools across Jira and Confluence.

  6. [6]

    mcp-atlassian docs: Configurationaccessed 2026-08-03

    The Server Options table lists READ_ONLY_MODE as "Disable write operations (true/false)".

  7. [7]

    mcp-atlassian docs: Tools Referenceaccessed 2026-08-03

    98 tools in total, and 8 Confluence toolsets listing 35 Confluence tools, 15 of which are writes.

  8. [8]

    Atlassian: getting started with the Atlassian Rovo MCP Serveraccessed 2026-08-03

    Atlassian's own hosted server and its current URL, https://mcp.atlassian.com/v1/mcp/authv2.

  9. [9]

    Atlassian account: API tokensaccessed 2026-08-03

    Where an Atlassian API token is created for the community server.

  10. [10]

    modelcontextprotocol.io: Connect to local MCP serversaccessed 2026-08-03

    The claude_desktop_config.json shape, including the env object.

  11. [11]

    Claude Code docs: MCPaccessed 2026-08-03

    The claude mcp add syntax, including -e for environment variables.

  12. [12]

    Cursor docs: Model Context Protocolaccessed 2026-08-03

    The mcp.json shape and file locations.

  13. [13]

    Astral docs: installing uvaccessed 2026-08-04

    The standalone installer puts uv and uvx in ~/.local/bin on macOS; Homebrew is listed as a separate install method, and it put uvx at /usr/local/bin/uvx on the Mac this page was captured on.

  14. [14]

    Routines: Connectorsaccessed 2026-08-03

    The built-in Atlassian connector, which covers Confluence and Jira, and how Routines runs any MCP server.

This page describes Confluence as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.

Behind this directory

Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. Your notes stay markdown files on your Mac, there is no cloud bill, and it works offline. Download Routines