@davidfuchs/mcp-uptime-kuma 0.3.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,104 +1,116 @@
1
1
  # mcp-uptime-kuma
2
2
 
3
- A Model Context Protocol (MCP) server for [Uptime Kuma](https://github.com/louislam/uptime-kuma) *version 2*, built with TypeScript and supporting both stdio and streamable HTTP transports.
3
+ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for [Uptime Kuma](https://github.com/louislam/uptime-kuma) *version 2*. Supports stdio and streamable HTTP transports.
4
+
5
+ ![GitHub Stars](https://img.shields.io/github/stars/DavidFuchs/mcp-uptime-kuma?style=flat)
6
+ ![GitHub Last Commit](https://img.shields.io/github/last-commit/DavidFuchs/mcp-uptime-kuma?style=flat)
7
+ ![GitHub Repo Size](https://img.shields.io/github/repo-size/DavidFuchs/mcp-uptime-kuma?style=flat)
8
+
9
+ ![GitHub Actions - npmjs](https://img.shields.io/github/actions/workflow/status/DavidFuchs/mcp-uptime-kuma/publish-npm.yml?style=flat&label=npmjs%20build&link=https://www.npmjs.com/package/@davidfuchs/mcp-uptime-kuma)
10
+ ![npmjs Version](https://img.shields.io/npm/v/%40davidfuchs%2Fmcp-uptime-kuma?style=flat&label=npmjs%20package%20version)
11
+ ![npmjs Downloads](https://img.shields.io/npm/d18m/%40davidfuchs%2Fmcp-uptime-kuma?style=flat&label=npmjs%20downloads&color=blue)
12
+
13
+ ![GitHub Actions - DockerHub](https://img.shields.io/github/actions/workflow/status/DavidFuchs/mcp-uptime-kuma/publish-docker.yml?style=flat&label=docker%20build&link=https://www.npmjs.com/package/@davidfuchs/mcp-uptime-kuma)
14
+ ![Docker Version](https://img.shields.io/docker/v/davidfuchs/mcp-uptime-kuma?style=flat&label=docker%20image%20version)
15
+ ![Docker Pulls](https://img.shields.io/docker/pulls/davidfuchs/mcp-uptime-kuma?style=flat)
4
16
 
5
17
  ## Features
6
18
 
7
- - **Uptime Kuma Integration**: Real-time access to monitors and heartbeats via WebSocket connection. This MCP server is immediately notified of status changes in Uptime Kuma.
19
+ - **Uptime Kuma Integration**: Real-time access to monitors, heartbeats, uptime, and responsiveness metrics from Uptime Kuma via a Socket.IO connection. This MCP server is immediately notified of status changes in Uptime Kuma and caches this information for fast retrieval.
8
20
  - **Context-Friendly**: Carefully controls the amount of data returned to avoid overwhelming the LLM context window. Tools default to returning only essential fields and recent heartbeats, with options to request more when needed.
9
21
  - **Multiple Transports**: Supports both stdio (for local integration) and streamable HTTP (for remote access).
10
- - **MCP SDK**: Uses the official `@modelcontextprotocol/sdk` package
11
- - **Comprehensive Tools**: Retrieve monitor configurations and status data (heartbeats)
12
22
 
13
23
  ## Available Tools
14
24
 
15
- ### getMonitorSummary
16
- Retrieves a summarized list of all monitors with essential information and their current status.
25
+ | Tool | Purpose |
26
+ |------|---------|
27
+ | `getMonitorSummary` | Get a quick overview of all monitors with their current status |
28
+ | `listMonitors` | Get the full list of all monitors with configurations |
29
+ | `getMonitor` | Get detailed configuration for a specific monitor by ID |
30
+ | `pauseMonitor` | Pause a monitor to stop performing checks |
31
+ | `resumeMonitor` | Resume a paused monitor to restart checks |
32
+ | `listHeartbeats` | Get status check history for all monitors |
33
+ | `getHeartbeats` | Get status check history for a specific monitor |
34
+ | `getSettings` | Get Uptime Kuma server settings |
17
35
 
18
- - **Input**:
19
- - `keywords` (string, optional): Space-separated keywords to filter monitors by pathName (case-insensitive). All keywords must match for a monitor to be included.
20
- - **Output**: Array of monitor summaries with:
21
- - Monitor ID, name, pathName
22
- - Active and maintenance state
23
- - Most recent heartbeat status (0=DOWN, 1=UP, 2=PENDING, 3=MAINTENANCE)
24
- - Status message from the most recent heartbeat
25
- - Total count of matching monitors
36
+ ## Example Conversation
26
37
 
27
- ### getMonitor
28
- Retrieves detailed information about a specific monitor by its ID.
38
+ ![MCP server answering questions about Uptime Kuma monitors](.github/images/screenshot-1.png)
39
+ *Conversation in [LibreChat](https://github.com/danny-avila/LibreChat) where the `mcp-uptime-kuma` server is providing real-time information from Uptime Kuma.*
29
40
 
30
- - **Input**:
31
- - `monitorID` (number): The ID of the monitor to retrieve
32
- - `includeAdditionalFields` (boolean, optional): Include all additional fields from Uptime Kuma (default: false)
33
- - **Output**: Monitor configuration object with details like URL, type, check interval, notification settings, etc.
41
+ ## Quick Start
34
42
 
35
- ### listMonitors
36
- Retrieves the full list of all monitors the user has access to.
43
+ Most folks will want to configure mcp-uptime-kuma using stdio as follows.
37
44
 
38
- - **Input**:
39
- - `includeAdditionalFields` (boolean, optional): Include all additional fields from Uptime Kuma (default: false)
40
- - **Output**: Array of monitor objects with count
45
+ ```json
46
+ {
47
+ "mcpServers": {
48
+ "uptime-kuma": {
49
+ "command": "npx",
50
+ "args": ["-y", "@davidfuchs/mcp-uptime-kuma"],
51
+ "env": {
52
+ "UPTIME_KUMA_URL": "http://your-uptime-kuma-instance:3001",
53
+ "UPTIME_KUMA_USERNAME": "your_username",
54
+ "UPTIME_KUMA_PASSWORD": "your_password",
55
+ }
56
+ }
57
+ }
58
+ }
59
+ ```
41
60
 
42
- ### getHeartbeats
43
- Retrieves heartbeats (status checks) for a specific monitor.
61
+ If authentication is disabled on your Uptime Kuma instance, you can remove the username/password environment variables. See the [Usage Instructions](#usage-instructions) section for more details on authentication methods.
44
62
 
45
- - **Input**:
46
- - `monitorID` (number): The ID of the monitor to get heartbeats for
47
- - `maxHeartbeats` (number, optional): Maximum number of most recent heartbeats to return (1-100). Default: 1
48
- - **Output**: Object containing:
49
- - `monitorID`: The monitor ID
50
- - `heartbeats`: Array of heartbeat objects with status, response time, timestamps, etc.
51
- - `count`: Number of heartbeats returned
63
+ ## Usage Instructions
52
64
 
53
- ### listHeartbeats
54
- Retrieves the heartbeats for all monitors.
65
+ ### Prerequisites
55
66
 
56
- - **Input**:
57
- - `maxHeartbeats` (number, optional): Maximum number of most recent heartbeats per monitor (1-100). Default: 1
58
- - **Output**: Object containing:
59
- - `heartbeats`: Map of monitor IDs to their heartbeat arrays
60
- - `monitorCount`: Number of monitors
61
- - `totalHeartbeatCount`: Total number of heartbeats across all monitors
67
+ - Node.js (v18 or higher)
68
+ - An Uptime Kuma instance (version 2)
62
69
 
63
- ### getSettings
64
- Retrieves the current Uptime Kuma server settings.
70
+ ### Authentication Methods
65
71
 
66
- - **Input**: None
67
- - **Output**: Settings object containing:
68
- - `serverTimezone`: Server timezone setting
69
- - `checkUpdate`: Whether to check for updates
70
- - `searchEngineIndex`: Search engine indexing setting
71
- - `entryPage`: Entry page configuration
72
- - `dnsCache`: DNS cache setting
73
- - `keepDataPeriodDays`: Data retention period in days
74
- - `tlsExpiryNotifyDays`: TLS expiry notification days
75
- - `trustProxy`: Trust proxy setting
76
- - `nscd`: NSCD setting
77
- - `disableAuth`: Authentication disabled status
78
- - `primaryBaseURL`: Primary base URL (optional)
72
+ This MCP server supports three authentication methods for connecting to your Uptime Kuma instance.
79
73
 
80
- ## Usage Notes
74
+ > **A note about 2FA:** If you're using 2FA, it's recommended that you go straight for the JWT authentication approach and avoid username/password authentication, as your 2FA token will need to be refreshed every time you initialize the MCP server.
75
+ >
76
+ > Even with the JWT method, you may run into issues with token expiry, but as of this writing the JWT returned by Uptime Kuma does not appear to expire.
81
77
 
82
- - **Monitors** contain configuration information (URLs, check intervals, notification settings, etc.)
83
- - **Heartbeats** contain actual status data (up/down status, response times, timestamps, etc.)
84
- - To check if something is **up or down**, use the heartbeat tools, not the monitor tools
85
- - Use **getMonitorSummary** for a quick overview of all monitors and their current status
86
- - By default, monitor tools return only essential fields. Set `includeAdditionalFields=true` to get all available data
87
- - By default, heartbeat tools return only the most recent heartbeat. Use `maxHeartbeats` to retrieve more historical data
78
+ #### 1. Anonymous Authentication
79
+ If your Uptime Kuma instance has authentication disabled, you can connect without providing any credentials. Only the `UPTIME_KUMA_URL` environment variable is required.
88
80
 
89
- ## Prerequisites
81
+ - **Required Variables:**
82
+ - `UPTIME_KUMA_URL`: The URL of your Uptime Kuma instance
90
83
 
91
- - Node.js (v18 or higher)
92
- - An Uptime Kuma instance with credentials
93
- - Environment variables for configuration (see Configuration section)
84
+ #### 2. Username/Password Authentication
85
+ Standard authentication using your Uptime Kuma credentials. This method uses the `UPTIME_KUMA_USERNAME` and `UPTIME_KUMA_PASSWORD` environment variables.
94
86
 
95
- ## Production Usage
87
+ - **Required Variables:**
88
+ - `UPTIME_KUMA_URL`: The URL of your Uptime Kuma instance
89
+ - `UPTIME_KUMA_USERNAME`: Your Uptime Kuma username
90
+ - `UPTIME_KUMA_PASSWORD`: Your Uptime Kuma password
91
+
92
+ - **Optional Variable:**
93
+ - `UPTIME_KUMA_2FA_TOKEN`: Your 2FA token (only required if two-factor authentication is enabled on your account)
96
94
 
97
- This MCP server supports both stdio and streamable HTTP transports.
95
+ #### 3. JWT Token Authentication
96
+ Token-based authentication using a JWT token from Uptime Kuma. This method uses the `UPTIME_KUMA_JWT_TOKEN` environment variable and takes precedence over username/password if both are provided.
98
97
 
99
- ### For the stdio Transport
98
+ - **Required Variables:**
99
+ - `UPTIME_KUMA_URL`: The URL of your Uptime Kuma instance
100
+ - `UPTIME_KUMA_JWT_TOKEN`: Your JWT token (see instructions below for how to obtain it)
100
101
 
101
- For Claude Code, VS Code, or other MCP clients, you can configure the server as follows:
102
+ ##### How to Find Your JWT Token:
103
+
104
+ 1. Log into your Uptime Kuma instance in your web browser
105
+ 2. Open your browser's Developer Tools (F12 or right-click → Inspect)
106
+ 3. Navigate to the **Storage** tab (Firefox) or **Application** tab (Chrome/Edge)
107
+ 4. Under **Local Storage** or **Session Storage**, find your Uptime Kuma domain
108
+ 5. Look for a key named `token` - the value is your JWT token (it should start with 'ey...')
109
+ 6. Copy the token value and use it as `UPTIME_KUMA_JWT_TOKEN`
110
+
111
+ ### Setting up mcp-uptime-kuma using the stdio transport
112
+
113
+ For many MCP clients, you can configure the server as follows:
102
114
 
103
115
  **Option 1: Username/Password Authentication**
104
116
  ```json
@@ -110,7 +122,7 @@ For Claude Code, VS Code, or other MCP clients, you can configure the server as
110
122
  "env": {
111
123
  "UPTIME_KUMA_URL": "http://your-uptime-kuma-instance:3001",
112
124
  "UPTIME_KUMA_USERNAME": "your_username",
113
- "UPTIME_KUMA_PASSWORD": "your_password"
125
+ "UPTIME_KUMA_PASSWORD": "your_password",
114
126
  }
115
127
  }
116
128
  }
@@ -133,11 +145,11 @@ For Claude Code, VS Code, or other MCP clients, you can configure the server as
133
145
  }
134
146
  ```
135
147
 
136
- See the [Configuration](#create-the-environment-configuration) section below for instructions on how to find your JWT token.
148
+ See the [How to Find Your JWT Token](#how-to-find-your-jwt-token) section for instructions on how to obtain it.
137
149
 
138
150
  If you're using LibreChat (librechat.yaml), you can configure it like this:
139
151
 
140
- **Using Username/Password:**
152
+ **Option 1: Username/Password Authentication (LibreChat):**
141
153
  ```yaml
142
154
  mcpServers:
143
155
  uptime-kuma:
@@ -145,107 +157,156 @@ mcpServers:
145
157
  args: ["-y", "@davidfuchs/mcp-uptime-kuma"]
146
158
  customUserVars:
147
159
  UPTIME_KUMA_URL:
148
- title: "Uptime Kuma URL"
149
- description: "The URL to log into Uptime Kuma."
150
- UPTIME_KUMA_USERNAME:
151
- title: "Uptime Kuma Username"
152
- description: "The username to log into Uptime Kuma."
153
- UPTIME_KUMA_PASSWORD:
154
- title: "Uptime Kuma Password"
155
- description: "The password to log into Uptime Kuma."
156
- env:
157
- UPTIME_KUMA_URL: "{{UPTIME_KUMA_URL}}"
158
- UPTIME_KUMA_USERNAME: "{{UPTIME_KUMA_USERNAME}}"
159
- UPTIME_KUMA_PASSWORD: "{{UPTIME_KUMA_PASSWORD}}"
160
+ title: "Uptime Kuma URL"
161
+ description: "The URL to log into Uptime Kuma."
162
+ UPTIME_KUMA_USERNAME:
163
+ title: "Uptime Kuma Username"
164
+ description: "The username to log into Uptime Kuma."
165
+ UPTIME_KUMA_PASSWORD:
166
+ title: "Uptime Kuma Password"
167
+ description: "The password to log into Uptime Kuma."
168
+ env:
169
+ UPTIME_KUMA_URL: "{{UPTIME_KUMA_URL}}"
170
+ UPTIME_KUMA_USERNAME: "{{UPTIME_KUMA_USERNAME}}"
171
+ UPTIME_KUMA_PASSWORD: "{{UPTIME_KUMA_PASSWORD}}"
160
172
  serverInstructions: true
161
- startup: false
173
+ startup: false
162
174
  ```
163
175
 
164
- **Using JWT Token:**
176
+ **Option 2: JWT Token Authentication (LibreChat)**
165
177
  ```yaml
166
178
  mcpServers:
167
- uptime-kuma:
168
- command: npx
169
- args: ["-y", "@davidfuchs/mcp-uptime-kuma"]
170
- customUserVars:
171
- UPTIME_KUMA_URL:
172
- title: "Uptime Kuma URL"
173
- description: "The URL to log into Uptime Kuma."
174
- UPTIME_KUMA_JWT_TOKEN:
175
- title: "Uptime Kuma JWT Token"
176
- description: "JWT token for Uptime Kuma authentication."
179
+ uptime-kuma:
180
+ command: npx
181
+ args: ["-y", "@davidfuchs/mcp-uptime-kuma"]
182
+ customUserVars:
183
+ UPTIME_KUMA_URL:
184
+ title: "Uptime Kuma URL"
185
+ description: "The URL to log into Uptime Kuma."
186
+ UPTIME_KUMA_JWT_TOKEN:
187
+ title: "Uptime Kuma JWT Token"
188
+ description: "JWT token for Uptime Kuma authentication."
177
189
  env:
178
- UPTIME_KUMA_URL: "{{UPTIME_KUMA_URL}}"
179
- UPTIME_KUMA_JWT_TOKEN: "{{UPTIME_KUMA_JWT_TOKEN}}"
190
+ UPTIME_KUMA_URL: "{{UPTIME_KUMA_URL}}"
191
+ UPTIME_KUMA_JWT_TOKEN: "{{UPTIME_KUMA_JWT_TOKEN}}"
180
192
  serverInstructions: true
181
- startup: false
193
+ startup: false
182
194
  ```
183
195
 
184
- See the [Configuration](#create-the-environment-configuration) section below for instructions on how to find your JWT token.
196
+ See the [How to Find Your JWT Token](#how-to-find-your-jwt-token) section for instructions on how to obtain it.
185
197
 
186
198
  If you're the only one using the LibreChat server, you can remove `customUserVars` and set the environment variables directly in the `env` section. You can also remove `startup: false` - that's only in there because without it, LibreChat tries to start the mcp-uptime-kuma MCP server immediately on startup, which fails because the user-provided credentials aren't available yet.
187
199
 
188
- ### For the Streamable HTTP Transport
200
+ ### Setting up mcp-uptime-kuma using the streamable HTTP transport
189
201
 
190
202
  The recommended way to run the MCP server using streamable HTTP is to run it as a Docker container.
191
203
 
192
- A docker-compose file is provided in the Github repository. Grab it, update the included environment variables as needed for your Uptime Kuma deployment, and run:
204
+ A [docker-compose.yml](docker-compose.yml) file is provided in the Github repository. Download it and update the included environment variables as needed for your Uptime Kuma deployment, and run:
193
205
 
194
206
  `docker compose up -d`
195
207
 
196
- The MCP endpoint will be available on your Docker host at port 3000 (configurable via `PORT` environment variable).
208
+ The MCP endpoint will be available on your Docker host at port 3000 (configurable via `PORT` environment variable). If you'd prefer to run it directly on your host machine, see the Development Usage section below.
197
209
 
198
- If you'd prefer to run it directly on your host machine, see the Development Usage section below.
210
+ ## Detailed Tool Descriptions
199
211
 
200
- ## Development Usage
212
+ ### getMonitorSummary
213
+ Retrieves a summarized list of all monitors with essential information and their current status.
201
214
 
202
- To run locally, clone the repository and follow these steps:
215
+ - **Input**:
216
+ - `keywords` (string, optional): Space-separated keywords to filter monitors by pathName (case-insensitive). All keywords must match for a monitor to be included.
217
+ - **Output**: Array of monitor summaries with:
218
+ - Monitor ID, name, pathName
219
+ - Active and maintenance state
220
+ - Most recent heartbeat status (0=DOWN, 1=UP, 2=PENDING, 3=MAINTENANCE)
221
+ - Status message from the most recent heartbeat
222
+ - Uptime percentages for different periods (24h, 720h, 1y)
223
+ - Average ping in milliseconds
224
+ - Total count of matching monitors
203
225
 
204
- ### Install dependencies
226
+ ### getMonitor
227
+ Retrieves detailed information about a specific monitor by its ID.
205
228
 
206
- ```bash
207
- npm install
208
- ```
229
+ - **Input**:
230
+ - `monitorID` (number): The ID of the monitor to retrieve
231
+ - `includeAdditionalFields` (boolean, optional): Include all additional fields from Uptime Kuma (default: false)
232
+ - **Output**: Monitor configuration object with details like URL, type, check interval, notification settings, etc.
209
233
 
210
- ### Create the environment configuration
234
+ ### listMonitors
235
+ Retrieves the full list of all monitors the user has access to.
236
+
237
+ - **Input**:
238
+ - `includeAdditionalFields` (boolean, optional): Include all additional fields from Uptime Kuma (default: false)
239
+ - **Output**: Array of monitor objects with count
240
+
241
+ ### getHeartbeats
242
+ Retrieves heartbeats (status checks) for a specific monitor.
243
+
244
+ - **Input**:
245
+ - `monitorID` (number): The ID of the monitor to get heartbeats for
246
+ - `maxHeartbeats` (number, optional): Maximum number of most recent heartbeats to return (1-100). Default: 1
247
+ - **Output**: Object containing:
248
+ - `monitorID`: The monitor ID
249
+ - `heartbeats`: Array of heartbeat objects with status, response time, timestamps, etc.
250
+ - `count`: Number of heartbeats returned
211
251
 
212
- Configure the required environment variables either directly in your environment, or by creating a `.env` file in the project root.
252
+ ### listHeartbeats
253
+ Retrieves the heartbeats for all monitors.
213
254
 
214
- These are the required variables:
255
+ - **Input**:
256
+ - `maxHeartbeats` (number, optional): Maximum number of most recent heartbeats per monitor (1-100). Default: 1
257
+ - **Output**: Object containing:
258
+ - `heartbeats`: Map of monitor IDs to their heartbeat arrays
259
+ - `monitorCount`: Number of monitors
260
+ - `totalHeartbeatCount`: Total number of heartbeats across all monitors
261
+
262
+ ### getSettings
263
+ Retrieves the current Uptime Kuma server settings.
264
+
265
+ - **Input**: None
266
+ - **Output**: Settings object containing:
267
+ - `serverTimezone`: Server timezone setting
268
+ - `checkUpdate`: Whether to check for updates
269
+ - `searchEngineIndex`: Search engine indexing setting
270
+ - `entryPage`: Entry page configuration
271
+ - `dnsCache`: DNS cache setting
272
+ - `keepDataPeriodDays`: Data retention period in days
273
+ - `tlsExpiryNotifyDays`: TLS expiry notification days
274
+ - `trustProxy`: Trust proxy setting
275
+ - `nscd`: NSCD setting
276
+ - `disableAuth`: Authentication disabled status
277
+ - `primaryBaseURL`: Primary base URL (optional)
215
278
 
216
- ```env
217
- UPTIME_KUMA_URL=http://your-uptime-kuma-instance:3001
279
+ ### pauseMonitor
280
+ Pauses a monitor, stopping it from performing checks. The monitor will remain in the system but will not send notifications or collect data until resumed.
218
281
 
219
- # Authentication - Choose ONE of the following methods:
282
+ - **Input**:
283
+ - `monitorID` (number): The ID of the monitor to pause
284
+ - **Output**: Object containing:
285
+ - `ok`: Boolean indicating success
286
+ - `msg`: Optional status message
220
287
 
221
- # Method 1: Username/Password (with optional 2FA)
222
- UPTIME_KUMA_USERNAME=your_username
223
- UPTIME_KUMA_PASSWORD=your_password
224
- UPTIME_KUMA_2FA_TOKEN=your_2fa_token # Optional, only if 2FA is enabled
288
+ ### resumeMonitor
289
+ Resumes a paused monitor, restarting its checks and notifications.
225
290
 
226
- # Method 2: JWT Token
227
- UPTIME_KUMA_JWT_TOKEN=your_jwt_token # Use this for token-based authentication
291
+ - **Input**:
292
+ - `monitorID` (number): The ID of the monitor to resume
293
+ - **Output**: Object containing:
294
+ - `ok`: Boolean indicating success
295
+ - `msg`: Optional status message
228
296
 
229
- # Optional settings
230
- PORT=3000 # Only for HTTP transport (default: 3000)
231
- ```
297
+ ## Developing
232
298
 
233
- **Authentication Methods:**
234
- - **Username/Password**: Standard authentication using your Uptime Kuma credentials. If 2FA is enabled on your account, also provide `UPTIME_KUMA_2FA_TOKEN`.
235
- - **JWT Token**: If you have a JWT token from Uptime Kuma, you can use `UPTIME_KUMA_JWT_TOKEN` instead of username/password. This takes precedence if both are provided.
299
+ To run locally, clone the repository and follow these steps:
236
300
 
237
- **How to Find Your JWT Token:**
301
+ ### Install dependencies
238
302
 
239
- To obtain your JWT token from an existing Uptime Kuma session:
303
+ ```bash
304
+ npm install
305
+ ```
240
306
 
241
- 1. Log into your Uptime Kuma instance in your web browser
242
- 2. Open your browser's Developer Tools (F12 or right-click → Inspect)
243
- 3. Navigate to the **Storage** tab (Firefox) or **Application** tab (Chrome/Edge)
244
- 4. Under **Local Storage** or **Session Storage**, find your Uptime Kuma domain
245
- 5. Look for a key named `token` - the value is your JWT token (it should start with 'ey...')
246
- 6. Copy the token value and use it as `UPTIME_KUMA_JWT_TOKEN`
307
+ ### Create the environment configuration
247
308
 
248
- Note: The JWT token is tied to your session and may expire based on your Uptime Kuma configuration.
309
+ Copy [.env.example](.env.example) to `.env` and configure the required environment variables for your Uptime Kuma instance (URL and authentication method).
249
310
 
250
311
  ## Building
251
312
 
@@ -323,13 +384,18 @@ mcp-uptime-kuma/
323
384
  │ ├── index.ts # Main entry point with transport selection
324
385
  │ ├── server.ts # Core MCP server configuration with tools
325
386
  │ ├── uptime-kuma-client.ts # WebSocket client for Uptime Kuma API
326
- └── types.ts # TypeScript type definitions
327
- ├── dist/ # Compiled JavaScript (generated)
387
+ ├── types.ts # TypeScript type definitions
388
+ │ └── version.ts # Runtime version information
389
+ ├── .github/ # GitHub workflows and configurations
390
+ ├── .vscode/ # VS Code workspace settings
328
391
  ├── docker-compose.yml # Docker Compose configuration
329
392
  ├── Dockerfile # Docker image definition
393
+ ├── .dockerignore # Docker ignore file
394
+ ├── .env.example # Example environment configuration
395
+ ├── .gitignore # Git ignore file
330
396
  ├── package.json # Project dependencies and scripts
397
+ ├── package-lock.json # Locked dependency versions
331
398
  ├── tsconfig.json # TypeScript configuration
332
- ├── .env # Environment configuration (create this)
333
399
  ├── LICENSE # License file
334
400
  └── README.md # This file
335
401
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAyJvB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AA4KvB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -3,13 +3,14 @@ import 'dotenv/config';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
5
5
  import express from 'express';
6
+ import rateLimit from 'express-rate-limit';
6
7
  import { createServer } from './server.js';
7
8
  /**
8
9
  * Main entry point for @davidfuchs/mcp-uptime-kuma
9
10
  * Supports both stdio (default) and streamable-http transports via CLI flags
10
11
  */
11
12
  // Validate required environment variables
12
- function validateEnvironment(readWriteEnabled) {
13
+ function validateEnvironment() {
13
14
  const url = process.env.UPTIME_KUMA_URL;
14
15
  const username = process.env.UPTIME_KUMA_USERNAME;
15
16
  const password = process.env.UPTIME_KUMA_PASSWORD;
@@ -19,13 +20,12 @@ function validateEnvironment(readWriteEnabled) {
19
20
  console.error('Error: UPTIME_KUMA_URL environment variable is required');
20
21
  process.exit(1);
21
22
  }
22
- return { url, username, password, token, jwtToken, readWriteEnabled };
23
+ return { url, username, password, token, jwtToken };
23
24
  }
24
25
  // Parse command-line arguments
25
26
  function parseArgs() {
26
27
  const args = process.argv.slice(2);
27
28
  let transport = 'stdio';
28
- let readWriteEnabled = false;
29
29
  for (let i = 0; i < args.length; i++) {
30
30
  if (args[i] === '-t' || args[i] === '--transport') {
31
31
  const value = args[i + 1];
@@ -38,40 +38,35 @@ function parseArgs() {
38
38
  process.exit(1);
39
39
  }
40
40
  }
41
- else if (args[i] === '--read-write') {
42
- readWriteEnabled = true;
43
- }
44
41
  else if (args[i] === '-h' || args[i] === '--help') {
45
42
  console.log(`Usage: mcp-uptime-kuma [options]
46
43
 
47
44
  Options:
48
45
  -t, --transport <type> Transport type: 'stdio' (default) or 'streamable-http'
49
- --read-write Enable read-write operations (default: read-only)
50
46
  -h, --help Show this help message
51
47
 
52
48
  Examples:
53
- mcp-uptime-kuma # Run with stdio transport (read-only)
54
- mcp-uptime-kuma --read-write # Run with stdio transport (read-write enabled)
55
- mcp-uptime-kuma -t stdio # Run with stdio transport (read-only)
56
- mcp-uptime-kuma -t streamable-http # Run with streamable HTTP transport (read-only, port 3000)
57
- mcp-uptime-kuma -t streamable-http --read-write # Run HTTP with read-write enabled
49
+ mcp-uptime-kuma # Run with stdio transport
50
+ mcp-uptime-kuma -t stdio # Run with stdio transport
51
+ mcp-uptime-kuma -t streamable-http # Run with streamable HTTP transport (port 3000)
58
52
  PORT=8080 mcp-uptime-kuma -t streamable-http # Run HTTP on custom port
59
53
  `);
60
54
  process.exit(0);
61
55
  }
62
56
  }
63
- return { transport, readWriteEnabled };
57
+ return { transport };
64
58
  }
65
59
  // Run with the stdio transport
66
60
  async function runStdio(config) {
67
61
  try {
68
- const server = await createServer(config);
62
+ const { server, authenticateClient } = await createServer(config);
69
63
  const transport = new StdioServerTransport();
70
64
  await server.connect(transport);
71
- console.error('mcp-uptime-kuma server running on stdio transport');
65
+ // Now authenticate after transport is connected so we can log properly
66
+ await authenticateClient();
72
67
  }
73
68
  catch (error) {
74
- console.error('Fatal error in stdio transport:', error);
69
+ process.stderr.write(`Fatal error in stdio transport: ${error}\n`);
75
70
  process.exit(1);
76
71
  }
77
72
  }
@@ -79,8 +74,21 @@ async function runStdio(config) {
79
74
  async function runHttp(config) {
80
75
  const app = express();
81
76
  app.use(express.json());
77
+ // Rate limiting configuration
78
+ const limiter = rateLimit({
79
+ windowMs: 15 * 60 * 1000, // 15 minutes
80
+ max: 100, // Limit each IP to 100 requests per windowMs
81
+ standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
82
+ legacyHeaders: false, // Disable the `X-RateLimit-*` headers
83
+ message: 'Too many requests from this IP, please try again later.',
84
+ });
85
+ // Apply rate limiter to all routes
86
+ app.use(limiter);
82
87
  // Create the MCP server once (reused across requests)
83
- const server = await createServer(config);
88
+ const { server, authenticateClient } = await createServer(config);
89
+ // For HTTP transport, we need to connect once to authenticate
90
+ // Create a temporary transport just for authentication
91
+ let authenticated = false;
84
92
  // Handle MCP requests
85
93
  app.post('/mcp', async (req, res) => {
86
94
  try {
@@ -93,6 +101,11 @@ async function runHttp(config) {
93
101
  transport.close();
94
102
  });
95
103
  await server.connect(transport);
104
+ // Authenticate on first request
105
+ if (!authenticated) {
106
+ await authenticateClient();
107
+ authenticated = true;
108
+ }
96
109
  await transport.handleRequest(req, res, req.body);
97
110
  }
98
111
  catch (error) {
@@ -118,14 +131,14 @@ async function runHttp(config) {
118
131
  console.log(`mcp-uptime-kuma server running on http://localhost:${port}/mcp`);
119
132
  console.log(`Health check available at http://localhost:${port}/health`);
120
133
  }).on('error', (error) => {
121
- console.error('Server error:', error);
134
+ process.stderr.write(`Server error: ${error}\n`);
122
135
  process.exit(1);
123
136
  });
124
137
  }
125
138
  // Main entry point
126
139
  async function main() {
127
- const { transport, readWriteEnabled } = parseArgs();
128
- const config = validateEnvironment(readWriteEnabled);
140
+ const { transport } = parseArgs();
141
+ const config = validateEnvironment();
129
142
  if (transport === 'stdio') {
130
143
  await runStdio(config);
131
144
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,7 +1,13 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { UptimeKumaClient } from './uptime-kuma-client.js';
2
3
  import type { UptimeKumaConfig } from './types.js';
3
4
  /**
4
5
  * Creates and configures the MCP server with tools, resources, and prompts
6
+ * Note: Authentication must be done separately after connecting the transport
5
7
  */
6
- export declare function createServer(config: UptimeKumaConfig): Promise<McpServer>;
8
+ export declare function createServer(config: UptimeKumaConfig): Promise<{
9
+ server: McpServer;
10
+ client: UptimeKumaClient;
11
+ authenticateClient: () => Promise<void>;
12
+ }>;
7
13
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAqV/E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAEhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAmb9J"}