# Confluence MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to interact with Confluence, converting Markdown documents to professionally styled Confluence pages with Mermaid diagram support.
## Features
- π **SSE Server**: Real-time Server-Sent Events for live progress updates
- π **Markdown to Confluence**: Convert Markdown content to Confluence storage format
- π **Mermaid Diagrams**: Render Mermaid diagrams as images in Confluence pages
- π¨ **Professional Styling**: Modern, clean page layouts
- πΎ **Smart Caching**: Local cache to link markdown files to Confluence pages
- π **Secure Authentication**: Confluence API token authentication
- βοΈ **Fly.io Ready**: Optimized for deployment on Fly.io
## Tools Available
- `confluence_list_spaces` - List all available Confluence spaces
- `confluence_list_pages` - List pages in a specific space
- `confluence_create_page` - Create new pages from Markdown content
- `confluence_update_page` - Update existing pages with new content
- `confluence_delete_page` - Delete pages and clean up cache
## Quick Start
### 1. Installation
```bash
git clone <repository-url>
cd confluence-mcp
npm install
```
### 2. Configuration
Copy the example environment file and configure your Confluence credentials:
```bash
cp .env.example .env
```
Edit `.env` with your Confluence details:
```env
CONFLUENCE_BASE_URL=https://your-domain.atlassian.net
CONFLUENCE_USERNAME=your-email@domain.com
CONFLUENCE_API_TOKEN=your-api-token
MCP_API_KEY=your-mcp-api-key
PORT=3001
```
### 3. Get Confluence API Token
1. Go to [Atlassian Account Settings](https://id.atlassian.com/manage-profile/security/api-tokens)
2. Click "Create API token"
3. Give it a label and copy the token
4. Use your email as username and the token as password
### 4. Run the Server
```bash
# Development
npm run dev
# Production
npm run build
npm start
```
The server will be available at `http://localhost:3001`
## Usage Examples
### Create a Page from Markdown
```markdown
# My Documentation
This is a sample page with a Mermaid diagram:
```mermaid
graph TD
A[Start] --> B[Process]
B --> C[End]
```
Some **bold text** and *italic text*.
```
The MCP server will:
1. Convert the Markdown to Confluence storage format
2. Render the Mermaid diagram as a PNG image
3. Create a professionally styled page
4. Cache the mapping for future updates
### Update an Existing Page
When you update a markdown file, the server can automatically update the corresponding Confluence page using the cached mapping.
## API Endpoints
### SSE Endpoints
- `GET /mcp` - Establish SSE connection for MCP protocol
- `POST /messages` - Send MCP messages (requires sessionId)
### Health Check
- `GET /health` - Server health status
## Deployment on Fly.io
### 1. Install Fly CLI
```bash
# macOS
brew install flyctl
# Other platforms: https://fly.io/docs/getting-started/installing-flyctl/
```
### 2. Login and Initialize
```bash
fly auth login
fly launch
```
### 3. Set Secrets
```bash
fly secrets set CONFLUENCE_BASE_URL=https://your-domain.atlassian.net
fly secrets set CONFLUENCE_USERNAME=your-email@domain.com
fly secrets set CONFLUENCE_API_TOKEN=your-api-token
fly secrets set MCP_API_KEY=your-mcp-api-key
```
### 4. Deploy
```bash
fly deploy
```
## Architecture
```
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β AI Assistant βββββΊβ MCP Server βββββΊβ Confluence β
β β β (SSE/HTTP) β β API β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Local Cache β
β (JSON file) β
ββββββββββββββββββββ
```
## Development
### Project Structure
```
confluence-mcp/
βββ src/
β βββ index.ts # Entry point
β βββ server.ts # MCP server with SSE support
β βββ services/
β β βββ confluence-client.ts # Confluence API client
β β βββ markdown-converter.ts # Markdown to Confluence converter
β β βββ mermaid-renderer.ts # Mermaid diagram renderer
β βββ utils/
β β βββ cache.ts # Local cache management
β β βββ config.ts # Configuration management
β βββ types/
β βββ index.ts # TypeScript type definitions
βββ fly.toml # Fly.io configuration
βββ package.json
βββ tsconfig.json
```
### Building
```bash
npm run build
```
### Testing
```bash
# Test health endpoint
curl http://localhost:3001/health
# Test SSE connection
curl -N http://localhost:3001/mcp
```
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
## License
MIT License - see LICENSE file for details