Playbook

Confluence MCP for Evoke

Pre-configured Atlassian Confluence MCP server for Claude Code — search, read, and write internal documentation pages from chat.

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).

  1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
  2. Click Create API token
  3. Name: Claude Code MCP
  4. 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).

  1. Open the Confluence space in your browser
  2. The URL contains the space key: evoke.atlassian.net/wiki/spaces/PLATFORM/...
  3. 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, comments
  • confluence_get_page - Fetch a specific page by ID or title+space
  • confluence_get_page_children - Pages under a parent (for navigating hierarchies)
  • confluence_get_page_history - Version history of a page
  • confluence_get_page_attachments - List attached files on a page

Write

  • confluence_create_page - Create a new page
  • confluence_update_page - Update content, title, or labels
  • confluence_add_label - Tag a page
  • confluence_add_comment - Comment on a page
  • confluence_move_page - Move a page to a different parent or space

Spaces

  • confluence_list_spaces - Spaces accessible to you
  • confluence_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 results

Confluence 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:token base64-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-mcp manually 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:

  1. Use the Documentation Skill to generate the page locally
  2. Paste it into a draft Confluence page (manual)
  3. 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

Related assets

Command Palette

Search for a command to run...