Skip to main content
Glama

confluence-mcp

An MCP server for administering Atlassian Confluence Cloud wiki pages. Built with FastMCP and the Confluence REST API v2.

Features

  • Create, read, update, delete, and restore pages

  • Move (reparent) pages within a space; transfer page ownership

  • Navigate the page tree (children, ancestors, descendants)

  • Bulk-fetch multiple pages in a single request

  • Create, read, update, and delete spaces; manage space content properties

  • Full blog post CRUD (create, read, update, delete)

  • Read labels (list all labels, list pages/blogposts by label)

  • Inspect version history

  • Manage footer and inline comments (including creating inline comments)

  • List and delete attachments

  • Manage page and space content properties (key/value metadata)

  • Manage tasks

  • Bulk user lookup (resolve multiple account IDs to profiles)

Related MCP server: inhouse_confluence_mcp

Requirements

  • Python 3.11+

  • uv package manager

  • An Atlassian Confluence Cloud account with API access

Setup

1. Clone and install

git clone <repo-url>
cd confluence
uv sync

2. Configure credentials

Copy .env.example to .env and fill in your values:

cp .env.example .env

Variable

Required

Description

CONFLUENCE_BASE_URL

Yes

Your Confluence base URL, e.g. https://your-domain.atlassian.net

CONFLUENCE_EMAIL

Basic Auth

Atlassian account email

CONFLUENCE_API_TOKEN

Basic Auth

Atlassian API token

CONFLUENCE_BEARER_TOKEN

Bearer Auth

Personal Access Token (alternative to Basic Auth)

Use either Basic Auth (EMAIL + API_TOKEN) or a Bearer token — not both.

3. Run

uv run confluence-mcp

The server communicates over stdio (standard MCP transport).

Integration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your OS:

{
  "mcpServers": {
    "confluence": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/confluence",
        "run", "confluence-mcp"
      ],
      "env": {
        "CONFLUENCE_BASE_URL": "https://your-domain.atlassian.net",
        "CONFLUENCE_EMAIL": "you@example.com",
        "CONFLUENCE_API_TOKEN": "your-api-token"
      }
    }
  }
}

OpenCode

Add to your OpenCode MCP config:

{
  "confluence": {
    "command": "uv",
    "args": [
      "--directory", "/path/to/confluence",
      "run", "confluence-mcp"
    ]
  }
}

Set the env vars in your shell or .env file.

Tool Reference

Pages

Tool

Description

list_pages

List pages filtered by space, title, status, or parent

get_page

Get a page by ID (with optional body format and version)

bulk_get_pages

Fetch multiple pages by ID in a single request

create_page

Create a new page in a space

update_page

Update content, title, parent (move), or owner of a page

update_page_title

Rename a page without changing its body or version metadata

delete_page

Move a page to trash (or permanently delete with purge=true)

restore_page

Restore a trashed page to current status

get_page_operations

List permitted operations for a page

Moving a page: pass parent_id in update_page to reparent within the same space. Cross-space moves are not supported by the Confluence v2 API.

Transferring ownership: pass owner_id (Atlassian account ID) in update_page.

Page Navigation

Tool

Description

get_page_children

All child pages (recursive, paginated)

get_page_direct_children

Immediate children only

get_page_ancestors

Full breadcrumb trail to the root

get_page_descendants

All descendants

Spaces

Tool

Description

list_spaces

List spaces (filterable by type, status, key, label)

get_space

Get a space by ID

create_space

Create a new space

get_space_operations

List permitted operations for a space

get_space_content_labels

List all labels used on content within a space

list_pages_in_space

List pages in a space

list_blogposts_in_space

List blog posts in a space

get_space_permissions

List permission assignments for a space

Space Properties

Tool

Description

list_space_properties

List key/value properties on a space

get_space_property

Get a specific space property

create_space_property

Create a new space property

update_space_property

Update an existing space property

delete_space_property

Delete a space property

Blog Posts

Tool

Description

list_blogposts

List blog posts (filterable by space, status)

get_blogpost

Get a blog post by ID

create_blogpost

Create a new blog post in a space

update_blogpost

Update content, title, or status of a blog post

delete_blogpost

Move a blog post to trash (or permanently delete with purge=true)

Labels

Label add/remove is available via the Confluence v1 API only; the v2 API is read-only for labels.

Tool

Description

list_labels

List all labels across the Confluence instance

list_page_labels

Labels attached to a page

list_space_labels

Labels used across a space

list_pages_with_label

Pages that carry a specific label

list_blogposts_with_label

Blog posts that carry a specific label

Version History

Tool

Description

list_page_versions

Version history of a page

get_page_version

Details of a specific page version

Tool

Description

list_page_footer_comments

Footer comments on a page

get_footer_comment

Get a footer comment by ID

create_footer_comment

Create a comment on a page, blog post, or as a reply

update_footer_comment

Update comment content

delete_footer_comment

Delete a comment

list_footer_comment_replies

List replies to a comment

Inline Comments

Tool

Description

list_page_inline_comments

Inline comments on a page

get_inline_comment

Get an inline comment by ID

create_inline_comment

Create an inline comment anchored to a text selection

update_inline_comment

Update content or resolved state

delete_inline_comment

Delete an inline comment

Attachments

Tool

Description

list_page_attachments

List attachments on a page

get_attachment

Get an attachment by ID

delete_attachment

Delete an attachment

Uploading attachments requires multipart form data and is not supported by this server.

Content Properties

Tool

Description

list_page_properties

List key/value properties on a page

get_page_property

Get a specific property

create_page_property

Create a new property

update_page_property

Update an existing property

delete_page_property

Delete a property

Tasks

Tool

Description

list_tasks

List tasks (filterable by status, space, page, assignee)

get_task

Get a task by ID

update_task

Update task status, assignee, or due date

Utility

Tool

Description

convert_ids_to_types

Resolve content IDs to their types (page, blogpost, etc.)

bulk_user_lookup

Resolve multiple Atlassian account IDs to user profiles

Notes

  • Body formats: storage (XHTML, default for write), wiki (Confluence wiki markup), atlas_doc_format (Atlassian Document Format / ADF), view (rendered HTML, read-only).

  • Versioning: update_page, update_blogpost, update_footer_comment, and update_inline_comment all require passing the current version_number. The API increments it automatically. Always call get_page / get_blogpost first to obtain the current version.

  • Labels: To add or remove labels, use the Confluence v1 REST API (/wiki/rest/api/content/{id}/label) directly — this is not exposed in this server.

Available Tools

62 tools
bulk_get_pagesBulk Get PagesA
Read-only

Fetch multiple pages by their IDs in a single request.

Returns a results list with one entry per resolved page ID.

Args:
    page_ids: List of page IDs to retrieve (up to 250).
    body_format: Body representation — 'storage', 'atlas_doc_format', or 'view'.

Inputs: page_ids (required), body_format.

bulk_user_lookupBulk User LookupA
Read-only

Resolve multiple Atlassian account IDs to user profiles in a single call.

Useful when you have a list of assignee/author IDs from tasks or comments
and want to retrieve display names and emails in bulk.

Args:
    account_ids: List of Atlassian account IDs to look up (up to 200).

Inputs: account_ids (required).

convert_ids_to_typesConvert IDs to TypesA
Read-only

Convert a list of content IDs to their content types (page, blogpost, etc.).

Useful when you have an ID but don't know whether it refers to a page,
blog post, attachment, or other content type.

Args:
    content_ids: List of content IDs to look up.

Inputs: content_ids (required).

create_blogpostCreate BlogpostA

Create a new blog post in a space.

Args:
    space_id: The ID of the space to publish in.
    title: Title of the blog post.
    body_value: HTML/storage body content.
    body_representation: Body format — 'storage', 'wiki', or 'atlas_doc_format'.
    status: 'current' to publish immediately, or 'draft' to save as draft.

Inputs: title (required), space_id (required), body_value (required), status, +1 more.

create_inline_commentCreate Inline CommentA

Create an inline comment anchored to a text selection on a page.

Args:
    page_id: The ID of the page to comment on.
    body_value: HTML/storage-format body of the comment.
    inline_marker_ref: The marker reference identifying the text selection
        (obtained from the page's inline marker data).
    body_representation: Body format — 'storage', 'wiki', or 'atlas_doc_format'.
    resolved: Whether to create the comment in a resolved state.

Inputs: page_id (required), body_value (required), inline_marker_ref (required), resolved, +1 more.

create_pageCreate PageA

Create a new page in a space.

Args:
    space_id: Target space ID.
    title: Page title.
    body_value: Page body content.
    body_representation: Format of body_value — storage (default, XHTML), wiki, atlas_doc_format.
    parent_id: Parent page ID (omit to create at space root).
    status: 'current' (published, default) or 'draft'.

Inputs: title (required), space_id (required), body_value (required), status, +2 more.

create_page_propertyCreate Page PropertyA

Create a content property on a page.

Args:
    page_id: Page ID.
    key: Property key (must be unique on the page).
    value: Property value — any JSON-serializable value.

Inputs: key (required), value (required), page_id (required).

create_spaceCreate SpaceA

Create a new Confluence space.

Args:
    key: Unique space key (e.g. 'ENG'). Must be uppercase letters/numbers.
    name: Human-readable space name.
    description: Optional plain-text description of the space.

Inputs: key (required), name (required), description.

create_space_propertyCreate Space PropertyA

Create a new content property on a space.

Args:
    space_id: The ID of the space.
    key: Property key (must be unique within the space).
    value: Property value (string, number, dict, or list).

Inputs: key (required), value (required), space_id (required).

delete_attachmentDelete AttachmentC
DestructiveIdempotent

Delete an attachment.

Args:
    attachment_id: Attachment ID.

Inputs: attachment_id (required).

delete_blogpostDelete BlogpostA
DestructiveIdempotent

Delete a blog post (moves to trash, or permanently purges).

Args:
    blogpost_id: The ID of the blog post to delete.
    purge: If True, permanently delete instead of moving to trash.

Inputs: blogpost_id (required), purge.

delete_inline_commentDelete Inline CommentC
DestructiveIdempotent

Delete an inline comment.

Args:
    comment_id: Comment ID.

Inputs: comment_id (required).

delete_pageDelete PageA
DestructiveIdempotent

Delete a page (moves to trash by default).

To permanently delete, first call delete_page to trash the page, then call
delete_page again with purge=True.

Args:
    page_id: ID of the page to delete.
    purge: If True, permanently delete a trashed page. The page must already
           be in the trash; calling purge=True on a current page returns 400.

Inputs: page_id (required), purge.

delete_page_propertyDelete Page PropertyB
DestructiveIdempotent

Delete a content property from a page.

Args:
    page_id: Page ID.
    property_id: Property ID.

Inputs: page_id (required), property_id (required).

delete_space_propertyDelete Space PropertyA
DestructiveIdempotent

Delete a content property from a space.

Args:
    space_id: The ID of the space.
    property_id: The ID of the property to delete.

Inputs: space_id (required), property_id (required).

get_attachmentGet AttachmentA
Read-only

Get an attachment by ID.

Args:
    attachment_id: Attachment ID.
    version: Specific version number.

Inputs: attachment_id (required), version.

get_blogpostGet BlogpostA
Read-only

Get a blog post by ID.

Args:
    blogpost_id: The ID of the blog post.
    body_format: Body representation — 'storage', 'atlas_doc_format', or 'view'.
    version: Retrieve a specific historical version number.

Inputs: blogpost_id (required), version, body_format.

get_inline_commentGet Inline CommentA
Read-only

Get an inline comment by ID.

Args:
    comment_id: Comment ID.
    body_format: Body representation.
    version: Specific version number.

Inputs: comment_id (required), version, body_format.

get_pageGet PageA
Read-only

Get a page by ID.

Args:
    page_id: Page ID.
    body_format: Body representation — storage (XHTML), view, atlas_doc_format.
    get_draft: If True, return the current draft instead of published version.
    version: Return a specific historical version number.

Inputs: page_id (required), version, get_draft, body_format.

get_page_ancestorsGet Page AncestorsB
Read-only

Get all ancestor pages (breadcrumb trail) for a page.

Args:
    page_id: Page ID.

Inputs: page_id (required).

get_page_childrenGet Page ChildrenA
Read-only

Get all child pages of a page (recursive, paginated).

Args:
    page_id: Parent page ID.
    cursor: Pagination cursor.
    limit: Max results.
    sort: Sort field.

Inputs: page_id (required), sort, limit, cursor.

get_page_descendantsGet Page DescendantsA
Read-only

Get all descendants of a page.

Args:
    page_id: Page ID.
    limit: Max results.
    cursor: Pagination cursor.

Inputs: page_id (required), limit, cursor.

get_page_direct_childrenGet Page Direct ChildrenA
Read-only

Get the immediate (one-level-deep) children of a page.

Args:
    page_id: Parent page ID.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: page_id (required), limit, cursor.

get_page_operationsGet Page OperationsA
Read-only

Get the permitted operations (read, update, delete, …) for a page.

Args:
    page_id: Page ID.

Inputs: page_id (required).

get_page_propertyGet Page PropertyA
Read-only

Get a specific content property on a page.

Args:
    page_id: Page ID.
    property_id: Property ID.

Inputs: page_id (required), property_id (required).

get_page_versionGet Page VersionA
Read-only

Get details for a specific version of a page.

Args:
    page_id: Page ID.
    version_number: Version number to retrieve.

Inputs: page_id (required), version_number (required).

get_spaceGet SpaceB
Read-only

Get a space by its ID.

Args:
    space_id: Space ID.

Inputs: space_id (required).

get_space_content_labelsGet Space Content LabelsA
Read-only

List all labels used on content within a space.

Args:
    space_id: The ID of the space.
    prefix: Filter by label prefix (e.g. 'global', 'my', 'team').
    cursor: Pagination cursor from a previous response.
    limit: Max results to return (default 25, max 250).

Inputs: space_id (required), limit, cursor, prefix.

get_space_operationsGet Space OperationsB
Read-only

Get the operations (permissions) available to the current user in a space.

Args:
    space_id: The ID of the space.

Inputs: space_id (required).

get_space_permissionsGet Space PermissionsA
Read-only

Get permission assignments for a space.

Args:
    space_id: Space ID.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: space_id (required), limit, cursor.

get_space_propertyGet Space PropertyA
Read-only

Get a single content property of a space by its ID.

Args:
    space_id: The ID of the space.
    property_id: The ID of the property.

Inputs: space_id (required), property_id (required).

get_taskGet TaskA
Read-only

Get a task by ID.

Args:
    task_id: Task ID.
    body_format: Body representation for the task content.

Inputs: task_id (required), body_format.

list_blogpostsList BlogpostsA
Read-only

List blog posts, optionally filtered by space.

Args:
    space_id: Restrict to this space ID.
    status: Filter by status — 'current' or 'draft'.
    sort: Sort order (e.g. 'created-date', '-created-date', 'title').
    cursor: Pagination cursor from a previous response.
    limit: Max results to return (default 25, max 250).

Inputs: sort, limit, cursor, status, +1 more.

list_blogposts_in_spaceList Blog Posts in SpaceB
Read-only

List blog posts in a space.

Args:
    space_id: Space ID.
    sort: Sort field.
    status: Blog post status filter.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: space_id (required), sort, limit, cursor, +1 more.

list_blogposts_with_labelList Blogposts With LabelA
Read-only

List blog posts that carry a specific label.

Args:
    label_id: The ID of the label.
    space_id: Restrict results to this space ID.
    body_format: Body representation — 'storage', 'atlas_doc_format', or 'view'.
    sort: Sort order (e.g. 'created-date', '-created-date', 'title').
    cursor: Pagination cursor from a previous response.
    limit: Max results to return (default 25, max 250).

Inputs: label_id (required), sort, limit, cursor, +2 more.

list_labelsList LabelsA
Read-only

List labels across the entire Confluence instance.

Args:
    label_prefix: Filter by prefix — 'global', 'my', or 'team'.
    body_format: Body representation for associated content.
    cursor: Pagination cursor from a previous response.
    limit: Max results to return (default 25, max 250).

Inputs: limit, cursor, body_format, label_prefix.

list_page_attachmentsList Page AttachmentsB
Read-only

List attachments on a page.

Args:
    page_id: Page ID.
    sort: Sort field.
    cursor: Pagination cursor.
    status: Attachment status filter.
    mediatype: MIME type filter, e.g. 'image/png'.
    filename: Filename filter.
    limit: Max results.

Inputs: page_id (required), sort, limit, cursor, +3 more.

list_page_inline_commentsList Page Inline CommentsC
Read-only

List inline comments on a page.

Args:
    page_id: Page ID.
    body_format: Body representation.
    sort: Sort field.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: page_id (required), sort, limit, cursor, +1 more.

list_page_labelsList Page LabelsA
Read-only

List labels attached to a page.

Args:
    page_id: Page ID.
    prefix: Filter by label prefix (e.g. 'global', 'team').
    sort: Sort field.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: page_id (required), sort, limit, cursor, +1 more.

list_page_propertiesList Page PropertiesB
Read-only

List content properties on a page.

Args:
    page_id: Page ID.
    key: Filter by property key.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: page_id (required), key, limit, cursor.

list_pagesList PagesA
Read-only

List pages, optionally filtered by space, title, status, or parent.

Args:
    space_id: Filter by space ID.
    title: Exact title match.
    status: Page status — current, archived, trashed, deleted.
    ancestor_id: Filter by parent page ID.
    sort: Sort field, e.g. 'title', '-title', 'created-date', '-modified-date'.
    limit: Max results (1–250).
    cursor: Pagination cursor from a previous response.

Inputs: sort, limit, title, cursor, +3 more.

list_pages_in_spaceList Pages in SpaceA
Read-only

List all pages in a space.

Args:
    space_id: Space ID.
    depth: 'all' (default) or 'root' (top-level pages only).
    sort: Sort field.
    status: Page status filter.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: space_id (required), sort, depth, limit, +2 more.

list_pages_with_labelList Pages with LabelB
Read-only

List all pages that carry a specific label.

Args:
    label_id: Label ID.
    space_id: Narrow results to a specific space.
    body_format: Body representation in the returned pages.
    sort: Sort field.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: label_id (required), sort, limit, cursor, +2 more.

list_page_versionsList Page VersionsA
Read-only

List the version history of a page.

Args:
    page_id: Page ID.
    cursor: Pagination cursor.
    limit: Max results.
    sort: Sort field — 'created-date' (oldest first) or '-created-date' (newest first).

Inputs: page_id (required), sort, limit, cursor.

list_space_labelsList Space LabelsC
Read-only

List labels used across a space.

Args:
    space_id: Space ID.
    prefix: Filter by label prefix.
    sort: Sort field.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: space_id (required), sort, limit, cursor, +1 more.

list_space_propertiesList Space PropertiesA
Read-only

List content properties of a space.

Args:
    space_id: The ID of the space.
    key: Filter by property key.
    cursor: Pagination cursor from a previous response.
    limit: Max results to return.

Inputs: space_id (required), key, limit, cursor.

list_spacesList SpacesA
Read-only

List Confluence spaces.

Args:
    ids: Comma-separated space IDs to filter by.
    keys: Comma-separated space keys to filter by.
    type: Space type — 'global' or 'personal'.
    status: Space status — 'current' or 'archived'.
    labels: Comma-separated labels to filter by.
    sort: Sort field, e.g. 'name', '-name', 'key'.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: ids, keys, sort, type, +4 more.

list_tasksList TasksA
Read-only

List tasks in Confluence.

Args:
    status: Task status — 'open' or 'complete'.
    space_id: Filter by space ID.
    page_id: Filter by page ID.
    assigned_to: Filter by assignee account ID.
    created_by: Filter by creator account ID.
    due_at_from: ISO 8601 — tasks due on or after this date.
    due_at_to: ISO 8601 — tasks due on or before this date.
    cursor: Pagination cursor.
    limit: Max results.

Inputs: limit, cursor, status, page_id, +5 more.

restore_pageRestore PageA
Idempotent

Restore a trashed page by setting its status back to 'current'.

Args:
    page_id: ID of the trashed page.
    title: Page title (unchanged or new).
    body_value: Page body content (unchanged or new).
    version_number: The next version number to store — must be current version + 1.
    body_representation: Format of body_value — storage (default), wiki, atlas_doc_format.
    parent_id: Parent page ID (required if the original parent was also deleted).

Inputs: title (required), page_id (required), body_value (required), version_number (required), +2 more.

update_blogpostUpdate BlogpostA
Idempotent

Update an existing blog post.

Args:
    blogpost_id: The ID of the blog post to update.
    title: New title.
    body_value: New body content.
    version_number: The *new* version number (current version + 1).
    body_representation: Body format — 'storage', 'wiki', or 'atlas_doc_format'.
    status: 'current' or 'draft'.

Inputs: title (required), body_value (required), blogpost_id (required), version_number (required), +2 more.

update_inline_commentUpdate Inline CommentA
Idempotent

Update an inline comment (content or resolved state).

Args:
    comment_id: Comment ID.
    body_value: New comment content.
    version_number: The next version number to store — must be current version + 1.
    body_representation: Format of body_value — storage (default), wiki, atlas_doc_format.
    resolved: Set to True to mark the comment thread as resolved, False to reopen.

Inputs: body_value (required), comment_id (required), version_number (required), resolved, +1 more.

update_pageUpdate PageA
Idempotent

Update an existing page (content, title, parent, or owner).

To move a page to a different parent within the same space, pass the new
parent_id. Cross-space moves are not supported by the v2 API.
To transfer ownership, pass the new owner's account ID as owner_id.

Args:
    page_id: ID of the page to update.
    title: New (or unchanged) title.
    body_value: New (or unchanged) body content.
    version_number: The next version number to store — must be current version + 1.
    body_representation: Format of body_value — storage (default), wiki, atlas_doc_format.
    status: 'current' (published) or 'draft'.
    parent_id: New parent page ID to move/reparent the page (same space only).
    owner_id: Atlassian account ID of the new page owner.
    version_message: Optional commit message stored in the version history.

Inputs: title (required), page_id (required), body_value (required), version_number (required), +5 more.

update_page_propertyUpdate Page PropertyB
Idempotent

Update a content property on a page.

Args:
    page_id: Page ID.
    property_id: Property ID.
    key: Property key.
    value: New property value.
    version_number: The next version number to store — must be current version + 1.

Inputs: key (required), value (required), page_id (required), property_id (required), +1 more.

update_page_titleUpdate Page TitleA
Idempotent

Rename a page without changing its body or version metadata.

Args:
    page_id: The ID of the page to rename.
    title: The new title for the page.

Inputs: title (required), page_id (required).

update_space_propertyUpdate Space PropertyA
Idempotent

Update an existing content property on a space.

Args:
    space_id: The ID of the space.
    property_id: The ID of the property to update.
    key: Property key.
    value: New property value.
    version_number: Current version number of the property (incremented automatically).

Inputs: key (required), value (required), space_id (required), property_id (required), +1 more.

update_taskUpdate TaskA
Idempotent

Update a task's status, assignee, or due date.

Args:
    task_id: Task ID.
    status: New status — 'open' or 'complete'.
    assigned_to: Account ID of the new assignee.
    due_at: ISO 8601 due date.

Inputs: status (required), task_id (required), due_at, assigned_to.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 62 tools

    Disambiguation2/5

    Several tools are redundant or have overlapping functionality, such as list_pages vs list_pages_in_space and update_page vs update_page_title, which both can modify titles. The large number of similar list/get/create/update/delete tools across pages, blogposts, comments, and properties creates potential confusion despite detailed descriptions.

    Naming Consistency4/5

    The vast majority of tools follow a clear verb_noun pattern (e.g., list_pages, create_page, delete_inline_comment), and the naming is consistently snake_case. Minor deviations like 'bulk_user_lookup' (which starts with an adjective rather than a verb) prevent a perfect score, but the overall pattern is predictable.

    Tool Count1/5

    With 62 tools, the server is extremely large and exceeds the typical well-scoped MCP server by a wide margin. Even for a complex domain like Confluence, this number of tools would overwhelm agents and make tool selection difficult, fitting the 'extreme mismatch' category.

    Completeness3/5

    The tool set covers many core Confluence operations including pages, blog posts, spaces, comments, properties, labels, and tasks. However, there are glaring gaps given the size: no search functionality, no attachment upload/update, no task creation/deletion, no space update/delete, and no dedicated blog post comment listing.

    Related MCP Connectors

    Related MCP Servers