Skip to main content
Glama
mnicole-dev

@mnicole-dev/updown-mcp-server

by mnicole-dev
README.md
# @mnicole-dev/updown-mcp-server

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for the [Updown.io](https://updown.io) website monitoring API. Manage checks, view downtimes and metrics, configure alert recipients, and control status pages from any MCP-compatible client.

## Features

**15 tools** covering the full Updown.io API:

### Checks (5 tools)

| Tool | Description |
|------|-------------|
| `list-checks` | List all monitoring checks with status, uptime, and apdex |
| `get-check` | Get details for a single check, optionally including metrics |
| `create-check` | Create a new URL monitoring check |
| `update-check` | Update check settings (URL, period, threshold, headers, etc.) |
| `delete-check` | Delete a monitoring check |

### Downtimes & Metrics (2 tools)

| Tool | Description |
|------|-------------|
| `get-check-downtimes` | Get downtime history for a check (paginated) |
| `get-check-metrics` | Get performance metrics (apdex, uptime, timings) for a time range |

### Nodes (1 tool)

| Tool | Description |
|------|-------------|
| `list-nodes` | List all global probe locations used by Updown.io |

### Recipients (3 tools)

| Tool | Description |
|------|-------------|
| `list-recipients` | List all alert recipients (email, Slack, webhooks, SMS) |
| `create-recipient` | Create a new alert recipient |
| `delete-recipient` | Delete a recipient |

### Status Pages (4 tools)

| Tool | Description |
|------|-------------|
| `list-status-pages` | List all status pages |
| `create-status-page` | Create a new public or private status page |
| `update-status-page` | Update a status page |
| `delete-status-page` | Delete a status page |

## Requirements

- Node.js 18+
- An Updown.io account with an API key ([get it here](https://updown.io/settings/edit))

## Installation

```bash
npm install -g @mnicole-dev/updown-mcp-server
```

Or run directly with `npx`:

```bash
npx @mnicole-dev/updown-mcp-server
```

## Configuration

Set the following environment variable:

```bash
export UPDOWN_API_KEY=your-api-key
```

### Claude Code

Add to your `~/.claude.json`:

```json
{
  "mcpServers": {
    "updown": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@mnicole-dev/updown-mcp-server"],
      "env": {
        "UPDOWN_API_KEY": "your-api-key"
      }
    }
  }
}
```

### Claude Desktop

Add to your config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "updown": {
      "command": "npx",
      "args": ["-y", "@mnicole-dev/updown-mcp-server"],
      "env": {
        "UPDOWN_API_KEY": "your-api-key"
      }
    }
  }
}
```

## Examples

### Check status of all your monitors

```
> Show me all my monitoring checks and their current status
```

### Investigate downtime

```
> Show me the downtime history for check abc123
```

### Get performance metrics

```
> Get metrics for check abc123 between 2024-01-01 and 2024-01-31, grouped by time
```

### Create a new monitor

```
> Create a check for https://myapp.com every 30 seconds with alias "My App" and apdex threshold 0.5
```

### Manage recipients

```
> List all my alert recipients and create a new email recipient for alerts@myteam.com
```

### Create a status page

```
> Create a public status page with checks abc123 and def456, named "My Services Status"
```

## How it works

1. The MCP client sends a tool call to the server via stdio
2. The server authenticates with Updown.io using the `X-API-KEY` header
3. Requests are sent to `https://api.updown.io`
4. Responses are formatted as human-readable markdown text and returned

## Development

```bash
git clone https://github.com/mnicole-dev/updown-mcp-server.git
cd updown-mcp-server
pnpm install
pnpm dev          # Run with tsx (requires UPDOWN_API_KEY)
pnpm build        # Build to dist/
```

## License

MIT

TDQS

A3.6/5.0

Scored across 15 tools

Disambiguation5/5

Each tool clearly targets a distinct resource and action: checks, nodes, recipients, and status pages each have their own list/get/create/update/delete where applicable, with no overlapping purposes. The specialized check metrics and downtimes tools are unambiguous subsets of check data.

Naming Consistency5/5

All tool names follow a consistent kebab-case verb-noun pattern (e.g., list-checks, create-status-page). The pattern is predictable across all resources, with compound names like get-check-downtimes extending the same convention.

Tool Count5/5

15 tools is within the well-scoped 3-15 range for a domain-specific server. Each tool maps to a real operation on the Updown.io API, and the count feels right for covering the main resources without unnecessary bloat.

Completeness4/5

Checks and status pages have full CRUD coverage, plus additional check-specific operations. Recipients lack an update operation, but since recipients are likely simple contact addresses, create/delete/list may be sufficient. Overall the surface covers the core domain well with only minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues