confluence-mcp-server

confluence-mcp-server

2

The Confluence MCP Server is a Model Context Protocol server for Atlassian Confluence, providing tools for AI integration with Confluence content. It supports operations like search, create, and modify content, and is deployable using Flask on Cloud Run.

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.