rootly-mcp-server 2.0.9__py3-none-any.whl → 2.0.10__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 +15 -43
- {rootly_mcp_server-2.0.9.dist-info → rootly_mcp_server-2.0.10.dist-info}/METADATA +1 -1
- {rootly_mcp_server-2.0.9.dist-info → rootly_mcp_server-2.0.10.dist-info}/RECORD +6 -6
- {rootly_mcp_server-2.0.9.dist-info → rootly_mcp_server-2.0.10.dist-info}/WHEEL +0 -0
- {rootly_mcp_server-2.0.9.dist-info → rootly_mcp_server-2.0.10.dist-info}/entry_points.txt +0 -0
- {rootly_mcp_server-2.0.9.dist-info → rootly_mcp_server-2.0.10.dist-info}/licenses/LICENSE +0 -0
rootly_mcp_server/server.py
CHANGED
|
@@ -243,42 +243,6 @@ def create_rootly_mcp_server(
|
|
|
243
243
|
return PlainTextResponse("OK")
|
|
244
244
|
|
|
245
245
|
# Add some custom tools for enhanced functionality
|
|
246
|
-
@mcp.tool()
|
|
247
|
-
async def debug_incidents() -> dict:
|
|
248
|
-
"""Debug tool to inspect incidents endpoint response."""
|
|
249
|
-
try:
|
|
250
|
-
response = await make_authenticated_request("GET", "/v1/incidents", params={"page[size]": 1})
|
|
251
|
-
response.raise_for_status()
|
|
252
|
-
|
|
253
|
-
return {
|
|
254
|
-
"status_code": response.status_code,
|
|
255
|
-
"headers": dict(response.headers),
|
|
256
|
-
"content_length": len(response.content) if response.content else 0,
|
|
257
|
-
"content_preview": response.content[:500].decode('utf-8', errors='ignore') if response.content else "No content",
|
|
258
|
-
"text_preview": response.text[:500] if hasattr(response, 'text') else "No text",
|
|
259
|
-
"encoding": response.encoding,
|
|
260
|
-
"content_type": response.headers.get('content-type', 'unknown')
|
|
261
|
-
}
|
|
262
|
-
except Exception as e:
|
|
263
|
-
return {"error": str(e), "error_type": type(e).__name__}
|
|
264
|
-
|
|
265
|
-
@mcp.tool()
|
|
266
|
-
async def debug_headers() -> dict:
|
|
267
|
-
"""Debug tool to inspect request/response headers for troubleshooting."""
|
|
268
|
-
try:
|
|
269
|
-
response = await make_authenticated_request("GET", "/v1/teams", params={"page[size]": 1})
|
|
270
|
-
response.raise_for_status()
|
|
271
|
-
|
|
272
|
-
return {
|
|
273
|
-
"request_headers": dict(response.request.headers) if response.request else {},
|
|
274
|
-
"response_headers": dict(response.headers),
|
|
275
|
-
"status_code": response.status_code,
|
|
276
|
-
"content_type": response.headers.get('content-type', 'unknown'),
|
|
277
|
-
"encoding": response.encoding,
|
|
278
|
-
"content_preview": str(response.content[:200]) if response.content else "No content"
|
|
279
|
-
}
|
|
280
|
-
except Exception as e:
|
|
281
|
-
return {"error": str(e), "error_type": type(e).__name__}
|
|
282
246
|
|
|
283
247
|
@mcp.tool()
|
|
284
248
|
def list_endpoints() -> list:
|
|
@@ -336,7 +300,7 @@ def create_rootly_mcp_server(
|
|
|
336
300
|
# Single page mode
|
|
337
301
|
if page_number > 0:
|
|
338
302
|
params = {
|
|
339
|
-
"page[size]": min(page_size,
|
|
303
|
+
"page[size]": min(page_size, 5), # Keep responses very small to avoid errors
|
|
340
304
|
"page[number]": page_number,
|
|
341
305
|
"include": "",
|
|
342
306
|
}
|
|
@@ -353,10 +317,11 @@ def create_rootly_mcp_server(
|
|
|
353
317
|
# Multi-page mode (page_number = 0)
|
|
354
318
|
all_incidents = []
|
|
355
319
|
current_page = 1
|
|
356
|
-
effective_page_size = min(page_size,
|
|
320
|
+
effective_page_size = min(page_size, 5) # Keep responses very small to avoid errors
|
|
321
|
+
max_pages = 10 # Safety limit to prevent infinite loops
|
|
357
322
|
|
|
358
323
|
try:
|
|
359
|
-
while len(all_incidents) < max_results:
|
|
324
|
+
while len(all_incidents) < max_results and current_page <= max_pages:
|
|
360
325
|
params = {
|
|
361
326
|
"page[size]": effective_page_size,
|
|
362
327
|
"page[number]": current_page,
|
|
@@ -373,16 +338,23 @@ def create_rootly_mcp_server(
|
|
|
373
338
|
if "data" in response_data:
|
|
374
339
|
incidents = response_data["data"]
|
|
375
340
|
if not incidents:
|
|
341
|
+
# No more incidents available
|
|
342
|
+
break
|
|
343
|
+
|
|
344
|
+
# Check if we got fewer incidents than requested (last page)
|
|
345
|
+
if len(incidents) < effective_page_size:
|
|
346
|
+
all_incidents.extend(incidents)
|
|
376
347
|
break
|
|
377
348
|
|
|
378
349
|
all_incidents.extend(incidents)
|
|
379
350
|
|
|
380
|
-
# Check if
|
|
351
|
+
# Check metadata if available
|
|
381
352
|
meta = response_data.get("meta", {})
|
|
382
353
|
current_page_meta = meta.get("current_page", current_page)
|
|
383
|
-
total_pages = meta.get("total_pages"
|
|
384
|
-
|
|
385
|
-
|
|
354
|
+
total_pages = meta.get("total_pages")
|
|
355
|
+
|
|
356
|
+
# If we have reliable metadata, use it
|
|
357
|
+
if total_pages and current_page_meta >= total_pages:
|
|
386
358
|
break
|
|
387
359
|
|
|
388
360
|
current_page += 1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rootly-mcp-server
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.10
|
|
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
|
|
@@ -2,12 +2,12 @@ rootly_mcp_server/__init__.py,sha256=6pLh19IFyqE-Cve9zergkD-X_yApEkInREKmRa73T6s
|
|
|
2
2
|
rootly_mcp_server/__main__.py,sha256=_F4p65_VjnN84RtmEdESVLLH0tO5tL9qBfb2Xdvbj2E,6480
|
|
3
3
|
rootly_mcp_server/client.py,sha256=diIBINJP_z4nnQIAC1b70vQSiHaNojEfUDARC2nrKHU,4681
|
|
4
4
|
rootly_mcp_server/routemap_server.py,sha256=0LfK2EzwkFQF9SpHNvGcca5ZaxkBC80gIdDojE0aUcs,6100
|
|
5
|
-
rootly_mcp_server/server.py,sha256=
|
|
5
|
+
rootly_mcp_server/server.py,sha256=O31ByNNfKjBmmYY1y_ooPKL12b-PXaM5eNrekXzpURE,24346
|
|
6
6
|
rootly_mcp_server/test_client.py,sha256=Ytd5ZP7vImm12CT97k3p9tlkY_JNcXHSzcGGnHCBqv0,5275
|
|
7
7
|
rootly_mcp_server/utils.py,sha256=NyxdcDiFGlV2a8eBO4lKgZg0D7Gxr6xUIB0YyJGgpPA,4165
|
|
8
8
|
rootly_mcp_server/data/__init__.py,sha256=fO8a0bQnRVEoRMHKvhFzj10bhoaw7VsI51czc2MsUm4,143
|
|
9
|
-
rootly_mcp_server-2.0.
|
|
10
|
-
rootly_mcp_server-2.0.
|
|
11
|
-
rootly_mcp_server-2.0.
|
|
12
|
-
rootly_mcp_server-2.0.
|
|
13
|
-
rootly_mcp_server-2.0.
|
|
9
|
+
rootly_mcp_server-2.0.10.dist-info/METADATA,sha256=SyvYvw80MbIJVhxXvAG_ai1F9FV9N3qPx9Ls4bj3mbg,6189
|
|
10
|
+
rootly_mcp_server-2.0.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
11
|
+
rootly_mcp_server-2.0.10.dist-info/entry_points.txt,sha256=NE33b8VgigVPGBkboyo6pvN1Vz35HZtLybxMO4Q03PI,70
|
|
12
|
+
rootly_mcp_server-2.0.10.dist-info/licenses/LICENSE,sha256=c9w9ZZGl14r54tsP40oaq5adTVX_HMNHozPIH2ymzmw,11341
|
|
13
|
+
rootly_mcp_server-2.0.10.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|