ops-mcp
# ops-mcp
MCP server for managing maintenance windows across [Atlassian Statuspage](https://www.atlassian.com/software/statuspage) and [Uptime Kuma](https://github.com/louislam/uptime-kuma) from AI assistants like Claude.
## Features
- **Unified maintenance scheduling** — create maintenance windows on both Statuspage and Uptime Kuma in a single call
- **Statuspage management** — create, update, and list incidents and scheduled maintenance
- **Uptime Kuma management** — create, end, and list maintenance windows; list monitors
- **MCP protocol** — works with any MCP-compatible client (Claude Desktop, Claude Code, etc.)
## Tools
| Tool | Description |
|------|-------------|
| `ops_schedule_maintenance` | Create a maintenance window on **both** Statuspage and Uptime Kuma in one call |
| `ops_create_maintenance` | Create scheduled maintenance on Statuspage |
| `ops_update_maintenance` | Update or resolve a Statuspage incident/maintenance |
| `ops_list_incidents` | List Statuspage incidents and scheduled maintenance |
| `ops_list_components` | List all Statuspage components (resolve names to IDs) |
| `ops_create_uk_maintenance` | Create a maintenance window in Uptime Kuma |
| `ops_end_uk_maintenance` | End an Uptime Kuma maintenance window early |
| `ops_list_uk_maintenance` | List all Uptime Kuma maintenance windows |
| `ops_list_uk_monitors` | List all Uptime Kuma monitors with current status |
## Setup
### Install
```bash
pip install -e .
```
### Environment variables
Copy `.env.example` to `.env` and fill in your credentials:
```
STATUSPAGE_API_KEY=your_statuspage_oauth_token
STATUSPAGE_PAGE_ID=your_page_id
UPTIME_KUMA_URL=https://status.example.com
UPTIME_KUMA_USERNAME=admin
UPTIME_KUMA_PASSWORD=your_password
```
- **Statuspage API key**: Generate at [manage.statuspage.io](https://manage.statuspage.io) under your user profile > API keys
- **Statuspage page ID**: Found in your page URL or page settings
- **Uptime Kuma URL**: The base URL of your Uptime Kuma instance
- **Uptime Kuma credentials**: A user with permission to manage maintenance windows
### MCP client configuration
Add to your MCP client config (e.g. `.mcp.json`):
```json
{
"mcpServers": {
"ops-mcp": {
"command": "ops-mcp",
"env": {
"STATUSPAGE_API_KEY": "your_key",
"STATUSPAGE_PAGE_ID": "your_page_id",
"UPTIME_KUMA_URL": "https://status.example.com",
"UPTIME_KUMA_USERNAME": "admin",
"UPTIME_KUMA_PASSWORD": "your_password"
}
}
}
}
```
## Usage examples
Schedule maintenance on both systems:
> "Schedule a 2-hour database maintenance window starting at 2am AEST tomorrow"
The `ops_schedule_maintenance` tool handles both Statuspage and Uptime Kuma, so monitors are silenced and subscribers are notified in one step.
List current monitors:
> "Show me all Uptime Kuma monitors and their status"
Update an incident:
> "Mark incident abc123 as resolved with message 'Database migration complete'"
## License
MIT
TDQS
Scored across 9 tools
Most tools have distinct purposes targeting different systems (Statuspage vs Uptime Kuma) and actions (create, list, update). However, 'ops_create_maintenance' and 'ops_schedule_maintenance' could cause confusion as both create maintenance, with the latter being a combined operation for both systems. The descriptions help clarify this overlap, but agents might initially misselect between them.
All tools follow a consistent 'ops_verb_noun' pattern with snake_case throughout. The verbs (create, list, update, end, schedule) are clear and predictable, and the nouns (maintenance, components, incidents, monitors) accurately describe the resources. This uniformity makes the tool set easy to navigate and understand.
With 9 tools, this server is well-scoped for managing maintenance and incidents across Statuspage and Uptime Kuma. Each tool serves a specific function without redundancy, covering key operations like listing, creating, updating, and ending maintenance. The count is appropriate for the domain, providing comprehensive coverage without being overwhelming.
The tool set offers strong coverage for maintenance and incident management across two systems, including CRUD-like operations (create, list, update/end). Minor gaps exist, such as no tool to delete or update Uptime Kuma maintenance specifically, and no direct incident creation for Statuspage. However, agents can work around these using the available tools, and core workflows are well-supported.