Confluence MCP Server logo

Confluence MCP Server

by pawankumar94

A Model Context Protocol (MCP) server implementation for Atlassian Confluence. This server provides a set of tools for interacting with Confluence through the MCP protocol, allowing AI agents to seamlessly work with Confluence content.

View on GitHub

Last updated: N/A

Confluence MCP Server

A Model Context Protocol (MCP) server implementation for Atlassian Confluence. This server provides a set of tools for interacting with Confluence through the MCP protocol, allowing AI agents to seamlessly work with Confluence content. Built with Flask for easy deployment to Cloud Run.

Features

  • Search pages and spaces using Confluence Query Language (CQL)
  • List all available Confluence spaces
  • Create, read, update, and delete Confluence pages
  • Rich metadata support for Confluence resources
  • Flask-based server for Cloud Run deployment
  • MCP tools for AI agent integration

Installation

  1. Clone the repository
  2. Install dependencies:
pip install -r requirements.txt

Configuration

Create a .env file in the project root with the following variables:

CONFLUENCE_URL=https://your-instance.atlassian.net/wiki
CONFLUENCE_ACCESS_TOKEN=your_access_token
PORT=8080  # Optional, defaults to 8080

To get an access token:

  1. Log in to your Atlassian account
  2. Go to Account Settings > Security > Create and manage API tokens
  3. Create a new API token and copy it

Available Tools

The server provides the following MCP tools:

1. Search Content

@tool("search_confluence")
def search(query: str) -> Dict[str, Any]

2. Get Spaces

@tool("get_spaces")
def get_spaces() -> Dict[str, Any]

3. Get Page Content

@tool("get_page_content")
def get_page_content(space_key: str, page_id: str) -> Dict[str, Any]

4. Create Page

@tool("create_page")
def create_page(space_key: str, title: str, content: str) -> Dict[str, Any]

5. Update Page

@tool("update_page")
def update_page(space_key: str, page_id: str, content: str) -> Dict[str, Any]

6. Delete Page

@tool("delete_page")
def delete_page(space_key: str, page_id: str) -> Dict[str, Any]

Running Locally

Run the server locally:

python example.py

The server will start on http://localhost:8080

Cloud Run Deployment

  1. Build the Docker image:
docker build -t confluence-mcp .
  1. Tag and push to Google Container Registry:
docker tag confluence-mcp gcr.io/[PROJECT-ID]/confluence-mcp
docker push gcr.io/[PROJECT-ID]/confluence-mcp
  1. Deploy to Cloud Run:
gcloud run deploy confluence-mcp \
  --image gcr.io/[PROJECT-ID]/confluence-mcp \
  --platform managed \
  --allow-unauthenticated \
  --set-env-vars="CONFLUENCE_URL=[YOUR_URL],CONFLUENCE_ACCESS_TOKEN=[YOUR_TOKEN]"

Error Handling

All tools include proper error handling and will return appropriate error messages in the response. The response format includes:

  • Success case: Relevant data in the specified format
  • Error case: {"error": "error message"}

Security Considerations

  1. Always use environment variables for sensitive data
  2. Consider using Cloud Run's built-in secret management
  3. Implement proper authentication for your endpoints
  4. Keep your Confluence access token secure

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.