Skip to content

Connect Confluence to Claude: Search and Update Team Documentation

Learn how to connect Confluence to Claude using Truto's MCP Server. A technical guide to configuring tools, handling Atlassian API quirks, and automating documentation workflows.

Uday Gajavalli Uday Gajavalli · · 7 min read
Connect Confluence to Claude: Search and Update Team Documentation

Connecting an LLM directly to a team's knowledge base transforms it from a static text generator into an active participant in your engineering workflows. By connecting Confluence to Claude via the Model Context Protocol (MCP), you enable the LLM to search for architectural decision records, summarize complex product requirements, and actively update documentation based on code changes.

This article is part of a set of technical guides for Atlassian integrations. If your team uses ChatGPT, check out our guide on connecting Confluence to ChatGPT. If you are building headless logic with LangChain or AutoGen, see our piece on connecting Confluence to AI Agents.

Below, we will cover how to configure a Truto MCP server for Confluence, connect it to Claude, and execute specific documentation workflows.

The Engineering Reality of the Confluence API

Treating the Confluence API as a standard REST interface often leads to broken integration logic. Atlassian's data model contains several domain-specific quirks that require careful handling when exposing endpoints to an LLM.

First, Confluence maintains multiple representations of a page's body. The API can return content in storage format (an Atlassian-specific XML/HTML hybrid), view format, or export_view. When updating a page via the API, you must typically supply the storage format. Instructing the LLM to preserve macro tags and structural elements is critical to avoid destroying page formatting during an update.

Second, pagination and search are heavily tied to Confluence Query Language (CQL). While CQL is powerful, certain user-specific fields are deprecated in modern Confluence Cloud environments. Relying on outdated CQL structures will return cryptic errors. AI agents need strict guidance on constructing valid CQL queries to navigate spaces effectively.

Third, there is the reality of rate limits. Confluence strictly throttles API consumption. Truto does not retry, throttle, or apply backoff on rate limit errors. When the Confluence upstream API returns an HTTP 429, Truto passes that error directly to the caller. We normalize the upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. Your MCP client or agent framework is entirely responsible for detecting the 429 and applying its own retry/backoff mechanism.

Creating the Confluence MCP Server

To bridge Confluence and Claude, we first need to generate an MCP server URL. Truto dynamically generates MCP tools from the integration's documented API schema. If you are exploring how these connections work under the hood, you can reference our hands-on guide to building MCP servers.

You can create this server in two ways.

1. Via the Truto UI

For ad-hoc usage or quick testing, the UI is the fastest path:

  1. Open your Truto dashboard and navigate to the integrated account page for your connected Confluence instance.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Name the server (e.g., "Engineering Confluence Docs").
  5. Select your desired configuration (e.g., restricting methods to read or write).
  6. Copy the generated MCP server URL. It will look like https://api.truto.one/mcp/a1b2c3d4...

2. Via the API

For production workflows or automated provisioning, hit the Truto REST API. The endpoint validates that the integration is AI-ready, hashes the token securely, and returns the URL.

curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
  -H "Authorization: Bearer YOUR_TRUTO_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Claude Confluence Integration",
    "config": {
      "methods": ["read", "write"]
    }
  }'

The response contains the exact URL Claude needs to initiate the JSON-RPC 2.0 handshake.

{
  "id": "mcp_abc123",
  "name": "Claude Confluence Integration",
  "config": { "methods": ["read", "write"] },
  "expires_at": null,
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}

Connecting the MCP Server to Claude

Claude supports custom MCP connectors natively. You can add the Confluence server using the application UI or by manually editing the configuration file.

Option 1: Claude UI Connector Flow

If you are using the Claude Desktop app or Web interface on a supported plan (Team/Enterprise/Pro):

  1. Go to Settings -> Connectors -> Add custom connector.
  2. Paste the Truto MCP URL (https://api.truto.one/mcp/...).
  3. Click Add.

Claude will immediately call the initialize and tools/list endpoints to discover the Confluence operations.

Option 2: Manual Config File Approach

If you prefer managing configurations as code for the Claude Desktop application, you can edit the claude_desktop_config.json file directly.

Location:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the Truto endpoint under your mcpServers block. Because Truto MCP servers operate over standard HTTPS POST rather than standard input/output streams, you configure it as an SSE/HTTP connection if your local Claude client wrapper supports remote servers, or run a tiny local proxy script that forwards stdio to the Truto URL.

Note: Native Claude Desktop currently prioritizes local command execution (stdio). To point it at a remote Truto URL without a local script, you typically rely on the UI Connector flow mentioned above, which natively handles remote HTTP MCP endpoints.

Tool Inventory

Truto automatically maps Confluence resources to standardized MCP tools. Below is the inventory available for the Confluence integration.

Hero Tools

These are the high-value endpoints used in 90% of documentation workflows.

Searches Confluence using CQL. This is the primary discovery tool for Claude to locate relevant documentation across spaces.

Example Prompt: "Search Confluence for any architectural decision records (ADRs) related to our new Kafka migration."

list_all_confluence_pages

Retrieves a filtered list of pages by space ID, status, or title. Useful for auditing the contents of a specific team's space.

Example Prompt: "List all pages in the Engineering space (spaceId: 1001) that have a status of 'draft'."

get_single_confluence_page_by_id

Fetches the complete contents of a specific page, including its body content, version details, and parent IDs. Claude uses this to read the full context of a document.

Example Prompt: "Get the contents of the page with ID 5543210 and summarize the deployment steps."

update_a_confluence_page_by_id

Updates an existing page. Requires the page ID, title, new body content, and the next version number. Changing the status allows Claude to publish drafts.

Example Prompt: "Update page 5543210. Add a new section called 'Rollback Procedures' at the bottom, and increment the version number to 4."

create_a_confluence_page

Creates a new page within a specified space. Requires the space ID and title. Claude can use this to generate new documentation from scratch based on a conversation.

Example Prompt: "Create a new page in the Onboarding space (spaceId: 2005) titled 'Local Environment Setup 2026'. Format it with step-by-step instructions."

For the complete tool inventory and full schema details, visit the Confluence integration page.

Workflows in Action

Once Claude is connected to the Truto MCP server, you can orchestrate multi-step API workflows entirely through natural language.

Case 1: Auditing and Updating a Product Requirement Document (PRD)

Product managers frequently need to ensure PRDs reflect recent engineering decisions. Claude can handle the entire discovery and update lifecycle.

"Find the Q3 Billing Engine PRD in Confluence. Read the current requirements. If it doesn't mention the new Stripe webhook integration, update the page to include a technical note about it. Make sure to increment the version number."

Step-by-step execution:

  1. Claude calls list_all_confluence_search with a CQL query: title ~ "Q3 Billing Engine PRD". It extracts the page ID (e.g., 998877) from the response.
  2. Claude calls get_single_confluence_page_by_id passing id: 998877. It reviews the returned body.storage.value and the current version.number (e.g., 5).
  3. Claude determines the Stripe webhook section is missing. It formats the new storage XML.
  4. Claude calls update_a_confluence_page_by_id with the new body content and version: 6.

Outcome: The PRD is actively modified in Confluence, accurately reflecting the new requirements without manual copying and pasting.

Case 2: Discovering API Documentation

Engineers joining a new project need context fast. Claude can navigate Confluence spaces to assemble a briefing.

"I need to understand our internal logging standards. Search the Engineering space for pages related to 'Datadog logging guidelines' and summarize the main rules. Then, tell me who authored the document."

Step-by-step execution:

  1. Claude calls list_all_confluence_search using CQL: space = "ENG" AND text ~ "Datadog logging guidelines".
  2. Claude identifies the target page ID and calls get_single_confluence_page_by_id.
  3. Claude parses the HTML/XML body to construct a summary of the logging rules.
  4. Claude extracts the authorId from the page metadata and optionally calls get_single_confluence_user_by_id to resolve the user's display name.

Outcome: The engineer receives a concise, accurate summary of the logging guidelines directly in their chat interface, alongside the author's name for follow-up questions.

Security and Access Control

Exposing an internal knowledge base to an LLM requires strict boundary management. Truto MCP servers provide several mechanisms to lock down access at the infrastructure level. For more details on these protocols, check out our piece on understanding MCP server security.

  • Method Filtering: If you only want Claude to search and read pages - never edit them - pass config.methods: ["read"] during server creation. Truto will strip out update_a_confluence_page_by_id and all other write tools before Claude ever sees them.
  • Tag Filtering: Limit the server to specific functional areas using config.tags. You can scope the MCP server to only expose tools tagged for documentation while hiding administrative tools like list_all_confluence_audit_logs.
  • Require API Token Auth: Setting require_api_token_auth: true forces the MCP client to pass a valid Truto API token in the Authorization header. This prevents anonymous access even if the MCP URL is leaked in internal channels.
  • Expiration (expires_at): For temporary tasks or contractor access, you can generate a short-lived MCP server by setting an ISO datetime. Once the timestamp passes, the server self-destructs and the token is purged from storage.

FAQ

How do I filter which Confluence pages Claude can access?
You can restrict Claude's access by configuring the MCP server with method filtering (e.g., read-only access) or by leveraging tag filtering to limit tools to specific resource categories.
Does Truto automatically handle Confluence rate limits?
No. Truto passes HTTP 429 rate limit errors directly to the caller and normalizes the upstream rate limit information into standard IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The caller must implement their own retry and backoff logic.
Can I prevent Claude from modifying or deleting Confluence pages?
Yes. When creating the MCP server in Truto, you can pass config.methods = ["read"] to generate an MCP token that strictly exposes non-destructive operations like get and list.

More from our Blog