rootly-mcp-server 2.0.14__py3-none-any.whl → 2.0.15__py3-none-any.whl
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.
- rootly_mcp_server/server.py +1014 -28
- rootly_mcp_server/texttest.json +3178 -0
- {rootly_mcp_server-2.0.14.dist-info → rootly_mcp_server-2.0.15.dist-info}/METADATA +121 -44
- {rootly_mcp_server-2.0.14.dist-info → rootly_mcp_server-2.0.15.dist-info}/RECORD +7 -6
- {rootly_mcp_server-2.0.14.dist-info → rootly_mcp_server-2.0.15.dist-info}/WHEEL +0 -0
- {rootly_mcp_server-2.0.14.dist-info → rootly_mcp_server-2.0.15.dist-info}/entry_points.txt +0 -0
- {rootly_mcp_server-2.0.14.dist-info → rootly_mcp_server-2.0.15.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rootly-mcp-server
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.15
|
|
4
4
|
Summary: A Model Context Protocol server for Rootly APIs using OpenAPI spec
|
|
5
5
|
Project-URL: Homepage, https://github.com/Rootly-AI-Labs/Rootly-MCP-server
|
|
6
6
|
Project-URL: Issues, https://github.com/Rootly-AI-Labs/Rootly-MCP-server/issues
|
|
@@ -63,7 +63,7 @@ Configure your MCP-compatible editor (tested with Cursor) with one of the config
|
|
|
63
63
|
"run",
|
|
64
64
|
"--from",
|
|
65
65
|
"rootly-mcp-server",
|
|
66
|
-
"rootly-mcp-server"
|
|
66
|
+
"rootly-mcp-server"
|
|
67
67
|
],
|
|
68
68
|
"env": {
|
|
69
69
|
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
|
|
@@ -83,7 +83,7 @@ Configure your MCP-compatible editor (tested with Cursor) with one of the config
|
|
|
83
83
|
"args": [
|
|
84
84
|
"--from",
|
|
85
85
|
"rootly-mcp-server",
|
|
86
|
-
"rootly-mcp-server"
|
|
86
|
+
"rootly-mcp-server"
|
|
87
87
|
],
|
|
88
88
|
"env": {
|
|
89
89
|
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
|
|
@@ -143,46 +143,60 @@ Alternatively, connect directly to our hosted MCP server:
|
|
|
143
143
|
- **Dynamic Tool Generation**: Automatically creates MCP resources from Rootly's OpenAPI (Swagger) specification
|
|
144
144
|
- **Smart Pagination**: Defaults to 10 items per request for incident endpoints to prevent context window overflow
|
|
145
145
|
- **API Filtering**: Limits exposed API endpoints for security and performance
|
|
146
|
-
- **
|
|
147
|
-
- **`find_related_incidents`**: Uses TF-IDF similarity analysis to find historically similar incidents
|
|
146
|
+
- **Intelligent Incident Analysis**: Smart tools that analyze historical incident data
|
|
147
|
+
- **`find_related_incidents`**: Uses TF-IDF similarity analysis to find historically similar incidents
|
|
148
148
|
- **`suggest_solutions`**: Mines past incident resolutions to recommend actionable solutions
|
|
149
149
|
- **MCP Resources**: Exposes incident and team data as structured resources for easy AI reference
|
|
150
150
|
- **Intelligent Pattern Recognition**: Automatically identifies services, error types, and resolution patterns
|
|
151
151
|
|
|
152
|
-
###
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
152
|
+
### Available Tools
|
|
153
|
+
|
|
154
|
+
**Alerts**
|
|
155
|
+
- `listIncidentAlerts`
|
|
156
|
+
- `listAlerts`
|
|
157
|
+
- `attachAlert`
|
|
158
|
+
- `createAlert`
|
|
159
|
+
|
|
160
|
+
**Environments**
|
|
161
|
+
- `listEnvironments`
|
|
162
|
+
- `createEnvironment`
|
|
163
|
+
|
|
164
|
+
**Functionalities**
|
|
165
|
+
- `listFunctionalities`
|
|
166
|
+
- `createFunctionality`
|
|
167
|
+
|
|
168
|
+
**Workflows**
|
|
169
|
+
- `listWorkflows`
|
|
170
|
+
- `createWorkflow`
|
|
171
|
+
|
|
172
|
+
**Incidents**
|
|
173
|
+
- `listIncidentActionItems`
|
|
174
|
+
- `createIncidentActionItem`
|
|
175
|
+
- `listIncident_Types`
|
|
176
|
+
- `createIncidentType`
|
|
177
|
+
- `search_incidents`
|
|
178
|
+
- `find_related_incidents`
|
|
179
|
+
- `suggest_solutions`
|
|
180
|
+
|
|
181
|
+
**On-Call**
|
|
182
|
+
- `get_oncall_shift_metrics`
|
|
183
|
+
- `get_oncall_handoff_summary`
|
|
184
|
+
- `get_shift_incidents`
|
|
185
|
+
|
|
186
|
+
**Services & Severities**
|
|
187
|
+
- `listServices`
|
|
188
|
+
- `createService`
|
|
189
|
+
- `listSeverities`
|
|
190
|
+
- `createSeverity`
|
|
191
|
+
|
|
192
|
+
**Teams & Users**
|
|
193
|
+
- `listTeams`
|
|
194
|
+
- `createTeam`
|
|
195
|
+
- `listUsers`
|
|
196
|
+
- `getCurrentUser`
|
|
197
|
+
|
|
198
|
+
**Meta**
|
|
199
|
+
- `list_endpoints`
|
|
186
200
|
|
|
187
201
|
### Why Path Limiting?
|
|
188
202
|
|
|
@@ -193,14 +207,14 @@ We limit exposed API paths for two key reasons:
|
|
|
193
207
|
|
|
194
208
|
To expose additional paths, modify the `allowed_paths` variable in `src/rootly_mcp_server/server.py`.
|
|
195
209
|
|
|
196
|
-
###
|
|
210
|
+
### Smart Analysis Tools
|
|
197
211
|
|
|
198
212
|
The MCP server includes intelligent tools that analyze historical incident data to provide actionable insights:
|
|
199
213
|
|
|
200
214
|
#### `find_related_incidents`
|
|
201
|
-
Finds historically similar incidents using
|
|
215
|
+
Finds historically similar incidents using text similarity analysis:
|
|
202
216
|
```
|
|
203
|
-
find_related_incidents(incident_id="12345", similarity_threshold=0.
|
|
217
|
+
find_related_incidents(incident_id="12345", similarity_threshold=0.15, max_results=5)
|
|
204
218
|
```
|
|
205
219
|
- **Input**: Incident ID, similarity threshold (0.0-1.0), max results
|
|
206
220
|
- **Output**: Similar incidents with confidence scores, matched services, and resolution times
|
|
@@ -215,7 +229,7 @@ suggest_solutions(incident_title="Payment API errors", incident_description="Use
|
|
|
215
229
|
```
|
|
216
230
|
- **Input**: Either incident ID OR title/description text
|
|
217
231
|
- **Output**: Actionable solution recommendations with confidence scores and time estimates
|
|
218
|
-
- **Use Case**: Get
|
|
232
|
+
- **Use Case**: Get intelligent suggestions based on successful past resolutions
|
|
219
233
|
|
|
220
234
|
#### How It Works
|
|
221
235
|
- **Text Similarity**: Uses TF-IDF vectorization and cosine similarity (scikit-learn)
|
|
@@ -232,6 +246,56 @@ For optimal results, ensure your Rootly incidents have descriptive:
|
|
|
232
246
|
|
|
233
247
|
Example good resolution summary: `"Restarted auth-service, cleared Redis cache, and increased connection pool from 10 to 50"`
|
|
234
248
|
|
|
249
|
+
### On-Call Shift Metrics
|
|
250
|
+
|
|
251
|
+
Get on-call shift metrics for any time period, grouped by user, team, or schedule. Includes primary/secondary role tracking, shift counts, hours, and days on-call.
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
get_oncall_shift_metrics(
|
|
255
|
+
start_date="2025-10-01",
|
|
256
|
+
end_date="2025-10-31",
|
|
257
|
+
group_by="user"
|
|
258
|
+
)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### On-Call Handoff Summary
|
|
262
|
+
|
|
263
|
+
Complete handoff: current/next on-call + incidents during shifts.
|
|
264
|
+
|
|
265
|
+
```python
|
|
266
|
+
# All on-call (any timezone)
|
|
267
|
+
get_oncall_handoff_summary(
|
|
268
|
+
team_ids="team-1,team-2",
|
|
269
|
+
timezone="America/Los_Angeles"
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
# Regional filter - only show APAC on-call during APAC business hours
|
|
273
|
+
get_oncall_handoff_summary(
|
|
274
|
+
timezone="Asia/Tokyo",
|
|
275
|
+
filter_by_region=True
|
|
276
|
+
)
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Regional filtering shows only people on-call during business hours (9am-5pm) in the specified timezone.
|
|
280
|
+
|
|
281
|
+
Returns: `schedules` with `current_oncall`, `next_oncall`, and `shift_incidents`
|
|
282
|
+
|
|
283
|
+
### Shift Incidents
|
|
284
|
+
|
|
285
|
+
Incidents during a time period, with filtering by severity/status/tags.
|
|
286
|
+
|
|
287
|
+
```python
|
|
288
|
+
get_shift_incidents(
|
|
289
|
+
start_time="2025-10-20T09:00:00Z",
|
|
290
|
+
end_time="2025-10-20T17:00:00Z",
|
|
291
|
+
severity="critical", # optional
|
|
292
|
+
status="resolved", # optional
|
|
293
|
+
tags="database,api" # optional
|
|
294
|
+
)
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Returns: `incidents` list + `summary` (counts, avg resolution time, grouping)
|
|
298
|
+
|
|
235
299
|
## About Rootly AI Labs
|
|
236
300
|
|
|
237
301
|
This project was developed by [Rootly AI Labs](https://labs.rootly.ai/), where we're building the future of system reliability and operational excellence. As an open-source incubator, we share ideas, experiment, and rapidly prototype solutions that benefit the entire community.
|
|
@@ -265,7 +329,20 @@ To add new dependencies during development:
|
|
|
265
329
|
uv pip install <package>
|
|
266
330
|
```
|
|
267
331
|
|
|
268
|
-
### 3.
|
|
332
|
+
### 3. Set Up Git Hooks (Recommended for Contributors)
|
|
333
|
+
|
|
334
|
+
Install pre-commit hooks to automatically run linting and tests before commits:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
./scripts/setup-hooks.sh
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
This ensures code quality by running:
|
|
341
|
+
- Ruff linting
|
|
342
|
+
- Pyright type checking
|
|
343
|
+
- Unit tests
|
|
344
|
+
|
|
345
|
+
### 4. Verify Installation
|
|
269
346
|
|
|
270
347
|
The server should now be ready to use with your MCP-compatible editor.
|
|
271
348
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
rootly_mcp_server/__init__.py,sha256=rvIuqIyuzgC7b9qSnylrdDP2zPO-7Ou9AoblR6re1co,629
|
|
2
2
|
rootly_mcp_server/__main__.py,sha256=_F4p65_VjnN84RtmEdESVLLH0tO5tL9qBfb2Xdvbj2E,6480
|
|
3
3
|
rootly_mcp_server/client.py,sha256=uit-YijR7OAJtysBoclqnublEDVkFfcb29wSzhpBv44,4686
|
|
4
|
-
rootly_mcp_server/server.py,sha256=
|
|
4
|
+
rootly_mcp_server/server.py,sha256=Qmsv-BKNhsEj8_7S1glBgLEN6OlSKqOvMRgJ40ZFeCg,98716
|
|
5
5
|
rootly_mcp_server/smart_utils.py,sha256=lvGN9ITyJjBkm7ejpYagd8VWodLKnC6FmwECfCOcGwM,22973
|
|
6
|
+
rootly_mcp_server/texttest.json,sha256=KV9m13kWugmW1VEpU80Irp50uCcLgJtV1YT-JzMogQg,154182
|
|
6
7
|
rootly_mcp_server/utils.py,sha256=NyxdcDiFGlV2a8eBO4lKgZg0D7Gxr6xUIB0YyJGgpPA,4165
|
|
7
8
|
rootly_mcp_server/data/__init__.py,sha256=fO8a0bQnRVEoRMHKvhFzj10bhoaw7VsI51czc2MsUm4,143
|
|
8
|
-
rootly_mcp_server-2.0.
|
|
9
|
-
rootly_mcp_server-2.0.
|
|
10
|
-
rootly_mcp_server-2.0.
|
|
11
|
-
rootly_mcp_server-2.0.
|
|
12
|
-
rootly_mcp_server-2.0.
|
|
9
|
+
rootly_mcp_server-2.0.15.dist-info/METADATA,sha256=stGxakp4C-3jGIZG7pqAm3wim_UxAlrTikO--kApdiE,10552
|
|
10
|
+
rootly_mcp_server-2.0.15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
11
|
+
rootly_mcp_server-2.0.15.dist-info/entry_points.txt,sha256=NE33b8VgigVPGBkboyo6pvN1Vz35HZtLybxMO4Q03PI,70
|
|
12
|
+
rootly_mcp_server-2.0.15.dist-info/licenses/LICENSE,sha256=c9w9ZZGl14r54tsP40oaq5adTVX_HMNHozPIH2ymzmw,11341
|
|
13
|
+
rootly_mcp_server-2.0.15.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|