@devopsagent/mcp-server
Advanced tools
| #!/usr/bin/env node | ||
| 'use strict'; | ||
| const MCP_URL = process.env.DEVOPSAGENT_MCP_URL || 'https://devopsagent.io/mcp/'; | ||
| const API_KEY = process.env.DEVOPSAGENT_API_KEY || ''; | ||
| if (!API_KEY) { | ||
| process.stderr.write( | ||
| '[devops-agent] ERROR: DEVOPSAGENT_API_KEY is not set.\n' + | ||
| '[devops-agent] Get your key at https://devopsagent.io/api-gateway/keys\n' + | ||
| '[devops-agent] Add to Claude Desktop config: "env": { "DEVOPSAGENT_API_KEY": "doa_live_..." }\n' | ||
| ); | ||
| process.exit(1); | ||
| } | ||
| let sessionId = null; | ||
| async function sendToRemote(message) { | ||
| const headers = { | ||
| 'Content-Type': 'application/json', | ||
| 'Accept': 'application/json', | ||
| 'Authorization': `Bearer ${API_KEY}`, | ||
| }; | ||
| if (sessionId) headers['Mcp-Session-Id'] = sessionId; | ||
| const res = await fetch(MCP_URL, { | ||
| method: 'POST', | ||
| headers, | ||
| body: JSON.stringify(message), | ||
| }); | ||
| const newSid = res.headers.get('Mcp-Session-Id'); | ||
| if (newSid && !sessionId) sessionId = newSid; | ||
| if (res.status === 202) return null; | ||
| const text = await res.text(); | ||
| if (!text.trim()) return null; | ||
| try { | ||
| return JSON.parse(text); | ||
| } catch { | ||
| process.stderr.write(`[devops-agent] Non-JSON (${res.status}): ${text.slice(0, 200)}\n`); | ||
| return null; | ||
| } | ||
| } | ||
| let buffer = ''; | ||
| process.stdin.setEncoding('utf8'); | ||
| process.stdin.on('data', async (chunk) => { | ||
| buffer += chunk; | ||
| const lines = buffer.split('\n'); | ||
| buffer = lines.pop(); | ||
| for (const line of lines) { | ||
| const trimmed = line.trim(); | ||
| if (!trimmed) continue; | ||
| let message; | ||
| try { | ||
| message = JSON.parse(trimmed); | ||
| } catch { | ||
| process.stderr.write(`[devops-agent] JSON parse error: ${trimmed.slice(0, 100)}\n`); | ||
| continue; | ||
| } | ||
| try { | ||
| const response = await sendToRemote(message); | ||
| if (response !== null) process.stdout.write(JSON.stringify(response) + '\n'); | ||
| } catch (err) { | ||
| process.stderr.write(`[devops-agent] HTTP error: ${err.message}\n`); | ||
| if (message.id !== undefined && message.id !== null) { | ||
| process.stdout.write(JSON.stringify({ | ||
| jsonrpc: '2.0', id: message.id, | ||
| error: { code: -32603, message: `Bridge error: ${err.message}` }, | ||
| }) + '\n'); | ||
| } | ||
| } | ||
| } | ||
| }); | ||
| process.stdin.on('end', () => process.exit(0)); | ||
| process.on('SIGINT', () => process.exit(0)); | ||
| process.on('SIGTERM', () => process.exit(0)); |
+34
| # Changelog | ||
| All notable changes to `@devopsagent/mcp-server` are documented here. | ||
| ## [1.0.2] - 2026-04-07 | ||
| ### Added | ||
| - `bin/server.js` — Node.js stdio bridge; `npx @devopsagent/mcp-server` now works | ||
| - `bin` entry in `package.json` (`devopsagent-mcp` command) | ||
| - `files` field in `package.json` to control published package contents | ||
| - `CHANGELOG.md` | ||
| - `devopsagent_health` built-in tool on the Python server (no credentials required) | ||
| - Expanded `keywords` in `package.json` for better npm discoverability | ||
| ### Changed | ||
| - README rewritten: npx quickstart is now the primary connection method | ||
| - Server version bumped to `1.0.2` in both `server.json` and Python server | ||
| - Tool execution errors now returned as MCP `isError: true` content instead of JSON-RPC error objects (better client compatibility) | ||
| ## [1.0.1] - 2026-04-05 | ||
| ### Changed | ||
| - `server.json` schema updated to `2025-10-17` | ||
| - Added `mcpName` field (`io.github.shittuay/devops-agent`) for MCP registry | ||
| ## [1.0.0] - 2026-04-04 | ||
| ### Added | ||
| - Initial publish to npm | ||
| - MCP registry manifest (`server.json`) | ||
| - Streamable HTTP transport (`POST /mcp/`) | ||
| - HTTP+SSE transport (`GET /mcp/sse`) | ||
| - OAuth 2.0 authorization flow for Claude.ai connectors | ||
| - 401 tools across 13 modules (AWS, Kubernetes, Azure, GCP, CI/CD, Docker, Terraform, Ansible, Monitoring, Alerting, SonarQube, Nexus, Git) |
+16
-5
| { | ||
| "name": "@devopsagent/mcp-server", | ||
| "mcpName": "io.github.shittuay/devops-agent", | ||
| "version": "1.0.1", | ||
| "version": "1.0.2", | ||
| "description": "MCP server for DevOps Agent — manage AWS, Azure, GCP, Kubernetes, Terraform, CI/CD, and more from any MCP-compatible AI client. 401 tools across 13 modules.", | ||
| "keywords": ["mcp", "devops", "aws", "kubernetes", "azure", "gcp", "terraform", "cloud", "infrastructure"], | ||
| "keywords": [ | ||
| "mcp", "mcp-server", "devops", "aws", "kubernetes", "azure", | ||
| "gcp", "terraform", "cloud", "infrastructure", "claude", | ||
| "anthropic", "automation", "model-context-protocol" | ||
| ], | ||
| "homepage": "https://devopsagent.io", | ||
@@ -13,5 +17,12 @@ "repository": { | ||
| "license": "MIT", | ||
| "engines": { | ||
| "node": ">=18" | ||
| } | ||
| "engines": { "node": ">=18" }, | ||
| "bin": { | ||
| "devopsagent-mcp": "./bin/server.js" | ||
| }, | ||
| "files": [ | ||
| "bin/", | ||
| "server.json", | ||
| "README.md", | ||
| "CHANGELOG.md" | ||
| ] | ||
| } |
+60
-30
| # DevOps Agent MCP Server | ||
| Manage AWS, Azure, GCP, Kubernetes, Terraform, CI/CD, Docker, Ansible, and more from any MCP-compatible AI client. **401+ tools across 13 modules** — all accessible via a single connection. | ||
| Manage AWS, Azure, GCP, Kubernetes, Terraform, CI/CD, Docker, Ansible, and more from any MCP-compatible AI client. **401 tools across 13 modules** — all accessible via a single connection. | ||
| ## What you can do | ||
| ## Quickstart (Claude Desktop — recommended) | ||
| - **AWS** — EC2, S3, RDS, Lambda, ECS, EKS, IAM, VPC, CloudWatch, and 100+ more operations | ||
| - **Azure** — VMs, Storage, SQL, NSGs, Container Instances, VNets | ||
| - **GCP** — Compute, GCS, Cloud SQL, GKE, Cloud Run, Pub/Sub, BigQuery | ||
| - **Kubernetes** — Pods, Deployments, Services, Namespaces, Ingress, Jobs, RBAC | ||
| - **Terraform** — init, plan, apply, destroy, state, workspaces, import | ||
| - **CI/CD** — Jenkins (11 tools) + GitHub Actions (10 tools) | ||
| - **Docker** — containers, images, volumes, networks, compose, build, push | ||
| - **Ansible** — playbooks, ad-hoc, inventory, vault, galaxy | ||
| - **Monitoring** — Prometheus, Datadog, Grafana | ||
| - **Alerting** — PagerDuty + OpsGenie | ||
| - **SonarQube** — projects, quality gates, issues, analysis | ||
| - **Nexus** — repositories, components, assets | ||
| **Step 1:** Get your API key at [devopsagent.io/api-gateway/keys](https://devopsagent.io/api-gateway/keys) | ||
| ## Connect via Claude.ai | ||
| **Step 2:** Add to your `claude_desktop_config.json`: | ||
| 1. Go to **Claude.ai → Settings → Connectors → Add custom connector** | ||
| 2. Fill in: | ||
| ```json | ||
| { | ||
| "mcpServers": { | ||
| "devops-agent": { | ||
| "command": "npx", | ||
| "args": ["-y", "@devopsagent/mcp-server"], | ||
| "env": { "DEVOPSAGENT_API_KEY": "doa_live_your_key_here" } | ||
| } | ||
| } | ||
| } | ||
| ``` | ||
| | Field | Value | | ||
| |-------|-------| | ||
| | Name | `DevOps Agent` | | ||
| | Remote MCP server URL | `https://devopsagent.io/mcp` | | ||
| | OAuth Client ID | `claude-connector` | | ||
| | OAuth Client Secret | `devopsagent-mcp-secret-2026` | | ||
| Restart Claude Desktop — all 401 tools appear automatically. | ||
| 3. Click **Add** — sign in with your DevOps Agent account to authorize. | ||
| > **Requires Node.js 18+.** The `npx` command downloads and runs the bridge automatically on first use. | ||
| ## Connect via Claude Desktop | ||
| ## Alternative: direct SSE (no Node.js required) | ||
| Generate an API key at [devopsagent.io/api-gateway/keys](https://devopsagent.io/api-gateway/keys), then add to your `claude_desktop_config.json`: | ||
| If you prefer not to use Node.js, connect directly via SSE: | ||
@@ -51,4 +44,41 @@ ```json | ||
| Restart Claude Desktop — all tools appear automatically. | ||
| ## Connect via Claude.ai (OAuth) | ||
| 1. Go to **Claude.ai → Settings → Connectors → Add custom connector** | ||
| 2. Fill in: | ||
| | Field | Value | | ||
| |-------|-------| | ||
| | Name | `DevOps Agent` | | ||
| | Remote MCP server URL | `https://devopsagent.io/mcp` | | ||
| | OAuth Client ID | `claude-connector` | | ||
| | OAuth Client Secret | `devopsagent-mcp-secret-2026` | | ||
| 3. Click **Add** — sign in with your DevOps Agent account to authorize. | ||
| ## Tools | ||
| | Module | Count | What you can do | | ||
| |--------|-------|-----------------| | ||
| | AWS | 155 | EC2, S3, RDS, Lambda, ECS, EKS, IAM, VPC, CloudWatch, DynamoDB, and more | | ||
| | Kubernetes | 28 | Pods, Deployments, Services, Namespaces, Ingress, Jobs, Nodes | | ||
| | Azure | 36 | VMs, Storage, SQL, NSGs, Container Instances, VNets, Public IPs | | ||
| | GCP | 40 | Compute, GCS, Cloud SQL, GKE, Cloud Run, Pub/Sub, BigQuery, Functions | | ||
| | CI/CD | 21 | Jenkins (11) + GitHub Actions (10) | | ||
| | Docker | 22 | Containers, images, volumes, networks, compose, build, push | | ||
| | Terraform | 16 | init, plan, apply, destroy, state, workspaces, import | | ||
| | Ansible | 13 | Playbooks, ad-hoc, inventory, vault, galaxy | | ||
| | Monitoring | 12 | Prometheus, Datadog, Grafana | | ||
| | Alerting | 16 | PagerDuty + OpsGenie | | ||
| | SonarQube | 12 | Projects, quality gates, issues, analysis | | ||
| | Nexus | 12 | Repositories, components, assets | | ||
| | Git | 6 | Status, branches, commits, diff, PRs | | ||
| ## Environment variables | ||
| | Variable | Required | Default | Description | | ||
| |----------|----------|---------|-------------| | ||
| | `DEVOPSAGENT_API_KEY` | Yes | — | API key from devopsagent.io/api-gateway/keys | | ||
| | `DEVOPSAGENT_MCP_URL` | No | `https://devopsagent.io/mcp/` | Override MCP endpoint (for self-hosted instances) | | ||
| ## Server details | ||
@@ -59,4 +89,4 @@ | ||
| | MCP Protocol | `2025-03-26` | | ||
| | Transport | Streamable HTTP (`POST /mcp`) + HTTP+SSE (`GET /mcp/sse`) | | ||
| | Auth | OAuth 2.0 (Claude.ai) or API Key (Claude Desktop) | | ||
| | Transports | Streamable HTTP (`POST /mcp`) + HTTP+SSE (`GET /mcp/sse`) + stdio (via `npx`) | | ||
| | Auth | OAuth 2.0 (Claude.ai) or API Key (Claude Desktop / npx) | | ||
| | Registry | `io.github.shittuay/devops-agent` | | ||
@@ -68,4 +98,4 @@ | Health check | `GET https://devopsagent.io/mcp/health` | | ||
| - **Website:** [devopsagent.io](https://devopsagent.io) | ||
| - **Documentation:** [devopsagent.io/docs#mcp-server](https://devopsagent.io/docs#mcp-server) | ||
| - **API Keys:** [devopsagent.io/api-gateway/keys](https://devopsagent.io/api-gateway/keys) | ||
| - **GitHub:** [github.com/shittuay/DevOps-Agent](https://github.com/shittuay/DevOps-Agent) | ||
| - **npm:** [@devopsagent/mcp-server](https://www.npmjs.com/package/@devopsagent/mcp-server) |
+5
-1
| { | ||
| "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", | ||
| "name": "io.github.shittuay/devops-agent", | ||
| "version": "1.0.0", | ||
| "version": "1.0.2", | ||
| "title": "DevOps Agent", | ||
@@ -14,2 +14,6 @@ "description": "Manage AWS, Azure, GCP, Kubernetes, CI/CD, Docker, Terraform and more. 401 tools.", | ||
| { | ||
| "url": "https://devopsagent.io/mcp/", | ||
| "type": "http" | ||
| }, | ||
| { | ||
| "url": "https://devopsagent.io/mcp/sse", | ||
@@ -16,0 +20,0 @@ "type": "sse" |
Network access
Supply chain riskThis module accesses the network.
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
8865
134.77%5
66.67%92
411.11%99
43.48%3
Infinity%1
Infinity%