Confluence MCP for Evoke
A Model Context Protocol server config that lets Claude Code interact with Atlassian Confluence: search pages, read content, create new pages, and update existing ones. Useful for teams that keep architectural docs, runbooks, RFCs, or internal knowledge bases in Confluence.
What you can do once configured
- "Search Confluence for our deployment runbook"
- "Show me the architecture page for the customer portal"
- "Create a new ADR page in the Platform space"
- "Update the on-call rotation page with this week's schedule"
- "Find all pages tagged 'incident-postmortem' from the last quarter"
- "What does our internal docs say about authentication?"
Setup
Step 1: Generate an Atlassian API token
The same token works for Confluence and Jira (both are Atlassian Cloud products).
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click Create API token
- Name:
Claude Code MCP - Copy the token immediately — you can't see it again
Step 2: Find your space key
A "space" in Confluence is the top-level organizational unit (like a department or project area).
- Open the Confluence space in your browser
- The URL contains the space key:
evoke.atlassian.net/wiki/spaces/PLATFORM/... - Note the space key (e.g.,
PLATFORM)
Step 3: Set environment variables
Add to your shell profile:
export CONFLUENCE_HOST="evoke.atlassian.net"
export CONFLUENCE_EMAIL="you@evoke.com"
export CONFLUENCE_API_TOKEN="your-token-from-step-1"
export CONFLUENCE_DEFAULT_SPACE="PLATFORM"Reload your shell.
Step 4: Add the MCP config
Edit ~/.config/claude-code/mcp.json:
{
"mcpServers": {
"confluence": {
"command": "npx",
"args": ["-y", "@evoke/confluence-mcp"],
"env": {
"CONFLUENCE_HOST": "${CONFLUENCE_HOST}",
"CONFLUENCE_EMAIL": "${CONFLUENCE_EMAIL}",
"CONFLUENCE_API_TOKEN": "${CONFLUENCE_API_TOKEN}",
"CONFLUENCE_DEFAULT_SPACE": "${CONFLUENCE_DEFAULT_SPACE}"
}
}
}
}Step 5: Restart Claude Code
Step 6: Test it
Ask: "Search Confluence for [topic you know exists]"
If you get results, you're set.
Available tools
Search and read
confluence_search- CQL-based search across pages, blogs, commentsconfluence_get_page- Fetch a specific page by ID or title+spaceconfluence_get_page_children- Pages under a parent (for navigating hierarchies)confluence_get_page_history- Version history of a pageconfluence_get_page_attachments- List attached files on a page
Write
confluence_create_page- Create a new pageconfluence_update_page- Update content, title, or labelsconfluence_add_label- Tag a pageconfluence_add_comment- Comment on a pageconfluence_move_page- Move a page to a different parent or space
Spaces
confluence_list_spaces- Spaces accessible to youconfluence_get_space- Space details and root pages
Recommended pairings
This MCP pairs naturally with:
- Documentation Skill - generates docs (READMEs, ADRs, runbooks) and can publish directly to Confluence
- Jira MCP - link Confluence pages to Jira tickets and vice versa
- Spec-Driven Builder Skill - PRDs and ADRs generated by the skill can be auto-published to a "Specs" space
Common workflows
"Document this and put it in Confluence"
You: "Document the new customer portal architecture and create a page for it
in the PLATFORM space under 'Architecture'"
Claude Code:
1. Reads relevant code via Filesystem MCP
2. Generates the architecture doc with Documentation Skill
3. Creates the Confluence page via this MCP
4. Returns the URL of the new page"Update our runbook"
You: "We changed our deploy process. Update the deployment runbook page."
Claude Code:
1. Searches Confluence for the deployment runbook
2. Reads current content
3. Shows a proposed diff
4. After confirmation, updates the page
5. Adds a comment summarizing the change"Find what we know about X"
You: "What do our internal docs say about feature flags?"
Claude Code:
1. Searches Confluence for "feature flags"
2. Returns relevant pages with summaries
3. Optionally fetches full content of top resultsConfluence storage format
Confluence pages internally use a custom XML format ("storage format"), not Markdown. The MCP server handles conversion both ways:
- You write Markdown → MCP converts to storage format → Confluence
- Claude Code reads → MCP converts storage to Markdown → Claude
Most pages roundtrip cleanly. Some Confluence-specific features (macros, includes, dynamic content) may not translate perfectly. The MCP preserves them as-is when reading and warns when writing might lose them.
Troubleshooting
"401 Unauthorized"
- Token is wrong or expired
- Email must match the token's owner
- Some Confluence instances require basic auth:
email:tokenbase64-encoded — handled automatically by the MCP
"403 Forbidden"
- Account doesn't have permission for that space or page
- Check space permissions: Confluence → Space settings → Permissions
"Cannot find Confluence tools"
- MCP server didn't start; check Claude Code logs
- Try
npx -y @evoke/confluence-mcpmanually to see startup errors
Created pages don't render correctly
- Markdown → storage format conversion has edge cases
- Tables, code blocks, and images mostly work
- Confluence macros (e.g.,
{toc},{include}) need explicit support — add via raw storage format if needed
Search returns nothing for a page you know exists
- CQL is precise; try simpler keywords first
- Confluence search has a delay for newly created/edited pages (~30s reindex)
- Check space permissions — search respects them
Security notes
- API tokens are equivalent to your Atlassian password for accessing Confluence
- Never commit tokens
- Rotate every 90 days
- For team/CI use, create a service account, not a personal token
- Be cautious about asking Claude Code to "publish anything" to Confluence — review before confirming
- Pages created via the MCP show your account as the author (your audit trail)
Customization
Multiple spaces
Don't hardcode CONFLUENCE_DEFAULT_SPACE if you work across many spaces. Specify the space per command:
"Create a page in the ENGINEERING space..."
"Search the PRODUCT space for..."Page templates
For consistent doc structure, create templates in Confluence first, then reference them:
"Create a new ADR page in PLATFORM using the ADR template"The MCP fetches the template's body and uses it as the starting structure.
Workflow with publishing approval
For teams where docs need review before publishing:
- Use the Documentation Skill to generate the page locally
- Paste it into a draft Confluence page (manual)
- After internal review, use the MCP to update with the final version
What this enables
For teams that already use Confluence as their source of truth:
- Documentation lives in one place (no parallel docs in repos and wikis)
- Searching across institutional knowledge becomes a chat command
- Generated docs go to the right space and parent automatically
- Updates can be reviewed via Confluence's built-in version history
When NOT to use this
- If your team is moving away from Confluence to Notion / Linear / GitHub wikis, don't deepen the dependency
- If most of your docs are in code repos (READMEs, /docs folders), the Filesystem MCP is more valuable
- If your Confluence is barely maintained, this MCP can't fix that — invest in updating the existing pages first