Ctk
FreeNot checkedConfluence CLI & MCP Server — dual-mode Go binary for Confluence Cloud with 7 tools, folder CRUD, page diff, and write gating.
About
Confluence CLI & MCP Server — dual-mode Go binary for Confluence Cloud with 7 tools, folder CRUD, page diff, and write gating.
README
CI Go Report Card Documentation License
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 | CTK_ENABLE_WRITES env var |
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 defaults - Token-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/ctk
Pre-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 search
MCP Server
Stdio Transport (Claude Desktop, Cursor, OpenCode, etc.)
{
"mcpServers": {
"confluence": {
"command": "/path/to/ctk",
"args": ["mcp"],
"env": {
"CONFLUENCE_DOMAIN": "your-domain",
"CONFLUENCE_EMAIL": "[email protected]",
"CONFLUENCE_API_TOKEN": "your-api-token",
"CTK_ENABLE_WRITES": "true"
}
}
}
}
Streamable HTTP Transport
ctk mcp --port 8080
Environment Variables
| Variable | Description | Required |
|---|---|---|
CONFLUENCE_DOMAIN |
Atlassian domain (e.g., acme for acme.atlassian.net) |
Yes |
CONFLUENCE_EMAIL |
Email for the API token | Yes |
CONFLUENCE_API_TOKEN |
Atlassian API token | Yes |
CONFLUENCE_TOKEN_TYPE |
classic or scoped (auto-detected if omitted) |
No |
CTK_ENABLE_WRITES |
Set to true to enable mutation tools |
No |
CTK_DISABLED_TOOLS |
Comma-separated tool names to hide | No |
MCP Tools (8)
| Tool | Actions |
|---|---|
manage_spaces |
list, get, get_by_key, create |
manage_pages |
get, get_by_title, list, get_children, get_ancestors, list_versions, diff, create, update, delete, move |
manage_search |
cql, quick |
manage_labels |
list, add, remove |
manage_folders |
list, get, get_children, create, update, delete |
manage_comments |
list_footer, list_inline, get_replies, add_footer, reply |
manage_attachments |
list, download, upload, delete |
manage_users |
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
License
Installing Ctk
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/zach-snell/ctkFAQ
Is Ctk MCP free?
Yes, Ctk MCP is free — one-click install via Unyly at no cost.
Does Ctk need an API key?
No, Ctk runs without API keys or environment variables.
Is Ctk hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Ctk in Claude Desktop, Claude Code or Cursor?
Open Ctk on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Ctk with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
