# 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