awesome-confluence-mcp
Enables secure integration with Atlassian Cloud services to access documentation through API token authentication.
Provides tools to browse spaces, search for pages by title or content, and fetch Confluence documentation converted into token-efficient Markdown.
๐ Awesome Confluence MCP Server
The most token-efficient way for AI agents to browse and analyze Confluence documentation.
Topics: mcp-server python confluence-api ai-agents token-optimization markdown fastmcp
๐ Token Savings at a Glance
Typical Confluence Page (2,000 words):
Format | Tokens (Avg) | Cost (GPT-4o) | Savings |
Raw HTML | 2,500 | $0.075 | - |
Your Markdown | 600 | $0.018 | 76% |
Save 60-80% on LLM tokens by converting Confluence pages to clean Markdown format.
A professional Model Context Protocol (MCP) server that provides token-efficient Confluence integration. Fetch, search, and convert Confluence pages to Markdown, dramatically reducing token consumption while preserving formatting and structure.
Related MCP server: mcp-confluence
๐ก Why Markdown Matters
The Token-Saving Advantage:
When working with LLMs, every token counts. Confluence pages in raw HTML format consume 3-5x more tokens than the same content in Markdown:
HTML Format: ~2,500 tokens for a typical page
Markdown Format: ~500-800 tokens for the same page
Savings: 60-80% reduction in token usage
This means:
โ Lower API costs - Fewer tokens = less money spent
โ Faster responses - Less data to process
โ Better context - Fit more pages in your context window
โ Cleaner output - Markdown is easier for LLMs to understand and work with
โจ Features
๐ List Spaces - Browse all accessible Confluence spaces
๐ Search Pages - Find pages by title or content with optional space filtering
๐ Fetch as Markdown - Convert any Confluence page to clean, token-efficient Markdown
๐ Secure Authentication - Uses Atlassian API tokens (never store passwords)
โก Fast & Reliable - Built with FastMCP for optimal performance
๐ก๏ธ Error Handling - Comprehensive validation and helpful error messages
๐ Quick Start
1. Installation
# Clone the repository
git clone https://github.com/mazhar480/awesome-confluence-mcp.git
cd awesome-confluence-mcp
# Install with pip
pip install -e .2. Get Your Atlassian API Token
Go to Atlassian API Tokens
Click Create API token
Give it a name (e.g., "MCP Server")
Copy the token (you won't see it again!)
3. Configure Environment
# Copy the example file
cp .env.example .env
# Edit .env with your credentials
CONFLUENCE_URL=https://your-domain.atlassian.net
CONFLUENCE_EMAIL=your.email@example.com
CONFLUENCE_API_TOKEN=your_api_token_here4. Configure Your MCP Client
For Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"confluence": {
"command": "python",
"args": ["-m", "server"],
"cwd": "/path/to/awesome-confluence-mcp",
"env": {
"CONFLUENCE_URL": "https://your-domain.atlassian.net",
"CONFLUENCE_EMAIL": "your.email@example.com",
"CONFLUENCE_API_TOKEN": "your_api_token_here"
}
}
}
}For Cline (VS Code Extension)
Add to your MCP settings:
{
"confluence": {
"command": "python",
"args": ["-m", "server"],
"cwd": "/path/to/awesome-confluence-mcp"
}
}Make sure your .env file is configured in the project directory.
๐ง Available Tools
list_spaces
List all Confluence spaces you have access to.
Parameters:
limit(optional): Maximum number of spaces to return (1-100, default: 25)
Example:
List my Confluence spacesReturns:
{
"total": 3,
"spaces": [
{
"key": "DOCS",
"name": "Documentation",
"type": "global",
"id": "123456",
"url": "https://your-domain.atlassian.net/wiki/spaces/DOCS"
}
]
}search_pages
Search for pages by title or content.
Parameters:
query(required): Search term to match against titles and contentspace_key(optional): Limit search to a specific spacelimit(optional): Maximum results to return (1-50, default: 10)
Example:
Search for pages about "API documentation" in the DOCS spaceReturns:
{
"total": 5,
"query": "API documentation",
"space_key": "DOCS",
"pages": [
{
"id": "789012",
"title": "REST API Documentation",
"type": "page",
"space": {
"key": "DOCS",
"name": "Documentation"
},
"version": 12,
"url": "https://your-domain.atlassian.net/wiki/spaces/DOCS/pages/789012"
}
]
}fetch_page_markdown
Fetch a page and convert it to Markdown format.
Parameters:
page_id(required): The Confluence page ID
Example:
Fetch page 789012 as markdownReturns:
# REST API Documentation
**Space:** Documentation (DOCS)
**Version:** 12
**URL:** https://your-domain.atlassian.net/wiki/spaces/DOCS/pages/789012
**Labels:** api, rest, documentation
---
## Overview
This page documents our REST API endpoints...
### Authentication
All requests require an API token...๐ฏ Usage Examples
Example 1: Find and Read Documentation
1. "List my Confluence spaces"
2. "Search for 'onboarding' pages in the HR space"
3. "Fetch page 123456 as markdown"Example 2: Research a Topic
"Search for pages about 'authentication' and fetch the top 3 results as markdown"The MCP server will:
Search for relevant pages
Return the search results
Fetch each page and convert to Markdown
Provide clean, token-efficient content for analysis
๐ Security Best Practices
โ Never commit your
.envfile to version controlโ Use API tokens instead of passwords
โ Rotate tokens regularly
โ Limit token scope to only what's needed
โ Store tokens securely in environment variables
๐ ๏ธ Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
# Lint code
ruff check .๐งช Testing with MCP Inspector
Want to test the tools without writing a full client? FastMCP includes a built-in MCP Inspector:
npx @modelcontextprotocol/inspector python server.pyThis launches a web interface where you can:
โ Test all three tools interactively
โ See real-time request/response data
โ Validate your Confluence credentials
โ Experiment with different parameters
Perfect for: Quick testing, debugging, and demonstrating the server to others.
๐ฐ Sponsorship & Support
If this MCP server saves you time and tokens, consider sponsoring its development:
Individual Developers: GitHub Sponsors
Corporate Teams: I support GitHub Invoiced Billing for bulk sponsorships. Contact me for custom MCP development and enterprise support.
Why sponsor?
Priority bug fixes and feature requests
Custom tool development for your workflow
Direct support and consultation
Help maintain this free, open-source tool
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
Built with FastMCP
Powered by Atlassian Confluence API
Markdown conversion by markdownify
๐ Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Made with โค๏ธ for the MCP community
Available Tools
3 toolsfetch_page_markdownA
Fetch a Confluence page and convert it to Markdown format.
This tool retrieves page content and converts it from HTML to Markdown, reducing token usage by 60-80% compared to raw HTML while preserving formatting, links, and structure.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | The Confluence page ID to fetch |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions token reduction but omits critical details: it does not state whether the operation is read-only (only fetch), whether authentication is required, rate limits, or what happens if the page does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences, front-loaded with the primary action. Every sentence provides meaningful context without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists but is not shown, so return values are expected to be documented there. The description does not mention error handling, prerequisites (e.g., page must exist), or limitations (e.g., only works on Confluence pages). Lacks completeness for a minimal tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter page_id. The description adds no additional semantic information beyond what the schema already states ('The Confluence page ID to fetch'). Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch a Confluence page and convert it to Markdown format', specifying the verb and resource. It distinguishes from siblings by implying that list_spaces and search_pages serve different purposes (listing spaces, searching pages).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching page content but provides no explicit guidance on when to use this tool versus alternatives like list_spaces or search_pages. No exclusions or context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spacesB
List all Confluence spaces accessible to the authenticated user.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of spaces to return (default: 25, max: 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides no behavioral details beyond a basic listing. It does not mention pagination, rate limits, permissions, or that the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to explain return values. However, it omits any mention of pagination behavior implied by the 'limit' parameter, which is relevant for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'limit', which already has a description. The tool description adds no extra meaning to the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and resource 'Confluence spaces' with scope 'accessible to the authenticated user'. It clearly distinguishes from siblings which operate on pages rather than spaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the siblings 'fetch_page_markdown' or 'search_pages'. The description does not mention alternative tools or contexts where one would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pagesB
Search for Confluence pages by title or content.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string to match against page titles and content | |
| space_key | No | Optional space key to limit search to a specific space | |
| limit | No | Maximum number of results to return (default: 10, max: 50) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose behavioral traits such as pagination, rate limits, or error handling. Minimal beyond basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and 3 parameters, description is adequate but lacks details on result format, sorting, or edge cases. Not severely lacking but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all parameters (100% coverage). Description adds no new meaning beyond schema; 'title or content' is already in query parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Search' and resource 'Confluence pages' with criteria 'by title or content'. Distinct from sibling tools fetch_page_markdown and list_spaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0-on-publish- Changed
fetch_page_markdown1 field changed- added
Input schema / properties / page_id / descriptionAdded value: +"The Confluence page ID to fetch"
- Changed
list_spaces1 field changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of spaces to return (default: 25, max: 100)"
- Changed
search_pages3 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of results to return (default: 10, max: 50)" - added
Input schema / properties / query / descriptionAdded value: +"Search query string to match against page titles and content" - added
Input schema / properties / space_key / descriptionAdded value: +"Optional space key to limit search to a specific space"
3 tool updates
v1.0.0- First observed
fetch_page_markdown - First observed
list_spaces - First observed
search_pages
TDQS
Scored across 3 tools
Each tool serves a distinct purpose: fetching a specific page, listing spaces, and searching pages. No overlap exists.
All tools use consistent snake_case naming with clear verb-noun patterns: fetch_page_markdown, list_spaces, search_pages.
Only 3 tools for a Confluence API server is thin. Common operations like creating, updating, or deleting pages are missing.
The server covers only read operations (fetch, list, search). No create, update, or delete tools, leaving significant gaps for agent workflows.
Maintenance
Related MCP Connectors
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
Document-to-Markdown MCP server โ convert PDF, Office and HTML into LLM-ready Markdown.
Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Atlassian Confluence integration with Claude Code, enabling search, read, create, update pages, manage labels, and list spaces via natural language.96 npmISC
- AlicenseAqualityCmaintenanceMCP 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.1537 npmISC
- AlicenseNot gradedqualityBmaintenanceA Model Context Protocol (MCP) server for integrating Confluence with OpenCode. Seamlessly search, read, create, and update Confluence pages directly from your AI coding agent.5 npmMIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server that connects AI agents to Confluence Cloud. Agents can search, read, create, and update Confluence content โ pages, comments, links, images, and labels.MIT