Provides programmatic access to Atlassian Cloud services for content management, using both classic and scoped API tokens for secure interaction with the Confluence platform.
Offers a comprehensive suite of tools for Confluence, including full CRUD operations for spaces, pages, and folders, CQL-based search, version diffing, and management of labels, comments, and attachments.
ctk — Confluence Toolkit
The most comprehensive dedicated Confluence MCP server in the open-source ecosystem. A dual-mode Go binary that works as both a rich CLI tool and an MCP server for AI agents.
8 MCP tools · Full CLI · Write gating · Single binary · Zero dependencies
Why ctk?
ctk | mcp-atlassian (Python) | |
Language | Go (single ~15MB binary) | Python (pip install + deps) |
Confluence tools | 8 dedicated tools | ~30 mixed Jira+Confluence |
Startup | ~50ms | ~2s |
Folder support | Full CRUD | None |
Page diff | LCS-based unified diff | None |
Space create | Yes (V1 stable API) | None |
Write gating |
| None |
Auth | Classic + scoped tokens | Classic only |
Features
Dual Mode — CLI for humans, MCP server for AI agents, same binary
V2 API First — Modern Confluence V2 REST API with cursor-based pagination, V1 fallback for CQL search and space create
Folder Support — Full CRUD for Confluence folders — the only dedicated Confluence MCP with folder operations
Page Diff — LCS-based unified diff between any two page versions
Write Gating — Mutation tools only registered when
CTK_ENABLE_WRITES=true, safe read-only defaultsToken-Efficient — Consolidated action-based tools minimize schema overhead. XHTML↔Markdown conversion. ResponseFlattener strips metadata bloat
Markdown Interface — Agents send/receive markdown, ctk converts to/from Confluence XHTML storage format internally
Installation
# From source
git clone https://github.com/zach-snell/ctk.git && cd ctk
./install.sh # builds and copies to ~/.local/bin
# Or build manually
go build -o ctk ./cmd/ctkPre-built binaries available on the Releases page.
Quick Start
# Authenticate
ctk auth
# List spaces
ctk spaces list
# Get a page
ctk pages get 12345
# Search with CQL
ctk search --cql "type = page AND space = DEV AND title ~ 'architecture'"
# Create a page (writes enabled)
ctk pages create --space-id 12345 --title "My Page" --body "# Hello World"CLI Commands
ctk auth Authenticate with Confluence Cloud
ctk spaces List, get, create spaces
ctk pages Page CRUD, versions, diff, move
ctk folders Folder CRUD, children
ctk search CQL and quick text searchMCP Server
Stdio Transport (Claude Desktop, Cursor, OpenCode, etc.)
{
"mcpServers": {
"confluence": {
"command": "/path/to/ctk",
"args": ["mcp"],
"env": {
"CONFLUENCE_DOMAIN": "your-domain",
"CONFLUENCE_EMAIL": "you@example.com",
"CONFLUENCE_API_TOKEN": "your-api-token",
"CTK_ENABLE_WRITES": "true"
}
}
}
}Streamable HTTP Transport
ctk mcp --port 8080Environment Variables
Variable | Description | Required |
| Atlassian domain (e.g., | Yes |
| Email for the API token | Yes |
| Atlassian API token | Yes |
|
| No |
| Set to | No |
| Comma-separated tool names to hide | No |
MCP Tools (8)
Tool | Actions |
| list, get, get_by_key, create |
| get, get_by_title, list, get_children, get_ancestors, list_versions, diff, create, update, delete, move |
| cql, quick |
| list, add, remove |
| list, get, get_children, create, update, delete |
| list_footer, list_inline, get_replies, add_footer, reply |
| list, download, upload, delete |
| get_current, search |
Security
Three-layer safety model:
Token scopes — Atlassian scopes control which APIs the token can call (403 if missing)
Write gating — Mutation tools only registered when
CTK_ENABLE_WRITES=true(read-only by default)Tool denial — Explicitly hide tools:
CTK_DISABLED_TOOLS="manage_folders,manage_labels"
Development
go test -race ./... # Run tests
golangci-lint run ./... # Lint
go build -o ctk ./cmd/ctk # Build