instatus-mcp 1.0.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 +164 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +717 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# instatus-mcp
|
|
2
|
+
|
|
3
|
+
MCP (Model Context Protocol) server for [Instatus](https://instatus.com) - manage status pages, incidents, components, and more via Claude Code or any MCP-compatible client.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Status Pages**: Create, list, update, and delete status pages
|
|
8
|
+
- **Components**: Manage service components and their statuses
|
|
9
|
+
- **Incidents**: Create and manage incidents with status updates
|
|
10
|
+
- **Maintenances**: Schedule and manage planned maintenance windows
|
|
11
|
+
- **Subscribers**: Manage email subscribers for status updates
|
|
12
|
+
- **Metrics**: Track and visualize custom metrics with datapoints
|
|
13
|
+
- **Teammates**: Manage team member access to status pages
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g instatus-mcp
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Or run directly with npx:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx instatus-mcp
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
Set your Instatus API key as an environment variable:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
export INSTATUS_API_KEY="your-api-key-here"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
You can get your API key from [Instatus User Settings > Developer Settings](https://dashboard.instatus.com/developer).
|
|
36
|
+
|
|
37
|
+
### Claude Code Configuration
|
|
38
|
+
|
|
39
|
+
Add to your Claude Code MCP settings (`~/.claude/claude_desktop_config.json`):
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"mcpServers": {
|
|
44
|
+
"instatus": {
|
|
45
|
+
"command": "npx",
|
|
46
|
+
"args": ["instatus-mcp"],
|
|
47
|
+
"env": {
|
|
48
|
+
"INSTATUS_API_KEY": "your-api-key-here"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Available Tools
|
|
56
|
+
|
|
57
|
+
### User Profile
|
|
58
|
+
| Tool | Description |
|
|
59
|
+
|------|-------------|
|
|
60
|
+
| `instatus_get_user_profile` | Get the authenticated user's profile |
|
|
61
|
+
|
|
62
|
+
### Status Pages
|
|
63
|
+
| Tool | Description |
|
|
64
|
+
|------|-------------|
|
|
65
|
+
| `instatus_list_status_pages` | List all status pages |
|
|
66
|
+
| `instatus_create_status_page` | Create a new status page |
|
|
67
|
+
| `instatus_update_status_page` | Update an existing status page |
|
|
68
|
+
| `instatus_delete_status_page` | Delete a status page |
|
|
69
|
+
|
|
70
|
+
### Components
|
|
71
|
+
| Tool | Description |
|
|
72
|
+
|------|-------------|
|
|
73
|
+
| `instatus_list_components` | List all components for a status page |
|
|
74
|
+
| `instatus_get_component` | Get a specific component |
|
|
75
|
+
| `instatus_create_component` | Create a new component |
|
|
76
|
+
| `instatus_update_component` | Update an existing component |
|
|
77
|
+
| `instatus_delete_component` | Delete a component |
|
|
78
|
+
|
|
79
|
+
### Incidents
|
|
80
|
+
| Tool | Description |
|
|
81
|
+
|------|-------------|
|
|
82
|
+
| `instatus_list_incidents` | List all incidents for a status page |
|
|
83
|
+
| `instatus_get_incident` | Get a specific incident |
|
|
84
|
+
| `instatus_create_incident` | Create a new incident |
|
|
85
|
+
| `instatus_create_incident_from_template` | Create an incident from a template |
|
|
86
|
+
| `instatus_update_incident` | Update an existing incident |
|
|
87
|
+
| `instatus_delete_incident` | Delete an incident |
|
|
88
|
+
|
|
89
|
+
### Maintenances
|
|
90
|
+
| Tool | Description |
|
|
91
|
+
|------|-------------|
|
|
92
|
+
| `instatus_list_maintenances` | List all scheduled maintenances |
|
|
93
|
+
| `instatus_get_maintenance` | Get a specific maintenance |
|
|
94
|
+
| `instatus_create_maintenance` | Create a scheduled maintenance |
|
|
95
|
+
| `instatus_update_maintenance` | Update a scheduled maintenance |
|
|
96
|
+
| `instatus_delete_maintenance` | Delete a scheduled maintenance |
|
|
97
|
+
|
|
98
|
+
### Subscribers
|
|
99
|
+
| Tool | Description |
|
|
100
|
+
|------|-------------|
|
|
101
|
+
| `instatus_list_subscribers` | List all subscribers |
|
|
102
|
+
| `instatus_add_subscriber` | Add a new subscriber |
|
|
103
|
+
| `instatus_remove_subscriber` | Remove a subscriber |
|
|
104
|
+
|
|
105
|
+
### Metrics
|
|
106
|
+
| Tool | Description |
|
|
107
|
+
|------|-------------|
|
|
108
|
+
| `instatus_list_metrics` | List all metrics |
|
|
109
|
+
| `instatus_get_metric` | Get a specific metric with data |
|
|
110
|
+
| `instatus_create_metric` | Create a new metric |
|
|
111
|
+
| `instatus_update_metric` | Update a metric |
|
|
112
|
+
| `instatus_delete_metric` | Delete a metric |
|
|
113
|
+
| `instatus_add_metric_datapoint` | Add a single datapoint |
|
|
114
|
+
| `instatus_add_metric_datapoints` | Add multiple datapoints |
|
|
115
|
+
| `instatus_delete_metric_datapoints` | Delete all datapoints from a metric |
|
|
116
|
+
|
|
117
|
+
### Teammates
|
|
118
|
+
| Tool | Description |
|
|
119
|
+
|------|-------------|
|
|
120
|
+
| `instatus_list_teammates` | List all team members |
|
|
121
|
+
| `instatus_add_teammate` | Add a team member |
|
|
122
|
+
| `instatus_remove_teammate` | Remove a team member |
|
|
123
|
+
|
|
124
|
+
## Component Status Values
|
|
125
|
+
|
|
126
|
+
- `OPERATIONAL` - Component is functioning normally
|
|
127
|
+
- `UNDERMAINTENANCE` - Component is under maintenance
|
|
128
|
+
- `DEGRADEDPERFORMANCE` - Component has degraded performance
|
|
129
|
+
- `PARTIALOUTAGE` - Component has partial outage
|
|
130
|
+
- `MAJOROUTAGE` - Component has major outage
|
|
131
|
+
|
|
132
|
+
## Incident Status Values
|
|
133
|
+
|
|
134
|
+
- `INVESTIGATING` - Investigating the issue
|
|
135
|
+
- `IDENTIFIED` - Issue has been identified
|
|
136
|
+
- `MONITORING` - Monitoring the fix
|
|
137
|
+
- `RESOLVED` - Issue has been resolved
|
|
138
|
+
|
|
139
|
+
## Maintenance Status Values
|
|
140
|
+
|
|
141
|
+
- `NOTSTARTEDYET` - Maintenance hasn't started
|
|
142
|
+
- `INPROGRESS` - Maintenance is in progress
|
|
143
|
+
- `COMPLETED` - Maintenance is complete
|
|
144
|
+
|
|
145
|
+
## Development
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Clone the repository
|
|
149
|
+
git clone https://github.com/TechnicalRhino/instatus-mcp.git
|
|
150
|
+
cd instatus-mcp
|
|
151
|
+
|
|
152
|
+
# Install dependencies
|
|
153
|
+
npm install
|
|
154
|
+
|
|
155
|
+
# Build
|
|
156
|
+
npm run build
|
|
157
|
+
|
|
158
|
+
# Run in development mode
|
|
159
|
+
npm run dev
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## License
|
|
163
|
+
|
|
164
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,717 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
// Environment configuration
|
|
6
|
+
const INSTATUS_API_KEY = process.env.INSTATUS_API_KEY || "";
|
|
7
|
+
if (!INSTATUS_API_KEY) {
|
|
8
|
+
console.error("Warning: INSTATUS_API_KEY environment variable is not set");
|
|
9
|
+
}
|
|
10
|
+
// Instatus API client
|
|
11
|
+
class InstatusClient {
|
|
12
|
+
baseUrl = "https://api.instatus.com";
|
|
13
|
+
apiKey;
|
|
14
|
+
constructor(apiKey) {
|
|
15
|
+
this.apiKey = apiKey;
|
|
16
|
+
}
|
|
17
|
+
async request(method, endpoint, body) {
|
|
18
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
19
|
+
const headers = {
|
|
20
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
21
|
+
"Content-Type": "application/json",
|
|
22
|
+
};
|
|
23
|
+
const response = await fetch(url, {
|
|
24
|
+
method,
|
|
25
|
+
headers,
|
|
26
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
27
|
+
});
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
const errorText = await response.text();
|
|
30
|
+
throw new Error(`Instatus API error (${response.status}): ${errorText}`);
|
|
31
|
+
}
|
|
32
|
+
return response.json();
|
|
33
|
+
}
|
|
34
|
+
// User Profile
|
|
35
|
+
async getUserProfile() {
|
|
36
|
+
return this.request("GET", "/v1/user");
|
|
37
|
+
}
|
|
38
|
+
// Status Pages
|
|
39
|
+
async listStatusPages(page = 1, perPage = 50) {
|
|
40
|
+
return this.request("GET", `/v2/pages?page=${page}&per_page=${perPage}`);
|
|
41
|
+
}
|
|
42
|
+
async createStatusPage(data) {
|
|
43
|
+
return this.request("POST", "/v1/pages", data);
|
|
44
|
+
}
|
|
45
|
+
async updateStatusPage(pageId, data) {
|
|
46
|
+
return this.request("PUT", `/v2/${pageId}`, data);
|
|
47
|
+
}
|
|
48
|
+
async deleteStatusPage(pageId) {
|
|
49
|
+
return this.request("DELETE", `/v2/${pageId}`);
|
|
50
|
+
}
|
|
51
|
+
// Components
|
|
52
|
+
async listComponents(pageId, page = 1, perPage = 50) {
|
|
53
|
+
return this.request("GET", `/v2/${pageId}/components?page=${page}&per_page=${perPage}`);
|
|
54
|
+
}
|
|
55
|
+
async getComponent(pageId, componentId) {
|
|
56
|
+
return this.request("GET", `/v2/${pageId}/components/${componentId}`);
|
|
57
|
+
}
|
|
58
|
+
async createComponent(pageId, data) {
|
|
59
|
+
return this.request("POST", `/v1/${pageId}/components`, data);
|
|
60
|
+
}
|
|
61
|
+
async updateComponent(pageId, componentId, data) {
|
|
62
|
+
return this.request("PUT", `/v2/${pageId}/components/${componentId}`, data);
|
|
63
|
+
}
|
|
64
|
+
async deleteComponent(pageId, componentId) {
|
|
65
|
+
return this.request("DELETE", `/v1/${pageId}/components/${componentId}`);
|
|
66
|
+
}
|
|
67
|
+
// Incidents
|
|
68
|
+
async listIncidents(pageId, page = 1, perPage = 50, status) {
|
|
69
|
+
let url = `/v1/${pageId}/incidents?page=${page}&per_page=${perPage}`;
|
|
70
|
+
if (status)
|
|
71
|
+
url += `&status=${status}`;
|
|
72
|
+
return this.request("GET", url);
|
|
73
|
+
}
|
|
74
|
+
async getIncident(pageId, incidentId) {
|
|
75
|
+
return this.request("GET", `/v1/${pageId}/incidents/${incidentId}`);
|
|
76
|
+
}
|
|
77
|
+
async createIncident(pageId, data) {
|
|
78
|
+
return this.request("POST", `/v1/${pageId}/incidents`, data);
|
|
79
|
+
}
|
|
80
|
+
async createIncidentFromTemplate(pageId, templateId) {
|
|
81
|
+
return this.request("POST", `/v1/${pageId}/incidents/${templateId}`);
|
|
82
|
+
}
|
|
83
|
+
async updateIncident(pageId, incidentId, data) {
|
|
84
|
+
return this.request("PUT", `/v1/${pageId}/incidents/${incidentId}`, data);
|
|
85
|
+
}
|
|
86
|
+
async deleteIncident(pageId, incidentId) {
|
|
87
|
+
return this.request("DELETE", `/v1/${pageId}/incidents/${incidentId}`);
|
|
88
|
+
}
|
|
89
|
+
// Maintenances
|
|
90
|
+
async listMaintenances(pageId, page = 1, perPage = 50) {
|
|
91
|
+
return this.request("GET", `/v2/${pageId}/maintenances?page=${page}&per_page=${perPage}`);
|
|
92
|
+
}
|
|
93
|
+
async getMaintenance(pageId, maintenanceId) {
|
|
94
|
+
return this.request("GET", `/v1/${pageId}/maintenances/${maintenanceId}`);
|
|
95
|
+
}
|
|
96
|
+
async createMaintenance(pageId, data) {
|
|
97
|
+
return this.request("POST", `/v1/${pageId}/maintenances`, data);
|
|
98
|
+
}
|
|
99
|
+
async updateMaintenance(pageId, maintenanceId, data) {
|
|
100
|
+
return this.request("PUT", `/v1/${pageId}/maintenances/${maintenanceId}`, data);
|
|
101
|
+
}
|
|
102
|
+
async deleteMaintenance(pageId, maintenanceId) {
|
|
103
|
+
return this.request("DELETE", `/v1/${pageId}/maintenances/${maintenanceId}`);
|
|
104
|
+
}
|
|
105
|
+
// Subscribers
|
|
106
|
+
async listSubscribers(pageId, page = 1, perPage = 50, search) {
|
|
107
|
+
let url = `/v2/${pageId}/subscribers?page=${page}&per_page=${perPage}`;
|
|
108
|
+
if (search)
|
|
109
|
+
url += `&search=${encodeURIComponent(search)}`;
|
|
110
|
+
return this.request("GET", url);
|
|
111
|
+
}
|
|
112
|
+
async addSubscriber(pageId, data) {
|
|
113
|
+
return this.request("POST", `/v1/${pageId}/subscribers`, data);
|
|
114
|
+
}
|
|
115
|
+
async removeSubscriber(pageId, subscriberId) {
|
|
116
|
+
return this.request("DELETE", `/v1/${pageId}/subscribers/${subscriberId}`);
|
|
117
|
+
}
|
|
118
|
+
// Metrics
|
|
119
|
+
async listMetrics(pageId, page = 1, perPage = 50) {
|
|
120
|
+
return this.request("GET", `/v1/${pageId}/metrics?page=${page}&per_page=${perPage}`);
|
|
121
|
+
}
|
|
122
|
+
async getMetric(pageId, metricId) {
|
|
123
|
+
return this.request("GET", `/v1/${pageId}/metrics/${metricId}`);
|
|
124
|
+
}
|
|
125
|
+
async createMetric(pageId, data) {
|
|
126
|
+
return this.request("POST", `/v1/${pageId}/metrics`, data);
|
|
127
|
+
}
|
|
128
|
+
async updateMetric(pageId, metricId, data) {
|
|
129
|
+
return this.request("PUT", `/v1/${pageId}/metrics/${metricId}`, data);
|
|
130
|
+
}
|
|
131
|
+
async deleteMetric(pageId, metricId) {
|
|
132
|
+
return this.request("DELETE", `/v1/${pageId}/metrics/${metricId}`);
|
|
133
|
+
}
|
|
134
|
+
async addMetricDatapoint(pageId, metricId, data) {
|
|
135
|
+
return this.request("POST", `/v1/${pageId}/metrics/${metricId}`, data);
|
|
136
|
+
}
|
|
137
|
+
async addMetricDatapoints(pageId, metricId, data) {
|
|
138
|
+
return this.request("POST", `/v1/${pageId}/metrics/${metricId}/data`, { data });
|
|
139
|
+
}
|
|
140
|
+
async deleteMetricDatapoints(pageId, metricId) {
|
|
141
|
+
return this.request("DELETE", `/v1/${pageId}/metrics/${metricId}/data`);
|
|
142
|
+
}
|
|
143
|
+
// Teammates
|
|
144
|
+
async listTeammates(pageId, page = 1, perPage = 50) {
|
|
145
|
+
return this.request("GET", `/v1/${pageId}/team?page=${page}&per_page=${perPage}`);
|
|
146
|
+
}
|
|
147
|
+
async addTeammate(pageId, email) {
|
|
148
|
+
return this.request("POST", `/v1/${pageId}/team`, { email });
|
|
149
|
+
}
|
|
150
|
+
async removeTeammate(pageId, memberId) {
|
|
151
|
+
return this.request("DELETE", `/v1/${pageId}/team/${memberId}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const client = new InstatusClient(INSTATUS_API_KEY);
|
|
155
|
+
// Create MCP server
|
|
156
|
+
const server = new McpServer({
|
|
157
|
+
name: "instatus-mcp",
|
|
158
|
+
version: "1.0.0",
|
|
159
|
+
});
|
|
160
|
+
// Helper to format response
|
|
161
|
+
function formatResponse(result) {
|
|
162
|
+
return {
|
|
163
|
+
content: [
|
|
164
|
+
{
|
|
165
|
+
type: "text",
|
|
166
|
+
text: JSON.stringify(result, null, 2),
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
function formatError(error) {
|
|
172
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
|
|
173
|
+
return {
|
|
174
|
+
content: [
|
|
175
|
+
{
|
|
176
|
+
type: "text",
|
|
177
|
+
text: `Error: ${errorMessage}`,
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
isError: true,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
// ==================== User Profile ====================
|
|
184
|
+
server.tool("instatus_get_user_profile", "Get the authenticated user's profile information", {}, async () => {
|
|
185
|
+
try {
|
|
186
|
+
const result = await client.getUserProfile();
|
|
187
|
+
return formatResponse(result);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
return formatError(error);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
// ==================== Status Pages ====================
|
|
194
|
+
server.tool("instatus_list_status_pages", "List all status pages", {
|
|
195
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
196
|
+
per_page: z.number().optional().describe("Results per page (default: 50, max: 100)"),
|
|
197
|
+
}, async ({ page, per_page }) => {
|
|
198
|
+
try {
|
|
199
|
+
const result = await client.listStatusPages(page, per_page);
|
|
200
|
+
return formatResponse(result);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
return formatError(error);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
server.tool("instatus_create_status_page", "Create a new status page", {
|
|
207
|
+
email: z.string().describe("Email address for the status page"),
|
|
208
|
+
name: z.string().describe("Name of the status page"),
|
|
209
|
+
subdomain: z.string().describe("Subdomain for the status page (e.g., 'mycompany' for mycompany.instatus.com)"),
|
|
210
|
+
components: z.array(z.string()).optional().describe("Array of initial component names"),
|
|
211
|
+
logoUrl: z.string().optional().describe("URL for the logo image"),
|
|
212
|
+
websiteUrl: z.string().optional().describe("Company website URL"),
|
|
213
|
+
language: z.string().optional().describe("Language code (e.g., 'en')"),
|
|
214
|
+
brandColor: z.string().optional().describe("Brand color hex code"),
|
|
215
|
+
}, async ({ email, name, subdomain, components, logoUrl, websiteUrl, language, brandColor }) => {
|
|
216
|
+
try {
|
|
217
|
+
const result = await client.createStatusPage({
|
|
218
|
+
email,
|
|
219
|
+
name,
|
|
220
|
+
subdomain,
|
|
221
|
+
components,
|
|
222
|
+
logoUrl,
|
|
223
|
+
websiteUrl,
|
|
224
|
+
language,
|
|
225
|
+
brandColor,
|
|
226
|
+
});
|
|
227
|
+
return formatResponse(result);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
return formatError(error);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
server.tool("instatus_update_status_page", "Update an existing status page", {
|
|
234
|
+
page_id: z.string().describe("The ID of the status page to update"),
|
|
235
|
+
name: z.string().optional().describe("New name for the status page"),
|
|
236
|
+
logoUrl: z.string().optional().describe("URL for the logo image"),
|
|
237
|
+
websiteUrl: z.string().optional().describe("Company website URL"),
|
|
238
|
+
language: z.string().optional().describe("Language code"),
|
|
239
|
+
brandColor: z.string().optional().describe("Brand color hex code"),
|
|
240
|
+
}, async ({ page_id, ...data }) => {
|
|
241
|
+
try {
|
|
242
|
+
const result = await client.updateStatusPage(page_id, data);
|
|
243
|
+
return formatResponse(result);
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
return formatError(error);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
server.tool("instatus_delete_status_page", "Delete a status page", {
|
|
250
|
+
page_id: z.string().describe("The ID of the status page to delete"),
|
|
251
|
+
}, async ({ page_id }) => {
|
|
252
|
+
try {
|
|
253
|
+
const result = await client.deleteStatusPage(page_id);
|
|
254
|
+
return formatResponse(result);
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
return formatError(error);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
// ==================== Components ====================
|
|
261
|
+
server.tool("instatus_list_components", "List all components for a status page", {
|
|
262
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
263
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
264
|
+
per_page: z.number().optional().describe("Results per page (default: 50, max: 100)"),
|
|
265
|
+
}, async ({ page_id, page, per_page }) => {
|
|
266
|
+
try {
|
|
267
|
+
const result = await client.listComponents(page_id, page, per_page);
|
|
268
|
+
return formatResponse(result);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
return formatError(error);
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
server.tool("instatus_get_component", "Get a specific component", {
|
|
275
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
276
|
+
component_id: z.string().describe("The ID of the component"),
|
|
277
|
+
}, async ({ page_id, component_id }) => {
|
|
278
|
+
try {
|
|
279
|
+
const result = await client.getComponent(page_id, component_id);
|
|
280
|
+
return formatResponse(result);
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
return formatError(error);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
server.tool("instatus_create_component", "Create a new component", {
|
|
287
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
288
|
+
name: z.string().describe("Name of the component"),
|
|
289
|
+
description: z.string().optional().describe("Description of the component"),
|
|
290
|
+
status: z.enum(["OPERATIONAL", "UNDERMAINTENANCE", "DEGRADEDPERFORMANCE", "PARTIALOUTAGE", "MAJOROUTAGE"]).optional().describe("Current status"),
|
|
291
|
+
order: z.number().optional().describe("Display order"),
|
|
292
|
+
showUptime: z.boolean().optional().describe("Whether to show uptime statistics"),
|
|
293
|
+
grouped: z.boolean().optional().describe("Whether this is a group"),
|
|
294
|
+
}, async ({ page_id, name, description, status, order, showUptime, grouped }) => {
|
|
295
|
+
try {
|
|
296
|
+
const result = await client.createComponent(page_id, {
|
|
297
|
+
name,
|
|
298
|
+
description,
|
|
299
|
+
status,
|
|
300
|
+
order,
|
|
301
|
+
showUptime,
|
|
302
|
+
grouped,
|
|
303
|
+
});
|
|
304
|
+
return formatResponse(result);
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
return formatError(error);
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
server.tool("instatus_update_component", "Update an existing component", {
|
|
311
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
312
|
+
component_id: z.string().describe("The ID of the component to update"),
|
|
313
|
+
name: z.string().optional().describe("New name for the component"),
|
|
314
|
+
description: z.string().optional().describe("New description"),
|
|
315
|
+
status: z.enum(["OPERATIONAL", "UNDERMAINTENANCE", "DEGRADEDPERFORMANCE", "PARTIALOUTAGE", "MAJOROUTAGE"]).optional().describe("New status"),
|
|
316
|
+
order: z.number().optional().describe("New display order"),
|
|
317
|
+
showUptime: z.boolean().optional().describe("Whether to show uptime statistics"),
|
|
318
|
+
}, async ({ page_id, component_id, ...data }) => {
|
|
319
|
+
try {
|
|
320
|
+
const result = await client.updateComponent(page_id, component_id, data);
|
|
321
|
+
return formatResponse(result);
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
return formatError(error);
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
server.tool("instatus_delete_component", "Delete a component", {
|
|
328
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
329
|
+
component_id: z.string().describe("The ID of the component to delete"),
|
|
330
|
+
}, async ({ page_id, component_id }) => {
|
|
331
|
+
try {
|
|
332
|
+
const result = await client.deleteComponent(page_id, component_id);
|
|
333
|
+
return formatResponse(result);
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
return formatError(error);
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
// ==================== Incidents ====================
|
|
340
|
+
server.tool("instatus_list_incidents", "List all incidents for a status page", {
|
|
341
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
342
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
343
|
+
per_page: z.number().optional().describe("Results per page (default: 50, max: 100)"),
|
|
344
|
+
status: z.string().optional().describe("Filter by status (comma-separated)"),
|
|
345
|
+
}, async ({ page_id, page, per_page, status }) => {
|
|
346
|
+
try {
|
|
347
|
+
const result = await client.listIncidents(page_id, page, per_page, status);
|
|
348
|
+
return formatResponse(result);
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
return formatError(error);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
server.tool("instatus_get_incident", "Get a specific incident", {
|
|
355
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
356
|
+
incident_id: z.string().describe("The ID of the incident"),
|
|
357
|
+
}, async ({ page_id, incident_id }) => {
|
|
358
|
+
try {
|
|
359
|
+
const result = await client.getIncident(page_id, incident_id);
|
|
360
|
+
return formatResponse(result);
|
|
361
|
+
}
|
|
362
|
+
catch (error) {
|
|
363
|
+
return formatError(error);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
server.tool("instatus_create_incident", "Create a new incident", {
|
|
367
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
368
|
+
name: z.string().describe("Title of the incident"),
|
|
369
|
+
message: z.string().describe("Description/message for the incident"),
|
|
370
|
+
components: z.array(z.string()).optional().describe("Array of component IDs affected"),
|
|
371
|
+
started: z.string().optional().describe("Start timestamp (ISO format)"),
|
|
372
|
+
status: z.enum(["INVESTIGATING", "IDENTIFIED", "MONITORING", "RESOLVED"]).optional().describe("Incident status"),
|
|
373
|
+
notify: z.boolean().optional().describe("Whether to notify subscribers"),
|
|
374
|
+
}, async ({ page_id, name, message, components, started, status, notify }) => {
|
|
375
|
+
try {
|
|
376
|
+
const result = await client.createIncident(page_id, {
|
|
377
|
+
name,
|
|
378
|
+
message,
|
|
379
|
+
components,
|
|
380
|
+
started,
|
|
381
|
+
status,
|
|
382
|
+
notify,
|
|
383
|
+
});
|
|
384
|
+
return formatResponse(result);
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
return formatError(error);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
server.tool("instatus_create_incident_from_template", "Create an incident from a template", {
|
|
391
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
392
|
+
template_id: z.string().describe("The ID of the incident template"),
|
|
393
|
+
}, async ({ page_id, template_id }) => {
|
|
394
|
+
try {
|
|
395
|
+
const result = await client.createIncidentFromTemplate(page_id, template_id);
|
|
396
|
+
return formatResponse(result);
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
return formatError(error);
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
server.tool("instatus_update_incident", "Update an existing incident", {
|
|
403
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
404
|
+
incident_id: z.string().describe("The ID of the incident to update"),
|
|
405
|
+
name: z.string().optional().describe("New title"),
|
|
406
|
+
message: z.string().optional().describe("New message/update"),
|
|
407
|
+
status: z.enum(["INVESTIGATING", "IDENTIFIED", "MONITORING", "RESOLVED"]).optional().describe("New status"),
|
|
408
|
+
notify: z.boolean().optional().describe("Whether to notify subscribers"),
|
|
409
|
+
}, async ({ page_id, incident_id, ...data }) => {
|
|
410
|
+
try {
|
|
411
|
+
const result = await client.updateIncident(page_id, incident_id, data);
|
|
412
|
+
return formatResponse(result);
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
return formatError(error);
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
server.tool("instatus_delete_incident", "Delete an incident", {
|
|
419
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
420
|
+
incident_id: z.string().describe("The ID of the incident to delete"),
|
|
421
|
+
}, async ({ page_id, incident_id }) => {
|
|
422
|
+
try {
|
|
423
|
+
const result = await client.deleteIncident(page_id, incident_id);
|
|
424
|
+
return formatResponse(result);
|
|
425
|
+
}
|
|
426
|
+
catch (error) {
|
|
427
|
+
return formatError(error);
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
// ==================== Maintenances ====================
|
|
431
|
+
server.tool("instatus_list_maintenances", "List all scheduled maintenances for a status page", {
|
|
432
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
433
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
434
|
+
per_page: z.number().optional().describe("Results per page (default: 50, max: 100)"),
|
|
435
|
+
}, async ({ page_id, page, per_page }) => {
|
|
436
|
+
try {
|
|
437
|
+
const result = await client.listMaintenances(page_id, page, per_page);
|
|
438
|
+
return formatResponse(result);
|
|
439
|
+
}
|
|
440
|
+
catch (error) {
|
|
441
|
+
return formatError(error);
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
server.tool("instatus_get_maintenance", "Get a specific maintenance", {
|
|
445
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
446
|
+
maintenance_id: z.string().describe("The ID of the maintenance"),
|
|
447
|
+
}, async ({ page_id, maintenance_id }) => {
|
|
448
|
+
try {
|
|
449
|
+
const result = await client.getMaintenance(page_id, maintenance_id);
|
|
450
|
+
return formatResponse(result);
|
|
451
|
+
}
|
|
452
|
+
catch (error) {
|
|
453
|
+
return formatError(error);
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
server.tool("instatus_create_maintenance", "Create a scheduled maintenance", {
|
|
457
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
458
|
+
name: z.string().describe("Title of the maintenance"),
|
|
459
|
+
message: z.string().describe("Description/message for the maintenance"),
|
|
460
|
+
components: z.array(z.string()).optional().describe("Array of component IDs affected"),
|
|
461
|
+
start: z.string().describe("Start timestamp (ISO format)"),
|
|
462
|
+
end: z.string().optional().describe("End timestamp (ISO format)"),
|
|
463
|
+
status: z.enum(["NOTSTARTEDYET", "INPROGRESS", "COMPLETED"]).optional().describe("Maintenance status"),
|
|
464
|
+
notify: z.boolean().optional().describe("Whether to notify subscribers"),
|
|
465
|
+
duration: z.number().optional().describe("Duration in minutes"),
|
|
466
|
+
}, async ({ page_id, name, message, components, start, end, status, notify, duration }) => {
|
|
467
|
+
try {
|
|
468
|
+
const result = await client.createMaintenance(page_id, {
|
|
469
|
+
name,
|
|
470
|
+
message,
|
|
471
|
+
components,
|
|
472
|
+
start,
|
|
473
|
+
end,
|
|
474
|
+
status,
|
|
475
|
+
notify,
|
|
476
|
+
duration,
|
|
477
|
+
});
|
|
478
|
+
return formatResponse(result);
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
return formatError(error);
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
server.tool("instatus_update_maintenance", "Update a scheduled maintenance", {
|
|
485
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
486
|
+
maintenance_id: z.string().describe("The ID of the maintenance to update"),
|
|
487
|
+
name: z.string().optional().describe("New title"),
|
|
488
|
+
message: z.string().optional().describe("New message"),
|
|
489
|
+
start: z.string().optional().describe("New start timestamp"),
|
|
490
|
+
end: z.string().optional().describe("New end timestamp"),
|
|
491
|
+
status: z.enum(["NOTSTARTEDYET", "INPROGRESS", "COMPLETED"]).optional().describe("New status"),
|
|
492
|
+
notify: z.boolean().optional().describe("Whether to notify subscribers"),
|
|
493
|
+
}, async ({ page_id, maintenance_id, ...data }) => {
|
|
494
|
+
try {
|
|
495
|
+
const result = await client.updateMaintenance(page_id, maintenance_id, data);
|
|
496
|
+
return formatResponse(result);
|
|
497
|
+
}
|
|
498
|
+
catch (error) {
|
|
499
|
+
return formatError(error);
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
server.tool("instatus_delete_maintenance", "Delete a scheduled maintenance", {
|
|
503
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
504
|
+
maintenance_id: z.string().describe("The ID of the maintenance to delete"),
|
|
505
|
+
}, async ({ page_id, maintenance_id }) => {
|
|
506
|
+
try {
|
|
507
|
+
const result = await client.deleteMaintenance(page_id, maintenance_id);
|
|
508
|
+
return formatResponse(result);
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
return formatError(error);
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
// ==================== Subscribers ====================
|
|
515
|
+
server.tool("instatus_list_subscribers", "List all subscribers for a status page", {
|
|
516
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
517
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
518
|
+
per_page: z.number().optional().describe("Results per page (default: 50, max: 100)"),
|
|
519
|
+
search: z.string().optional().describe("Search by email or phone number"),
|
|
520
|
+
}, async ({ page_id, page, per_page, search }) => {
|
|
521
|
+
try {
|
|
522
|
+
const result = await client.listSubscribers(page_id, page, per_page, search);
|
|
523
|
+
return formatResponse(result);
|
|
524
|
+
}
|
|
525
|
+
catch (error) {
|
|
526
|
+
return formatError(error);
|
|
527
|
+
}
|
|
528
|
+
});
|
|
529
|
+
server.tool("instatus_add_subscriber", "Add a new subscriber", {
|
|
530
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
531
|
+
email: z.string().describe("Email address of the subscriber"),
|
|
532
|
+
all: z.boolean().describe("Subscribe to all components (true) or specific ones (false)"),
|
|
533
|
+
autoConfirm: z.boolean().optional().describe("Skip confirmation email (paid feature)"),
|
|
534
|
+
components: z.array(z.string()).optional().describe("Array of component IDs to subscribe to (if all is false)"),
|
|
535
|
+
}, async ({ page_id, email, all, autoConfirm, components }) => {
|
|
536
|
+
try {
|
|
537
|
+
const result = await client.addSubscriber(page_id, {
|
|
538
|
+
email,
|
|
539
|
+
all,
|
|
540
|
+
autoConfirm,
|
|
541
|
+
components,
|
|
542
|
+
});
|
|
543
|
+
return formatResponse(result);
|
|
544
|
+
}
|
|
545
|
+
catch (error) {
|
|
546
|
+
return formatError(error);
|
|
547
|
+
}
|
|
548
|
+
});
|
|
549
|
+
server.tool("instatus_remove_subscriber", "Remove a subscriber", {
|
|
550
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
551
|
+
subscriber_id: z.string().describe("The ID of the subscriber to remove"),
|
|
552
|
+
}, async ({ page_id, subscriber_id }) => {
|
|
553
|
+
try {
|
|
554
|
+
const result = await client.removeSubscriber(page_id, subscriber_id);
|
|
555
|
+
return formatResponse(result);
|
|
556
|
+
}
|
|
557
|
+
catch (error) {
|
|
558
|
+
return formatError(error);
|
|
559
|
+
}
|
|
560
|
+
});
|
|
561
|
+
// ==================== Metrics ====================
|
|
562
|
+
server.tool("instatus_list_metrics", "List all metrics for a status page", {
|
|
563
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
564
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
565
|
+
per_page: z.number().optional().describe("Results per page (default: 50, max: 100)"),
|
|
566
|
+
}, async ({ page_id, page, per_page }) => {
|
|
567
|
+
try {
|
|
568
|
+
const result = await client.listMetrics(page_id, page, per_page);
|
|
569
|
+
return formatResponse(result);
|
|
570
|
+
}
|
|
571
|
+
catch (error) {
|
|
572
|
+
return formatError(error);
|
|
573
|
+
}
|
|
574
|
+
});
|
|
575
|
+
server.tool("instatus_get_metric", "Get a specific metric with its data", {
|
|
576
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
577
|
+
metric_id: z.string().describe("The ID of the metric"),
|
|
578
|
+
}, async ({ page_id, metric_id }) => {
|
|
579
|
+
try {
|
|
580
|
+
const result = await client.getMetric(page_id, metric_id);
|
|
581
|
+
return formatResponse(result);
|
|
582
|
+
}
|
|
583
|
+
catch (error) {
|
|
584
|
+
return formatError(error);
|
|
585
|
+
}
|
|
586
|
+
});
|
|
587
|
+
server.tool("instatus_create_metric", "Create a new metric", {
|
|
588
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
589
|
+
subdomain: z.string().describe("Subdomain of the status page"),
|
|
590
|
+
name: z.string().describe("Name of the metric"),
|
|
591
|
+
suffix: z.string().describe("Suffix for the metric value (e.g., 'ms', '%')"),
|
|
592
|
+
}, async ({ page_id, subdomain, name, suffix }) => {
|
|
593
|
+
try {
|
|
594
|
+
const result = await client.createMetric(page_id, { subdomain, name, suffix });
|
|
595
|
+
return formatResponse(result);
|
|
596
|
+
}
|
|
597
|
+
catch (error) {
|
|
598
|
+
return formatError(error);
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
server.tool("instatus_update_metric", "Update a metric", {
|
|
602
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
603
|
+
metric_id: z.string().describe("The ID of the metric to update"),
|
|
604
|
+
name: z.string().optional().describe("New name for the metric"),
|
|
605
|
+
suffix: z.string().optional().describe("New suffix for the metric value"),
|
|
606
|
+
}, async ({ page_id, metric_id, name, suffix }) => {
|
|
607
|
+
try {
|
|
608
|
+
const result = await client.updateMetric(page_id, metric_id, { name, suffix });
|
|
609
|
+
return formatResponse(result);
|
|
610
|
+
}
|
|
611
|
+
catch (error) {
|
|
612
|
+
return formatError(error);
|
|
613
|
+
}
|
|
614
|
+
});
|
|
615
|
+
server.tool("instatus_delete_metric", "Delete a metric", {
|
|
616
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
617
|
+
metric_id: z.string().describe("The ID of the metric to delete"),
|
|
618
|
+
}, async ({ page_id, metric_id }) => {
|
|
619
|
+
try {
|
|
620
|
+
const result = await client.deleteMetric(page_id, metric_id);
|
|
621
|
+
return formatResponse(result);
|
|
622
|
+
}
|
|
623
|
+
catch (error) {
|
|
624
|
+
return formatError(error);
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
server.tool("instatus_add_metric_datapoint", "Add a single datapoint to a metric", {
|
|
628
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
629
|
+
metric_id: z.string().describe("The ID of the metric"),
|
|
630
|
+
timestamp: z.number().describe("Unix timestamp for the datapoint"),
|
|
631
|
+
value: z.number().describe("Value for the datapoint"),
|
|
632
|
+
}, async ({ page_id, metric_id, timestamp, value }) => {
|
|
633
|
+
try {
|
|
634
|
+
const result = await client.addMetricDatapoint(page_id, metric_id, { timestamp, value });
|
|
635
|
+
return formatResponse(result);
|
|
636
|
+
}
|
|
637
|
+
catch (error) {
|
|
638
|
+
return formatError(error);
|
|
639
|
+
}
|
|
640
|
+
});
|
|
641
|
+
server.tool("instatus_add_metric_datapoints", "Add multiple datapoints to a metric", {
|
|
642
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
643
|
+
metric_id: z.string().describe("The ID of the metric"),
|
|
644
|
+
data: z.array(z.object({
|
|
645
|
+
timestamp: z.number().describe("Unix timestamp"),
|
|
646
|
+
value: z.number().describe("Value"),
|
|
647
|
+
})).describe("Array of datapoints to add"),
|
|
648
|
+
}, async ({ page_id, metric_id, data }) => {
|
|
649
|
+
try {
|
|
650
|
+
const result = await client.addMetricDatapoints(page_id, metric_id, data);
|
|
651
|
+
return formatResponse(result);
|
|
652
|
+
}
|
|
653
|
+
catch (error) {
|
|
654
|
+
return formatError(error);
|
|
655
|
+
}
|
|
656
|
+
});
|
|
657
|
+
server.tool("instatus_delete_metric_datapoints", "Delete all datapoints from a metric", {
|
|
658
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
659
|
+
metric_id: z.string().describe("The ID of the metric"),
|
|
660
|
+
}, async ({ page_id, metric_id }) => {
|
|
661
|
+
try {
|
|
662
|
+
const result = await client.deleteMetricDatapoints(page_id, metric_id);
|
|
663
|
+
return formatResponse(result);
|
|
664
|
+
}
|
|
665
|
+
catch (error) {
|
|
666
|
+
return formatError(error);
|
|
667
|
+
}
|
|
668
|
+
});
|
|
669
|
+
// ==================== Teammates ====================
|
|
670
|
+
server.tool("instatus_list_teammates", "List all team members for a status page", {
|
|
671
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
672
|
+
page: z.number().optional().describe("Page number (default: 1)"),
|
|
673
|
+
per_page: z.number().optional().describe("Results per page (default: 50, max: 100)"),
|
|
674
|
+
}, async ({ page_id, page, per_page }) => {
|
|
675
|
+
try {
|
|
676
|
+
const result = await client.listTeammates(page_id, page, per_page);
|
|
677
|
+
return formatResponse(result);
|
|
678
|
+
}
|
|
679
|
+
catch (error) {
|
|
680
|
+
return formatError(error);
|
|
681
|
+
}
|
|
682
|
+
});
|
|
683
|
+
server.tool("instatus_add_teammate", "Add a team member to a status page", {
|
|
684
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
685
|
+
email: z.string().describe("Email address of the team member to add"),
|
|
686
|
+
}, async ({ page_id, email }) => {
|
|
687
|
+
try {
|
|
688
|
+
const result = await client.addTeammate(page_id, email);
|
|
689
|
+
return formatResponse(result);
|
|
690
|
+
}
|
|
691
|
+
catch (error) {
|
|
692
|
+
return formatError(error);
|
|
693
|
+
}
|
|
694
|
+
});
|
|
695
|
+
server.tool("instatus_remove_teammate", "Remove a team member from a status page", {
|
|
696
|
+
page_id: z.string().describe("The ID of the status page"),
|
|
697
|
+
member_id: z.string().describe("The ID of the team member to remove"),
|
|
698
|
+
}, async ({ page_id, member_id }) => {
|
|
699
|
+
try {
|
|
700
|
+
const result = await client.removeTeammate(page_id, member_id);
|
|
701
|
+
return formatResponse(result);
|
|
702
|
+
}
|
|
703
|
+
catch (error) {
|
|
704
|
+
return formatError(error);
|
|
705
|
+
}
|
|
706
|
+
});
|
|
707
|
+
// Start server
|
|
708
|
+
async function main() {
|
|
709
|
+
const transport = new StdioServerTransport();
|
|
710
|
+
await server.connect(transport);
|
|
711
|
+
console.error("Instatus MCP server running on stdio");
|
|
712
|
+
}
|
|
713
|
+
main().catch((error) => {
|
|
714
|
+
console.error("Fatal error:", error);
|
|
715
|
+
process.exit(1);
|
|
716
|
+
});
|
|
717
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "instatus-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for Instatus - manage status pages, incidents, components, and more via Claude Code",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"instatus-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"start": "node dist/index.js",
|
|
18
|
+
"dev": "tsx src/index.ts",
|
|
19
|
+
"watch": "tsc --watch"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
23
|
+
"zod": "^3.23.8"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^20.10.0",
|
|
27
|
+
"tsx": "^4.7.0",
|
|
28
|
+
"typescript": "^5.3.0"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=18.0.0"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"mcp",
|
|
35
|
+
"instatus",
|
|
36
|
+
"model-context-protocol",
|
|
37
|
+
"claude",
|
|
38
|
+
"ai",
|
|
39
|
+
"anthropic",
|
|
40
|
+
"status-page",
|
|
41
|
+
"incidents",
|
|
42
|
+
"monitoring"
|
|
43
|
+
],
|
|
44
|
+
"author": "Agnibha Bose",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "git+https://github.com/TechnicalRhino/instatus-mcp.git"
|
|
49
|
+
},
|
|
50
|
+
"bugs": {
|
|
51
|
+
"url": "https://github.com/TechnicalRhino/instatus-mcp/issues"
|
|
52
|
+
},
|
|
53
|
+
"homepage": "https://github.com/TechnicalRhino/instatus-mcp#readme"
|
|
54
|
+
}
|