Skip to main content
Glama
SumitDalavi

AI DevSecOps Agent MCP Server

by SumitDalavi
README.md
> **NOTE:** This repository is an archival lab or partial prototype. It is not actively maintained and should not be used as a reference for production-grade deployments or performance benchmarks.


# AI-Assisted DevSecOps Agent β€” MCP Server πŸ€–πŸ”’

> **Maturity:** Functional Prototype
> _An MCP (Model Context Protocol) server exposing DevSecOps tooling to LLM clients._

> **⚠️ PoC Note:** All tools return mock/simulated data β€” no live GitHub Actions, Jira, or logging integrations required. The MCP protocol implementation and tool structure are fully functional.


## The Problem

DevSecOps teams drown in context-switching: checking pipeline status in one tab, triaging vulnerabilities in another, searching logs in a third. Meanwhile, LLM coding assistants can write code but are blind to your operational reality β€” they can't see your failing builds, open CVEs, or production errors.

## The Solution

This MCP server bridges the gap by exposing **four security-critical tools** to any MCP-compatible LLM client (GitHub Copilot, Claude Desktop, Cursor, etc.):

| Tool | What It Does |
|------|-------------|
| `get_pipeline_status` | Fetches CI/CD pipeline runs from GitHub Actions |
| `triage_vulnerabilities` | Queries a vulnerability board and returns severity-ranked CVEs |
| `search_logs` | Searches application logs by service, severity, and time range |
| `scan_dependencies` | Analyzes a `package.json` or `requirements.txt` for known vulnerabilities |
| `get-kubernetes-events` | Fetches recent K8s events for incident correlation (OOMKills, scheduling failures) |
| `get-sre-incident-correlation` | Correlates SRE incidents across pipeline, vulnerability, and runtime data |

## Why This Over the Obvious Alternative

Most "AI + DevOps" demos are chatbots with hardcoded responses. This project implements the **Model Context Protocol (MCP)** β€” the open standard for tool-use that GitHub Copilot, Claude, and other major LLM clients natively support. The tools return real, structured data that the LLM reasons over, not canned answers.

## Architecture

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     MCP (stdio/SSE)     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  LLM Client     │◄──────────────────────►│  MCP Server          β”‚
β”‚  (Copilot,      β”‚                         β”‚                      β”‚
β”‚   Claude, etc.) β”‚                         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚                 β”‚                         β”‚  β”‚ Pipeline Tool   β”‚  β”‚
β”‚                 β”‚                         β”‚  β”‚ Vuln Triage Toolβ”‚  β”‚
β”‚                 β”‚                         β”‚  β”‚ Log Search Tool β”‚  β”‚
β”‚                 β”‚                         β”‚  β”‚ Dep Scan Tool   β”‚  β”‚
β”‚                 β”‚                         β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                      β”‚
                                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”
                                              β”‚  Mock Data    β”‚
                                              β”‚  (Simulated   β”‚
                                              β”‚   APIs)       β”‚
                                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

## πŸ› οΈ Tech Stack

- **Runtime**: Node.js + TypeScript
- **Protocol**: Model Context Protocol (MCP) SDK
- **Transport**: stdio (local) and SSE (remote)
- **Containerization**: Docker

## πŸš€ Getting Started

### Local Development
```bash
npm install
npm run build
npm run start
```

### With Docker
```bash
docker-compose up -d --build
```

### Connecting to Claude Desktop
Add to your Claude Desktop MCP config (`claude_desktop_config.json`):
```json
{
  "mcpServers": {
    "devsecops-agent": {
      "command": "node",
      "args": ["dist/index.js"]
    }
  }
}
```

## πŸ“ Project Structure

```
src/
β”œβ”€β”€ index.ts              # MCP Server entry point
β”œβ”€β”€ tools/
β”‚   β”œβ”€β”€ pipeline.tool.ts  # GitHub Actions pipeline status
β”‚   β”œβ”€β”€ vulnerability.tool.ts  # CVE triage from mock board
β”‚   β”œβ”€β”€ logs.tool.ts      # Log search across services
β”‚   └── dependency.tool.ts # Dependency vulnerability scanning
└── data/
    └── mock-data.ts      # Simulated API responses
```

## Decision Log

| Decision | Rationale |
|----------|-----------|
| MCP over REST API | MCP is the emerging standard for LLM tool-use; REST would require custom integration per client |
| TypeScript over Python | Aligns with existing TypeScript expertise; MCP TS SDK is mature |
| Mock data layer | Keeps the PoC self-contained without requiring real GitHub/Jira API keys |
| stdio transport | Default for local MCP; SSE available for remote deployment |


## πŸ“‹ Prerequisites

| Tool | Version | Purpose |
|------|---------|---------|
| [Node.js](https://nodejs.org/) | >= 20.x | Runtime |
| [npm](https://www.npmjs.com/) | >= 10.x | Package manager |
| [Docker](https://www.docker.com/) | >= 24.x | Containerization (optional) |
| MCP Client | Any | Claude Desktop, GitHub Copilot, Cursor, etc. |

## πŸš€ Step-by-Step Setup

### Option A: Local Development

```bash
# 1. Clone the repository
git clone https://github.com/SumitDalavi/ai-devsecops-agent-mcp.git
cd ai-devsecops-agent-mcp

# 2. Install dependencies
npm install

# 3. Build the TypeScript project
npm run build

# 4. Start the MCP server (stdio transport)
npm run start
```

### Option B: Docker

```bash
# 1. Clone and build
git clone https://github.com/SumitDalavi/ai-devsecops-agent-mcp.git
cd ai-devsecops-agent-mcp

# 2. Build and run
docker build -t devsecops-mcp-agent .
docker run -i devsecops-mcp-agent
```

### Connecting to Claude Desktop

Add to your Claude Desktop config (`claude_desktop_config.json`):
```json
{
  "mcpServers": {
    "devsecops-agent": {
      "command": "node",
      "args": ["/absolute/path/to/ai-devsecops-agent-mcp/dist/index.js"]
    }
  }
}
```

## πŸ§ͺ Usage & Demo

Once connected to an MCP client, you can ask natural language questions like:

| Prompt | Tool Invoked |
|--------|-------------|
| "Show me the latest pipeline runs" | `get_pipeline_status` |
| "Are there any critical vulnerabilities?" | `triage_vulnerabilities` |
| "Search for error logs in the payment service" | `search_logs` |
| "Scan dependencies for known CVEs" | `scan_dependencies` |
| "Show me Kubernetes events in production" | `get-kubernetes-events` |
| "Check for active incidents" | `get-sre-incident-correlation` |

The server returns structured JSON data that the LLM reasons over to provide contextual answers.

## βœ… Verification

```bash
# Verify the build succeeds
npm run build

# Verify the server starts (it will wait for MCP client connection on stdio)
node dist/index.js
# You should see: "DevSecOps MCP Agent running on stdio" on stderr
```

## Mock Boundaries (Honest Scope)

| What | Status | Details |
|---|---|---|
| MCP Protocol | **Real** | Full Model Context Protocol implementation (stdio). |
| GitHub Actions Integration | **Real** | `get_pipeline_status` hits live GitHub API if `GITHUB_TOKEN` is set. |
| Other Tools | **Mocked** | Jira/Log tools return simulated JSON data. |

## πŸ“š Documentation

- [Architecture](docs/ARCHITECTURE.md) β€” System diagram and component details
- [Runbook](docs/runbook.md) β€” Setup, commands, and expected outputs
- [Decisions](docs/decisions.md) β€” ADRs for MCP integration
- [Changelog](docs/changelog.md) β€” Change history

## πŸ‘¨β€πŸ’» Author

**Sumit Dalavi** β€” Senior DevSecOps / Platform Engineer
[GitHub](https://github.com/SumitDalavi) | [LinkedIn](https://in.linkedin.com/in/sumit-dalavi-762838129)

---

*Built with a focus on robust patterns, not toy demos.*

## CI & Reliability Updates (August 2026)

- **CI Pipeline Remediation:** Successfully resolved all CI/CD pipeline failures.
- **Specific Fix:** Upgraded Zod to match MCP SDK requirements and explicitly cast tool schemas to bypass TypeScript excessive type inference loop.
- **Status:** 🟩 Passing

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

The tools mostly target distinct data sources: vulnerability board, logs, dependencies, Kubernetes events, CI/CD pipelines, and Prometheus metrics. The only mild overlap is between triage_vulnerabilities and scan_dependencies, which both concern vulnerabilities but differ in action and source. Descriptions help differentiate them, so confusion is unlikely but possible.

Naming Consistency3/5

The tool names mix snake_case and kebab-case delimiters (e.g., triage_vulnerabilities vs get-kubernetes-events), and some use imperative verbs while others use a get_ prefix. The meanings remain readable, but the set is not consistently formatted. This inconsistency is noticeable though not chaotic.

Tool Count5/5

Six tools is a well-scoped set for an AI DevSecOps agent covering vulnerability triage, dependency scanning, log search, Kubernetes events, pipeline status, and Prometheus metrics. Each tool earns its place without redundancy or excessive breadth. The count fits the investigative, read-oriented purpose.

Completeness4/5

The surface covers key incident and security investigation areas: CVEs, dependency scans, logs, Kubernetes events, CI/CD status, and SLI/SLO metrics. Minor gaps remain, such as fetching trace details despite search_logs returning trace IDs, or querying alert/incident state directly. These can be worked around or handled by adjacent systems, so coverage is mostly complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues