Confluence MCP Documentation
Introduction
Confluence MCP (Model Context Protocol) provides a standardized interface for AI assistants to interact with Confluence content. This integration enables Answer Agent to seamlessly search, create, update, and manage Confluence pages, comments, and attachments.
Setting Up Credentials
To use the Confluence MCP, you'll need to set up the following credentials:
Required Credentials
Credential | Description |
---|---|
CONFLUENCE_API_TOKEN | Your Atlassian API token |
CONFLUENCE_BASE_URL | Your Confluence instance URL (e.g., https://your-domain.atlassian.net/wiki) |
CONFLUENCE_USER_EMAIL | The email associated with your Atlassian account |
How to Get Your API Token
- Log in to your Atlassian account at https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Enter a label for your token (e.g., "Answer Agent Integration")
- Click "Create"
- Copy the token (you won't be able to see it again)
Available Tools
get_page
Retrieves a specific Confluence page by its ID.
Schema:
{
"pageId": {
"type": "string",
"description": "ID of the Confluence page to retrieve",
"required": true
},
"format": {
"type": "string",
"enum": ["text", "markdown"],
"description": "Format to return the content in (default: text)",
"required": false
},
"includeMarkup": {
"type": "boolean",
"description": "Whether to include the original Confluence Storage Format (XHTML) markup in the response (default: false). Useful when you want to update the page later in order to preserve formatting.",
"required": false
}
}
search_pages
Searches for Confluence pages using CQL (Confluence Query Language).
Schema:
{
"query": {
"type": "string",
"description": "CQL search query",
"required": true
},
"limit": {
"type": "number",
"description": "Maximum number of results to return (default: 10)",
"required": false
},
"format": {
"type": "string",
"enum": ["text", "markdown"],
"description": "Format to return the content in (default: text)",
"required": false
},
"includeMarkup": {
"type": "boolean",
"description": "Whether to include the original Confluence Storage Format (XHTML) markup in the response (default: false)",
"required": false
}
}
get_spaces
Lists all available Confluence spaces.
Schema:
{
"limit": {
"type": "number",
"description": "Maximum number of spaces to return (default: 50)",
"required": false
}
}
create_page
Creates a new Confluence page.
Schema:
{
"spaceKey": {
"type": "string",
"description": "Key of the space where the page will be created",
"required": true
},
"title": {
"type": "string",
"description": "Title of the new page",
"required": true
},
"content": {
"type": "string",
"description": "Content of the page in Confluence Storage Format (XHTML)",
"required": true
},
"parentId": {
"type": "string",
"description": "Optional ID of the parent page",
"required": false
}
}
update_page
Updates an existing Confluence page.
Schema:
{
"pageId": {
"type": "string",
"description": "ID of the page to update",
"required": true
},
"title": {
"type": "string",
"description": "New title of the page",
"required": true
},
"content": {
"type": "string",
"description": "New content in Confluence Storage Format (XHTML). CRITICAL: Content MUST be valid XHTML. Providing plain text or Markdown will result in the markup being displayed literally, not rendered as rich text.",
"required": true
},
"version": {
"type": "number",
"description": "Current version number of the page",
"required": true
}
}
get_comments
Retrieves comments for a specific Confluence page.
Schema:
{
"pageId": {
"type": "string",
"description": "ID of the page to retrieve comments for",
"required": true
},
"format": {
"type": "string",
"enum": ["text", "markdown"],
"description": "Format to return comment content in (default: text)",
"required": false
},
"limit": {
"type": "number",
"description": "Maximum number of comments to return (default: 25)",
"required": false
}
}
add_comment
Adds a comment to a Confluence page.
Schema:
{
"pageId": {
"type": "string",
"description": "ID of the page to add the comment to",
"required": true
},
"content": {
"type": "string",
"description": "Comment content in Confluence Storage Format (XHTML)",
"required": true
},
"parentId": {
"type": "string",
"description": "Optional ID of the parent comment for threading",
"required": false
}
}
get_attachments
Retrieves attachments for a specific Confluence page.
Schema:
{
"pageId": {
"type": "string",
"description": "ID of the page to retrieve attachments for",
"required": true
},
"limit": {
"type": "number",
"description": "Maximum number of attachments to return (default: 25)",
"required": false
}
}
add_attachment
Adds an attachment to a Confluence page.
Schema:
{
"pageId": {
"type": "string",
"description": "ID of the page to attach the file to",
"required": true
},
"filename": {
"type": "string",
"description": "Desired filename for the attachment",
"required": true
},
"fileContentBase64": {
"type": "string",
"description": "Base64 encoded content of the file",
"required": true
},
"comment": {
"type": "string",
"description": "Optional comment for the attachment version",
"required": false
}
}
CQL (Confluence Query Language) Reference
When using the search_pages
tool, you can leverage CQL to create powerful queries:
# Basic syntax
field operator value
# Examples
space = "Engineering"
title ~ "Meeting Notes"
label = documentation
created >= 2023-01-01
Common CQL fields:
space
: Space keytitle
: Page titlelabel
: Labels attached to contenttext
: Full-text search across all contentcreated
/lastmodified
: Date fieldscreator
/contributor
: People who created or edited content
Use Cases
For Developers
-
Documentation Management
- Search for technical documentation across multiple spaces
- Update API documentation programmatically when new endpoints are added
- Pull code snippets from Confluence to include in developer resources
-
Project Tracking
- Create sprint planning pages automatically
- Update project status pages with real-time information
- Attach build reports and metrics to project pages
-
Team Collaboration
- Add comments to design documents during code reviews
- Create and update architecture decision records
- Maintain a knowledge base of technical solutions
For Publishers
-
Content Creation
- Create new articles and knowledge base entries
- Update existing content with fresh information
- Organize content hierarchically across spaces
-
Content Discovery
- Search for existing content to avoid duplication
- Find related articles to link between pages
- Identify gaps in documentation
-
Content Management
- Track comments and discussions on published articles
- Manage attachments and supplementary materials
- Monitor content versions and update histories
-
Workflow Integration
- Create templates for consistent content creation
- Set up automated publishing processes
- Track content review cycles
Best Practices
-
Working with XHTML Content
- Always use the Confluence Storage Format (XHTML) when creating or updating pages
- Use
includeMarkup: true
when retrieving pages you plan to update - Test complex formatting in Confluence first before programmatic creation
-
Optimizing Searches
- Use specific CQL queries to reduce result sets
- Include space restrictions where possible (
space = "KEY"
) - Use label searches for categorized content
-
Managing Page Versions
- Always include the correct current version when updating pages
- Retrieve the current page before updating to ensure version accuracy
- Handle version conflicts gracefully
-
Handling Attachments
- Keep attachment file sizes reasonable
- Use descriptive filenames for better searchability
- Add comments to attachments to describe their purpose