rootly-mcp-server 2.0.13__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 +1139 -30
- rootly_mcp_server/texttest.json +3178 -0
- {rootly_mcp_server-2.0.13.dist-info → rootly_mcp_server-2.0.15.dist-info}/METADATA +125 -44
- {rootly_mcp_server-2.0.13.dist-info → rootly_mcp_server-2.0.15.dist-info}/RECORD +7 -6
- {rootly_mcp_server-2.0.13.dist-info → rootly_mcp_server-2.0.15.dist-info}/WHEEL +0 -0
- {rootly_mcp_server-2.0.13.dist-info → rootly_mcp_server-2.0.15.dist-info}/entry_points.txt +0 -0
- {rootly_mcp_server-2.0.13.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
|
|
@@ -28,6 +28,10 @@ Description-Content-Type: text/markdown
|
|
|
28
28
|
|
|
29
29
|
# Rootly MCP Server
|
|
30
30
|
|
|
31
|
+
[](https://pypi.org/project/rootly-mcp-server/)
|
|
32
|
+
[](https://pypi.org/project/rootly-mcp-server/)
|
|
33
|
+
[](https://pypi.org/project/rootly-mcp-server/)
|
|
34
|
+
|
|
31
35
|
An MCP server for the [Rootly API](https://docs.rootly.com/api-reference/overview) that integrates seamlessly with MCP-compatible editors like Cursor, Windsurf, and Claude. Resolve production incidents in under a minute without leaving your IDE.
|
|
32
36
|
|
|
33
37
|
[](https://cursor.com/install-mcp?name=rootly&config=eyJjb21tYW5kIjoibnB4IC15IG1jcC1yZW1vdGUgaHR0cHM6Ly9tY3Aucm9vdGx5LmNvbS9zc2UgLS1oZWFkZXIgQXV0aG9yaXphdGlvbjoke1JPT1RMWV9BVVRIX0hFQURFUn0iLCJlbnYiOnsiUk9PVExZX0FVVEhfSEVBREVSIjoiQmVhcmVyIDxZT1VSX1JPT1RMWV9BUElfVE9LRU4%2BIn19)
|
|
@@ -59,7 +63,7 @@ Configure your MCP-compatible editor (tested with Cursor) with one of the config
|
|
|
59
63
|
"run",
|
|
60
64
|
"--from",
|
|
61
65
|
"rootly-mcp-server",
|
|
62
|
-
"rootly-mcp-server"
|
|
66
|
+
"rootly-mcp-server"
|
|
63
67
|
],
|
|
64
68
|
"env": {
|
|
65
69
|
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
|
|
@@ -79,7 +83,7 @@ Configure your MCP-compatible editor (tested with Cursor) with one of the config
|
|
|
79
83
|
"args": [
|
|
80
84
|
"--from",
|
|
81
85
|
"rootly-mcp-server",
|
|
82
|
-
"rootly-mcp-server"
|
|
86
|
+
"rootly-mcp-server"
|
|
83
87
|
],
|
|
84
88
|
"env": {
|
|
85
89
|
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
|
|
@@ -139,46 +143,60 @@ Alternatively, connect directly to our hosted MCP server:
|
|
|
139
143
|
- **Dynamic Tool Generation**: Automatically creates MCP resources from Rootly's OpenAPI (Swagger) specification
|
|
140
144
|
- **Smart Pagination**: Defaults to 10 items per request for incident endpoints to prevent context window overflow
|
|
141
145
|
- **API Filtering**: Limits exposed API endpoints for security and performance
|
|
142
|
-
- **
|
|
143
|
-
- **`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
|
|
144
148
|
- **`suggest_solutions`**: Mines past incident resolutions to recommend actionable solutions
|
|
145
149
|
- **MCP Resources**: Exposes incident and team data as structured resources for easy AI reference
|
|
146
150
|
- **Intelligent Pattern Recognition**: Automatically identifies services, error types, and resolution patterns
|
|
147
151
|
|
|
148
|
-
###
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
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`
|
|
182
200
|
|
|
183
201
|
### Why Path Limiting?
|
|
184
202
|
|
|
@@ -189,14 +207,14 @@ We limit exposed API paths for two key reasons:
|
|
|
189
207
|
|
|
190
208
|
To expose additional paths, modify the `allowed_paths` variable in `src/rootly_mcp_server/server.py`.
|
|
191
209
|
|
|
192
|
-
###
|
|
210
|
+
### Smart Analysis Tools
|
|
193
211
|
|
|
194
212
|
The MCP server includes intelligent tools that analyze historical incident data to provide actionable insights:
|
|
195
213
|
|
|
196
214
|
#### `find_related_incidents`
|
|
197
|
-
Finds historically similar incidents using
|
|
215
|
+
Finds historically similar incidents using text similarity analysis:
|
|
198
216
|
```
|
|
199
|
-
find_related_incidents(incident_id="12345", similarity_threshold=0.
|
|
217
|
+
find_related_incidents(incident_id="12345", similarity_threshold=0.15, max_results=5)
|
|
200
218
|
```
|
|
201
219
|
- **Input**: Incident ID, similarity threshold (0.0-1.0), max results
|
|
202
220
|
- **Output**: Similar incidents with confidence scores, matched services, and resolution times
|
|
@@ -211,7 +229,7 @@ suggest_solutions(incident_title="Payment API errors", incident_description="Use
|
|
|
211
229
|
```
|
|
212
230
|
- **Input**: Either incident ID OR title/description text
|
|
213
231
|
- **Output**: Actionable solution recommendations with confidence scores and time estimates
|
|
214
|
-
- **Use Case**: Get
|
|
232
|
+
- **Use Case**: Get intelligent suggestions based on successful past resolutions
|
|
215
233
|
|
|
216
234
|
#### How It Works
|
|
217
235
|
- **Text Similarity**: Uses TF-IDF vectorization and cosine similarity (scikit-learn)
|
|
@@ -228,6 +246,56 @@ For optimal results, ensure your Rootly incidents have descriptive:
|
|
|
228
246
|
|
|
229
247
|
Example good resolution summary: `"Restarted auth-service, cleared Redis cache, and increased connection pool from 10 to 50"`
|
|
230
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
|
+
|
|
231
299
|
## About Rootly AI Labs
|
|
232
300
|
|
|
233
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.
|
|
@@ -261,7 +329,20 @@ To add new dependencies during development:
|
|
|
261
329
|
uv pip install <package>
|
|
262
330
|
```
|
|
263
331
|
|
|
264
|
-
### 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
|
|
265
346
|
|
|
266
347
|
The server should now be ready to use with your MCP-compatible editor.
|
|
267
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
|