Skip to main content
Glama
README.md
# mcp-cohesity

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for **Cohesity DataProtect**, providing AI assistants with full access to backup management, recovery operations, and data protection monitoring through the Cohesity REST API.

## Features

**14 tools** across six categories:

### Cluster

| Tool | Description |
|------|-------------|
| `get_cluster_info` | Get cluster name, ID, software version, and node count |
| `get_cluster_stats` | Get storage capacity (used/total) and throughput statistics |

### Protection Policies & Groups

| Tool | Description |
|------|-------------|
| `list_protection_policies` | List all data protection policies with schedule and retention settings |
| `list_protection_groups` | List protection groups (backup jobs) with status, schedule, and last run info |
| `get_protection_group` | Get detailed configuration of a specific protection group |
| `run_protection_group` | Trigger an on-demand backup run for a protection group |

### Backup Runs

| Tool | Description |
|------|-------------|
| `list_protection_runs` | List recent backup runs with status, duration, and data size |
| `get_protection_run` | Get detailed information about a specific backup run |

### Protection Sources

| Tool | Description |
|------|-------------|
| `list_sources` | List all registered sources (vSphere, Physical, NAS, SQL, etc.) |
| `get_source` | Get full object hierarchy details for a specific source |

### Recovery

| Tool | Description |
|------|-------------|
| `list_recovery_tasks` | List recovery tasks with status and type |
| `get_recovery_task` | Get detailed information about a specific recovery task |

### Alerts

| Tool | Description |
|------|-------------|
| `list_alerts` | List cluster alerts filtered by severity, category, and state |
| `resolve_alert` | Mark an alert as resolved with resolution notes |

## Installation

```bash
git clone git@github.com:fredriksknese/mcp-cohesity.git
cd mcp-cohesity
npm install
npm run build
```

## Configuration

The server is configured via environment variables:

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `COHESITY_CLUSTER` | Yes | — | Cohesity cluster hostname or IP address |
| `COHESITY_USERNAME` | Yes | — | Username for authentication |
| `COHESITY_PASSWORD` | Yes | — | Password for authentication |
| `COHESITY_DOMAIN` | No | `LOCAL` | Authentication domain |
| `COHESITY_ALLOW_SELF_SIGNED` | No | `true` | Accept self-signed SSL certificates |

## Usage with Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "cohesity": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-cohesity/dist/index.js"],
      "env": {
        "COHESITY_CLUSTER": "your-cohesity-cluster.example.com",
        "COHESITY_USERNAME": "admin",
        "COHESITY_PASSWORD": "your-password",
        "COHESITY_DOMAIN": "LOCAL"
      }
    }
  }
}
```

## Usage with Claude Code

Add to your Claude Code MCP settings:

```bash
claude mcp add cohesity -- node /absolute/path/to/mcp-cohesity/dist/index.js
```

Set the required environment variables before running, or configure them in your MCP settings.

## Example Prompts

Once connected, you can ask your AI assistant things like:

- *"Show me the current cluster storage utilization"*
- *"List all protection groups that failed their last backup"*
- *"Trigger an on-demand backup for the VM production group"*
- *"What are the critical alerts on the cluster right now?"*
- *"Show me all backup runs in the last 24 hours"*
- *"List all VMware protection sources registered on the cluster"*
- *"Get the details of the last backup run for protection group ID 12345"*
- *"Resolve alert ID abc123 — disk was replaced"*
- *"What recovery tasks are currently running?"*
- *"List all protection policies and their retention settings"*

## Development

```bash
npm run dev      # Run with tsx (auto-reloads)
npm run build    # Compile TypeScript to dist/
npm start        # Run compiled output
```

## Architecture

```
src/
├── index.ts              # Entry point — creates MCP server + STDIO transport
├── cohesity-client.ts    # HTTP client with token-based auth and V1/V2 API support
└── tools/
    ├── cluster.ts        # Cluster info and stats (2 tools)
    ├── protection.ts     # Protection policies and groups (4 tools)
    ├── runs.ts           # Backup run management (2 tools)
    ├── sources.ts        # Protection source management (2 tools)
    ├── recovery.ts       # Recovery task management (2 tools)
    └── alerts.ts         # Alert management (2 tools)
```

## API Details

This server uses two Cohesity API versions:

- **V2 API** (`/v2/`) — Used for protection groups, runs, sources, and recoveries
- **V1 API** (`/irisservices/api/v1/public/`) — Used for alerts and source hierarchy

Authentication uses the V2 sessions endpoint (`POST /v2/users/sessions`) with Bearer token auth. Tokens are automatically refreshed on expiry.

## Requirements

- Node.js 18+
- Cohesity DataProtect cluster with REST API access (tested with Cohesity 6.x+)

## License

SEE LICENSE IN LICENSE

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct entity and action (e.g., get_cluster_info vs get_cluster_stats, list_protection_groups vs list_protection_policies), with no overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as get_cluster_info, list_alerts, run_protection_group, resolve_alert.

Tool Count5/5

14 tools cover the typical operations for a data protection domain without being excessive or insufficient, balancing detail and scope.

Completeness3/5

The set lacks create/update/delete operations for protection groups and policies, which are common lifecycle actions; agents may need those for full management.

Maintenance

ActivityInactive
ResponsivenessNo issues