Confluence Data Center MCP
Typed Python MCP server for Confluence Data Center raw storage operations.
Requirements
- Python 3.11+
uv- Confluence Data Center REST API access
- Either a Confluence Personal Access Token or username/password auth
Setup
uv sync
cp .env.example .env
Set the values in .env, then run:
set -a
source .env
set +a
uv run confluence-dc-mcp
Run with uvx
After the package is published, it can be run without cloning the repository:
CONFLUENCE_BASE_URL="https://confluence.example.com" \
CONFLUENCE_PAT="replace-with-token" \
uvx confluence-dc-mcp
Or with username/password authentication:
CONFLUENCE_BASE_URL="https://confluence.example.com" \
CONFLUENCE_USERNAME="alice" \
CONFLUENCE_PASSWORD="replace-with-password" \
uvx confluence-dc-mcp
For an MCP client using uvx with a Personal Access Token:
{
"mcpServers": {
"confluence-data-center": {
"command": "uvx",
"args": ["confluence-dc-mcp"],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"CONFLUENCE_PAT": "replace-with-token"
}
}
}
}
For an MCP client using uvx with username/password authentication:
{
"mcpServers": {
"confluence-data-center": {
"command": "uvx",
"args": ["confluence-dc-mcp"],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"CONFLUENCE_USERNAME": "alice",
"CONFLUENCE_PASSWORD": "replace-with-password"
}
}
}
}
For MCP clients that pass environment variables directly, use:
{
"mcpServers": {
"confluence-data-center": {
"command": "uv",
"args": [
"--directory",
"/Users/mikhail/Projects/mcp-atlassian-confluence-raw-storage",
"run",
"confluence-dc-mcp"
],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"CONFLUENCE_PAT": "replace-with-token"
}
}
}
}
Environment
CONFLUENCE_BASE_URL is required and must be the root Confluence URL.
Use one authentication mode:
CONFLUENCE_PATCONFLUENCE_USERNAMEandCONFLUENCE_PASSWORD
Optional settings:
CONFLUENCE_VERIFY_SSL, defaults totrueCONFLUENCE_TIMEOUT_SECONDS, defaults to30
Tools
health_check: validates server configuration.search_pages: searches content with CQL and returns page summaries.get_page_storage: returns raw storage-format XHTML for a content ID.get_page_storage_by_title: returns raw storage-format XHTML for a unique page title in a space.get_page_children: returns direct child page summaries for a content ID.get_page_history: returns page version history entries for a content ID.create_page: creates a page from raw storage-format XHTML.move_page: moves a page before, after, or under a target page.get_comments: returns page comments with storage-format bodies.add_comment: adds a storage-format comment to a page.reply_to_comment: replies to an existing comment with storage-format XHTML.get_labels: returns labels for a content ID.add_label: adds a label to a content ID.search_user: searches Confluence users through CQL-backed site search.get_attachment_list: returns attachment metadata for a page content ID.download_attachment: downloads an attachment as an embedded MCP resource for LLM analysis.upload_attachment: uploads a local file as a page attachment.upload_attachments: uploads multiple local files as page attachments.download_attachment_to_file: downloads an attachment to a local file path.get_page_images: downloads image attachments from a page as embedded MCP resources.update_page_storage: replaces raw storage-format XHTML and increments the Confluence version.
Development
uv run ruff check .
uv run mypy
uv run pytest
uv build
CI and Release
GitHub Actions run linting, strict type checking, tests, and package build on push and pull requests.
Publishing runs when a GitHub Release is published. The workflow uses PyPI Trusted Publishing, so configure a PyPI trusted publisher for this repository with:
- workflow:
publish.yml - environment:
pypi - package name:
confluence-dc-mcp
Metadata
Release files for confluence-dc-mcp 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| confluence_dc_mcp-1.0.0.tar.gz | 75.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| confluence_dc_mcp-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 88.4 kB
Release files / confluence_dc_mcp-1.0.0.tar.gz
| Download URL | confluence_dc_mcp-1.0.0.tar.gz |
|---|---|
| Size | 75.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea1dafaedde51998e1b971428b03cb6ff892a9c76eb1fc532cc225ca63c4d0e4
|
|
BLAKE2b-256 checksum How to use checksums |
ebe624191492df2640247584a30a67684792fcb54544daf72b2d26986a0a83d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.
Transparency logRelease files / confluence_dc_mcp-1.0.0-py3-none-any.whl
| Download URL | confluence_dc_mcp-1.0.0-py3-none-any.whl |
|---|---|
| Size | 13.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c94659ace29fd6c6739081e79f95aac3e2f589dae0db4bda25763a5f1488629
|
|
BLAKE2b-256 checksum How to use checksums |
2dd5a402db06d7fe92a9e1d9546b950dafa69b81d99b154f925d66fae8375d13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.
Transparency log