Skip to main content
Glama

πŸš€ DevOps MCP Hub

AI-Powered Unified DevOps Integration for Jira, GitHub, and Confluence

A comprehensive Model Context Protocol (MCP) server that enables AI assistants to seamlessly interact with your DevOps tools. Built for the CCTECH Hackathon.

Version Node License


✨ Features

πŸ”§ Core Integrations

Platform

Features

Jira

Issues, Projects, Sprints, Comments, Attachments, Worklogs

GitHub

Repos, PRs, Commits, Branches, Actions, Releases

Confluence

Spaces, Pages, Search, Comments, Publishing

πŸ€– AI-Powered Features

  • πŸ₯ Sprint Health Analyzer - Comprehensive sprint metrics with risk analysis and recommendations

  • 🧠 Smart Issue Creator (NLP) - Create issues from natural language with AI-suggested properties

  • πŸ“Š Team Workload Dashboard - Visualize team capacity and identify bottlenecks

  • ⏱️ Time Tracking - Full worklog support with team summaries

  • πŸ“ Release Notes Generator - Auto-generate release notes from Jira + GitHub data

πŸ’¬ MCP Prompts

Pre-built conversational workflows:

  • Sprint Review Analysis

  • Natural Language Issue Creation

  • Team Standup Generation

  • Workload Analysis

  • Release Notes Generation


Related MCP server: MCP Atlassian

πŸš€ Quick Start

Prerequisites

  • Node.js 18+

  • npm or yarn

  • Access to Jira (required) + GitHub/Confluence (optional)

Installation

# Clone the repository
git clone https://github.com/your-org/devops-mcp-hub.git
cd devops-mcp-hub

# Install dependencies
npm install

# Configure environment
cp .env.example .env
# Edit .env with your credentials

# Build
npm run build

Configuration

Edit .env file with your credentials:

# Jira (Required)
JIRA_BASE_URL=https://your-company.atlassian.net
JIRA_EMAIL=your.email@company.com
JIRA_API_TOKEN=your_api_token

# GitHub (Optional)
GITHUB_TOKEN=your_github_token

# Confluence (Optional)
CONFLUENCE_BASE_URL=https://your-company.atlassian.net
CONFLUENCE_EMAIL=your.email@company.com
CONFLUENCE_API_TOKEN=your_api_token

Add to Cursor

Add to your ~/.cursor/mcp.json:

{
  "mcpServers": {
    "devops-hub": {
      "command": "node",
      "args": ["C:/path/to/devops-mcp-hub/dist/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://your-company.atlassian.net",
        "JIRA_EMAIL": "your.email@company.com",
        "JIRA_API_TOKEN": "your_api_token",
        "GITHUB_TOKEN": "your_github_token",
        "CONFLUENCE_BASE_URL": "https://your-company.atlassian.net",
        "CONFLUENCE_EMAIL": "your.email@company.com",
        "CONFLUENCE_API_TOKEN": "your_api_token"
      }
    }
  }
}

🐳 Docker Deployment

Build and Run

# Build Docker image
docker build -t devops-mcp-hub .

# Run with environment file
docker run --env-file .env devops-mcp-hub

# Or with docker-compose
docker-compose up -d

Using Pre-built Image

# Pull from registry (when published)
docker pull your-registry/devops-mcp-hub:latest

# Run
docker run --env-file .env your-registry/devops-mcp-hub:latest

For Teams

Share the Docker image with your team:

# Save image to file
docker save devops-mcp-hub:latest | gzip > devops-mcp-hub.tar.gz

# Load on another machine
gunzip -c devops-mcp-hub.tar.gz | docker load

# Run with their own .env file
docker run --env-file .env devops-mcp-hub:latest

πŸ“š Available Tools

Jira Tools

Tool

Description

get_issue

Get issue details

search_issues

Search with JQL

create_issue

Create new issue

update_issue

Update issue

delete_issue

Delete issue

transition_issue

Change status

add_comment

Add comment

get_comments

Get comments

assign_issue

Assign to user

get_projects

List projects

get_boards

List boards

get_sprints

List sprints

get_sprint_issues

Sprint issues

get_my_issues

My assigned issues

add_worklog

Log time

get_worklogs

Get worklogs

get_time_tracking

Time tracking info

AI Analytics Tools

Tool

Description

analyze_sprint_health

Sprint health with metrics

get_workload_dashboard

Team workload analysis

analyze_issue_text

NLP issue analysis

create_smart_issue

AI-powered issue creation

generate_release_notes

Auto-generate release notes

get_team_worklogs

Team time summary

GitHub Tools

Tool

Description

github_get_repos

List repositories

github_get_repo

Repository details

github_get_commits

Get commits

github_get_prs

Get pull requests

github_compare

Compare branches

github_get_file

Get file content

github_get_workflows

GitHub Actions

github_get_releases

Get releases

Confluence Tools

Tool

Description

confluence_get_spaces

List spaces

confluence_get_page

Get page

confluence_search

Search content

confluence_create_page

Create page

confluence_get_space_pages

Pages in space

publish_release_notes_to_confluence

Publish release notes


πŸ’‘ Usage Examples

Sprint Health Analysis

Analyze the health of sprint 123 on board 456

The AI will provide:

  • Health score (0-100)

  • Issue breakdown

  • Risk identification

  • Actionable recommendations

Smart Issue Creation

Create an issue: We need to fix the login page that crashes when users
enter special characters in the password field. This is urgent and
affecting production users.

AI automatically detects:

  • Type: Bug

  • Priority: Critical

  • Labels: frontend, security

  • Similar existing issues

Release Notes Generation

Generate release notes for version 2.0.0 of project MYPROJ

Generates comprehensive release notes with:

  • Features, improvements, bug fixes

  • Breaking changes warnings

  • Contributor acknowledgments

  • GitHub statistics (if configured)

Workload Dashboard

Show me the team workload for project MYPROJ

Provides:

  • Per-member workload metrics

  • Balance score

  • Bottleneck identification

  • Redistribution recommendations


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     DevOps MCP Hub                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚  β”‚   Jira      β”‚  β”‚   GitHub    β”‚  β”‚ Confluence  β”‚         β”‚
β”‚  β”‚   Client    β”‚  β”‚   Client    β”‚  β”‚   Client    β”‚         β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚         β”‚                β”‚                β”‚                 β”‚
β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚                          β”‚                                  β”‚
β”‚                  β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚                  β”‚  AI Analytics β”‚                          β”‚
β”‚                  β”‚    Engine     β”‚                          β”‚
β”‚                  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β”‚                          β”‚                                  β”‚
β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚         β”‚                β”‚                β”‚                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”         β”‚
β”‚  β”‚   Sprint    β”‚  β”‚    Smart    β”‚  β”‚   Release   β”‚         β”‚
β”‚  β”‚   Health    β”‚  β”‚    Issue    β”‚  β”‚    Notes    β”‚         β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚                                                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                     MCP Protocol Layer                       β”‚
β”‚              (Tools, Resources, Prompts)                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   AI Assistant  β”‚
                    β”‚  (Cursor, etc)  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ” Security

  • No hardcoded secrets - All credentials via environment variables

  • Non-root Docker - Runs as unprivileged user

  • Read-only filesystem - Container filesystem is immutable

  • Input validation - All inputs validated with Zod schemas

  • HTTPS only - All API calls use secure connections


πŸ› οΈ Development

# Run in development mode
npm run dev

# Build
npm run build

# Start production
npm start

Project Structure

devops-mcp-hub/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts           # Main MCP server
β”‚   β”œβ”€β”€ jira-client.ts     # Jira API client
β”‚   β”œβ”€β”€ github-client.ts   # GitHub API client
β”‚   β”œβ”€β”€ confluence-client.ts # Confluence API client
β”‚   └── ai-analytics.ts    # AI-powered analytics
β”œβ”€β”€ dist/                  # Compiled output
β”œβ”€β”€ Dockerfile             # Docker configuration
β”œβ”€β”€ docker-compose.yml     # Docker Compose
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── README.md

🀝 Contributing

  1. Fork the repository

  2. Create feature branch (git checkout -b feature/amazing-feature)

  3. Commit changes (git commit -m 'Add amazing feature')

  4. Push to branch (git push origin feature/amazing-feature)

  5. Open Pull Request


πŸ“„ License

MIT License - see LICENSE file


πŸ† CCTECH Hackathon

Built with ❀️ for the CCTECH Hackathon by the DevOps MCP Hub Team

Features Implemented:

  • βœ… Jira MCP Server with full CRUD operations

  • βœ… GitHub Integration

  • βœ… Confluence Integration

  • βœ… AI Sprint Health Analyzer

  • βœ… Smart Issue Creator (NLP)

  • βœ… Team Workload Dashboard

  • βœ… Time Tracking (Worklogs)

  • βœ… Release Notes Generator

  • βœ… Docker Deployment

  • βœ… Cross-platform support (Cloud + Server)


πŸ“ž Support

  • Create an issue on GitHub

  • Check existing documentation

  • Review environment configuration

Available Tools

31 tools
add_commentC

Add a comment to an issue

Inputs: comment (required), issueKey (required).

add_worklogB

Log time worked on an issue

Inputs: issueKey (required), timeSpent (required), comment, started.

analyze_issue_textC

NLP analysis of issue text for smart suggestions

Inputs: text (required), projectKey (required).

analyze_sprint_healthC

AI-powered sprint health analysis with metrics and recommendations

Inputs: sprintId (required), boardId.

assign_issueC

Assign an issue to a user

Inputs: issueKey (required), assignee.

create_issueC

Create a new Jira issue

Inputs: summary (required), projectKey (required), labels, priority, +2 more.

create_smart_issueC

Create issue with AI-suggested type, priority, and labels

Inputs: text (required), projectKey (required), type, priority.

delete_issueC

Delete a Jira issue (use with caution!)

Inputs: issueKey (required).

generate_release_notesC

Generate comprehensive release notes

Inputs: version (required), projectKey (required), endDate, startDate, +2 more.

get_attachmentsB

Get attachments on an issue

Inputs: issueKey (required).

get_boardsB

Get all Jira boards

Inputs: no named parameters.

get_commentsB

Get comments on an issue

Inputs: issueKey (required).

get_issueB

Get details of a specific Jira issue

Inputs: issueKey (required).

get_my_issuesC

Get issues assigned to current user

Inputs: status.

get_projectB

Get project details

Inputs: projectKey (required).

get_projectsA

Get all Jira projects

Inputs: no named parameters.

get_sprint_issuesC

Get issues in a sprint

Inputs: sprintId (required).

get_sprintsC

Get sprints for a board

Inputs: boardId (required).

get_team_worklogsC

Get worklog summary for team

Inputs: endDate, sprintId, startDate, projectKey.

get_time_trackingC

Get time tracking info for an issue

Inputs: issueKey (required).

get_transitionsB

Get available transitions for an issue

Inputs: issueKey (required).

get_workload_dashboardC

Team workload analysis with balance metrics

Inputs: sprintId, projectKey.

get_worklogsC

Get worklogs for an issue

Inputs: issueKey (required).

save_doc_to_githubB

Save any markdown content directly to a GitHub repository

Inputs: repo (required), owner (required), title (required), content (required), +1 more.

save_release_notes_to_fileB

Generate release notes and save to local file or GitHub (no Confluence needed)

Inputs: version (required), projectKey (required), endDate, startDate, +3 more.

save_sprint_reportB

Generate and save sprint report to local file or GitHub

Inputs: sprintId (required), boardId, githubRepo, githubOwner, +1 more.

save_workload_reportC

Generate and save workload report to local file or GitHub

Inputs: sprintId, githubRepo, projectKey, githubOwner, +1 more.

search_issuesB

Search Jira issues using JQL

Inputs: jql (required), maxResults.

search_usersC

Search for Jira users

Inputs: query (required).

transition_issueB

Move an issue to a different status

Inputs: issueKey (required), transitionName (required).

update_issueC

Update an existing Jira issue

Inputs: issueKey (required), labels, summary, priority, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 31 tools

    Disambiguation3/5

    Most Jira operational tools (get_issue, search_issues, create_issue, etc.) are clearly distinct, but there is overlap in the reporting/generation tools: generate_release_notes vs save_release_notes_to_file vs save_doc_to_github are confusingly similar, as are create_issue and create_smart_issue. An agent could easily select the wrong tool when these overlapping functions are involved.

    Naming Consistency5/5

    Every tool name follows a consistent verb_noun pattern (e.g., get_boards, create_issue, analyze_sprint_health, save_doc_to_github). There is no mixing of camelCase or alternate verb styles, making the naming highly predictable.

    Tool Count2/5

    With 31 tools, the server exceeds the 25-tool threshold for 'too many', making it feel bloated. Many tools are extremely narrow (e.g., get_transitions, get_attachments) and could be consolidated, though the diversity of Jira operations explains some of the count.

    Completeness4/5

    The server covers the full Jira issue lifecycle (create, get, update, delete, transition, comment, assign, worklog) plus sprint tracking and AI-based reporting. Minor gaps exist for things like project creation or issue linking, but these are not core to the apparent DevOps hub purpose and can be worked around.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers