rootly-mcp-server 2.2.12__tar.gz → 2.2.14__tar.gz
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-2.2.12 → rootly_mcp_server-2.2.14}/.github/dependabot.yml +8 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.github/workflows/ci.yml +1 -1
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/CHANGELOG.md +167 -3
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/PKG-INFO +117 -29
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/README.md +111 -26
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/pyproject.toml +6 -3
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/code_mode.py +132 -3
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/server.py +63 -15
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_code_mode_module.py +116 -2
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_server.py +168 -1
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/uv.lock +106 -100
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.dockerignore +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.gitattributes +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.github/workflows/dependency-review.yml +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.github/workflows/pypi-release.yml +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.gitignore +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.semaphore/deploy-staging.yml +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.semaphore/deploy.yml +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.semaphore/semaphore.yml +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/.semaphore/update-task-definition.sh +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/CONTRIBUTING.md +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/Dockerfile +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/LICENSE +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/examples/skills/README.md +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/gemini-extension.json +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/rootly-mcp-server-demo.gif +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/rootly_openapi.json +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/scripts/setup-hooks.sh +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/server.json +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/__init__.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/__main__.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/client.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/data/__init__.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/exceptions.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/legacy_server.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/mcp_error.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/monitoring.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/och_client.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/pagination.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/payload_stripping.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/security.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/server_defaults.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/smart_utils.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/spec_transform.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/tools/__init__.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/tools/alerts.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/tools/incidents.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/tools/oncall.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/tools/resources.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/transport.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/utils.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/src/rootly_mcp_server/validators.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/README.md +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/conftest.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/integration/local/test_basic.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/integration/local/test_smart_tools.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/integration/remote/test_essential.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/test_client.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_alert_stripping.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_authentication.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_exceptions.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_http_headers.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_legacy_server_module.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_main_transport.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_mcp_error_module.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_och_client.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_oncall_handoff.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_oncall_metrics.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_oncall_new_tools.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_oncall_severity_normalization.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_payload_stripping_module.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_security.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_server_defaults_module.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_smart_utils.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_tools.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_transport_module.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_utils.py +0 -0
- {rootly_mcp_server-2.2.12 → rootly_mcp_server-2.2.14}/tests/unit/test_validators.py +0 -0
|
@@ -4,6 +4,8 @@ updates:
|
|
|
4
4
|
directory: "/"
|
|
5
5
|
schedule:
|
|
6
6
|
interval: "weekly"
|
|
7
|
+
cooldown:
|
|
8
|
+
default-days: 3
|
|
7
9
|
groups:
|
|
8
10
|
actions:
|
|
9
11
|
patterns:
|
|
@@ -14,6 +16,9 @@ updates:
|
|
|
14
16
|
schedule:
|
|
15
17
|
interval: "weekly"
|
|
16
18
|
open-pull-requests-limit: 10
|
|
19
|
+
cooldown:
|
|
20
|
+
default-days: 3
|
|
21
|
+
semver-major-days: 7
|
|
17
22
|
groups:
|
|
18
23
|
minor-and-patch:
|
|
19
24
|
applies-to: version-updates
|
|
@@ -25,3 +30,6 @@ updates:
|
|
|
25
30
|
directory: "/"
|
|
26
31
|
schedule:
|
|
27
32
|
interval: "weekly"
|
|
33
|
+
cooldown:
|
|
34
|
+
default-days: 3
|
|
35
|
+
semver-major-days: 7
|
|
@@ -77,7 +77,7 @@ jobs:
|
|
|
77
77
|
|
|
78
78
|
- name: Upload coverage to Codecov
|
|
79
79
|
if: matrix.python-version == '3.12'
|
|
80
|
-
uses: codecov/codecov-action@
|
|
80
|
+
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v5
|
|
81
81
|
with:
|
|
82
82
|
file: ./coverage.xml
|
|
83
83
|
flags: unittests
|
|
@@ -7,9 +7,173 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
## [2.2.14] - Released 2026-04-02
|
|
11
|
+
|
|
12
|
+
### Highlights
|
|
13
|
+
- Refreshed FastMCP and related runtime dependencies to address newly disclosed security advisories
|
|
14
|
+
|
|
15
|
+
### Fixes
|
|
16
|
+
- Updated Code Mode imports and test fixtures for FastMCP 3.2.0 compatibility
|
|
17
|
+
|
|
18
|
+
### Docs / Dependencies
|
|
19
|
+
- Added a Dependabot cooldown for package ecosystem updates
|
|
20
|
+
- Upgraded `fastmcp[code-mode]` to `3.2.0`
|
|
21
|
+
- Upgraded transitive `cryptography` to `46.0.6`
|
|
22
|
+
- Upgraded transitive `Pygments` to `2.20.0`
|
|
23
|
+
|
|
24
|
+
## [2.2.13] - Released 2026-03-26
|
|
25
|
+
|
|
26
|
+
### Highlights
|
|
27
|
+
- Improved hosted auth validation and Code Mode `execute` error handling
|
|
28
|
+
- Patched vulnerable `authlib` and `requests` dependencies
|
|
29
|
+
|
|
30
|
+
### Fixes
|
|
31
|
+
- Validate hosted `Authorization` headers earlier and log auth header state to make malformed token issues easier to diagnose
|
|
32
|
+
- Hardened Code Mode `execute` by normalizing common client-prefixed tool names and returning clearer parser, import, and runtime errors
|
|
33
|
+
|
|
34
|
+
### Docs / Dependencies
|
|
35
|
+
- Simplified the README quick start and added clearer hosted remote configuration examples for HTTP streamable, SSE, and Code Mode
|
|
36
|
+
- Upgraded `fastmcp[code-mode]` to `3.1.1` and refreshed CI dependencies
|
|
37
|
+
|
|
38
|
+
## [2.2.12] - Released 2026-03-18
|
|
39
|
+
|
|
40
|
+
### Highlights
|
|
41
|
+
- Reduced oversized shift and collection payloads and added pagination to `list_shifts`
|
|
42
|
+
|
|
43
|
+
### Features
|
|
44
|
+
- Added MCP-level pagination to `list_shifts`, including pagination metadata and validation for invalid page numbers
|
|
45
|
+
|
|
46
|
+
### Fixes
|
|
47
|
+
- Trimmed `get_shift_incidents` results to avoid oversized responses
|
|
48
|
+
- Preserved incidents that started before a shift but were resolved during it
|
|
49
|
+
|
|
50
|
+
### Docs / Dependencies
|
|
51
|
+
- Slimmed heavy collection payloads for generated tools such as `listUsers`, `listServices`, and `listShifts`
|
|
52
|
+
- Clarified Code Mode tool discovery and pagination guidance for paginated calls
|
|
53
|
+
- Added and simplified Claude Code setup examples in the documentation
|
|
54
|
+
|
|
55
|
+
## [2.2.11] - Released 2026-03-16
|
|
56
|
+
|
|
57
|
+
### Highlights
|
|
58
|
+
- Added incident update and readback support for PIR workflows
|
|
59
|
+
|
|
60
|
+
### Features
|
|
61
|
+
- Added `updateIncident` for scoped incident updates in the PIR lifecycle
|
|
62
|
+
- Added `getIncident` and incident readback support for PIR verification
|
|
63
|
+
|
|
64
|
+
### Fixes
|
|
65
|
+
- Updated `search_incidents` to include retrospective progress status in readback results
|
|
66
|
+
- Made Code Mode `execute` compatible with older Monty runtimes
|
|
67
|
+
- Patched vulnerable `black` and `PyJWT` dependencies
|
|
68
|
+
- Fixed CI usage of `actions/upload-artifact`
|
|
69
|
+
|
|
70
|
+
### Docs / Dependencies
|
|
71
|
+
- Scoped GitHub Actions workflow permissions more tightly
|
|
72
|
+
|
|
73
|
+
## [2.2.10] - Released 2026-03-12
|
|
74
|
+
|
|
75
|
+
### Highlights
|
|
76
|
+
- Rolled out hosted dual transport, Code Mode, and richer observability support
|
|
77
|
+
|
|
78
|
+
### Features
|
|
79
|
+
- Added a hosted Code Mode endpoint and enabled Code Mode by default in hosted dual-mode deployments
|
|
80
|
+
- Added streamable HTTP and SSE dual-transport support in a single hosted process
|
|
81
|
+
- Added screenshot coverage, escalation APIs, and tighter allowlist path matching
|
|
82
|
+
- Added structured tool-usage telemetry for Datadog, including transport-aware metrics and hashed identity context
|
|
83
|
+
- Added Gemini CLI extension support and editor-specific setup documentation
|
|
84
|
+
- Added branch-based staging deployment pipeline support
|
|
85
|
+
|
|
86
|
+
### Fixes
|
|
87
|
+
- Restored legacy server parity while preserving compatibility with FastMCP 3.x `list_tools()` and `send()` behavior
|
|
88
|
+
- Forwarded auth tokens correctly in hosted SSE and streamable HTTP paths
|
|
89
|
+
- Reduced hosted auth noise, improved graceful shutdown behavior, and preserved error context across multi-call tools
|
|
90
|
+
- Fixed non-string incident severity handling in `shift_incidents`
|
|
91
|
+
|
|
92
|
+
### Docs / Dependencies
|
|
93
|
+
- Reorganized Quick Start documentation by editor and added Rootly CLI guidance
|
|
94
|
+
- Refreshed vulnerable runtime dependencies and normalized log severity handling
|
|
95
|
+
|
|
96
|
+
## [2.2.9] - Released 2026-02-24
|
|
97
|
+
|
|
98
|
+
### Fixes
|
|
99
|
+
- Added an auth header event hook for hosted mode so downstream API requests consistently carry the caller's bearer token
|
|
100
|
+
|
|
101
|
+
## [2.2.8] - Released 2026-02-24
|
|
102
|
+
|
|
103
|
+
### Features
|
|
104
|
+
- Added filter parameters to `listAlerts`
|
|
105
|
+
- Added transport and hosting mode to the Rootly `User-Agent`
|
|
106
|
+
|
|
107
|
+
### Docs / Dependencies
|
|
108
|
+
- Hardened the Dockerfile and added `.dockerignore`
|
|
109
|
+
|
|
110
|
+
## [2.2.6] - Released 2026-02-19
|
|
111
|
+
|
|
112
|
+
### Highlights
|
|
113
|
+
- Added alert lookup by short ID and reduced alert payload size
|
|
114
|
+
|
|
115
|
+
### Features
|
|
116
|
+
- Added `get_alert_by_short_id` so alerts can be fetched by short ID or full alert URL
|
|
117
|
+
|
|
118
|
+
### Fixes
|
|
119
|
+
- Included alert `url` and `created_at` in alert field selection
|
|
120
|
+
- Removed the `timeout` parameter from `FastMCP.from_openapi()` for FastMCP 3.0 compatibility
|
|
121
|
+
|
|
122
|
+
### Docs / Dependencies
|
|
123
|
+
- Reduced alert API response payload size significantly and added User-Agent tracking
|
|
124
|
+
|
|
125
|
+
## [2.2.4] - Released 2026-02-18
|
|
126
|
+
|
|
127
|
+
### Features
|
|
128
|
+
- Added MCP registry metadata
|
|
129
|
+
|
|
130
|
+
### Fixes
|
|
131
|
+
- Enforced JSON:API headers through an `httpx` event hook to resolve hosted `415` errors more reliably
|
|
132
|
+
|
|
133
|
+
## [2.2.3] - Released 2026-02-05
|
|
134
|
+
|
|
135
|
+
### Features
|
|
136
|
+
- Added debug logging for HTTP requests and headers
|
|
137
|
+
|
|
138
|
+
## [2.2.2] - Released 2026-02-05
|
|
139
|
+
|
|
140
|
+
### Fixes
|
|
141
|
+
- Removed existing content-type headers case-insensitively before setting JSON:API headers
|
|
142
|
+
|
|
143
|
+
## [2.2.1] - Released 2026-02-05
|
|
144
|
+
|
|
145
|
+
### Fixes
|
|
146
|
+
- Always set JSON:API headers regardless of request kwargs to prevent hosted `415` failures
|
|
147
|
+
|
|
148
|
+
## [2.2.0] - Released 2026-02-05
|
|
149
|
+
|
|
150
|
+
### Highlights
|
|
151
|
+
- Renamed On-Call Health terminology from `burnout` to `health risk`
|
|
152
|
+
|
|
153
|
+
## [2.1.4] - Released 2026-02-05
|
|
154
|
+
|
|
155
|
+
### Fixes
|
|
156
|
+
- Resolved hosted MCP `415 Unsupported Media Type` errors
|
|
157
|
+
|
|
158
|
+
## [2.1.3] - Released 2026-02-05
|
|
159
|
+
|
|
160
|
+
### Highlights
|
|
161
|
+
- Added the first On-Call Health integration
|
|
162
|
+
|
|
163
|
+
### Features
|
|
164
|
+
- Added the On-Call Health integration for burnout-risk detection
|
|
165
|
+
- Added unit tests for the On-Call Health integration
|
|
166
|
+
|
|
167
|
+
### Fixes
|
|
168
|
+
- Added proper type hints to `och_client.py`
|
|
169
|
+
|
|
170
|
+
### Docs / Dependencies
|
|
171
|
+
- Streamlined the README and moved development setup details into `CONTRIBUTING.md`
|
|
172
|
+
|
|
173
|
+
## [2.1.2] - Released 2026-02-05
|
|
174
|
+
|
|
175
|
+
### Features
|
|
176
|
+
- Added on-call AI workflow tools
|
|
13
177
|
|
|
14
178
|
## [2.1.1] - 2026-02-04
|
|
15
179
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rootly-mcp-server
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.14
|
|
4
4
|
Summary: Secure Model Context Protocol server for Rootly APIs with AI SRE capabilities, comprehensive error handling, and input validation
|
|
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
|
|
@@ -21,12 +21,15 @@ Classifier: Topic :: Software Development :: Build Tools
|
|
|
21
21
|
Classifier: Topic :: System :: Monitoring
|
|
22
22
|
Classifier: Topic :: System :: Systems Administration
|
|
23
23
|
Requires-Python: >=3.12
|
|
24
|
+
Requires-Dist: authlib>=1.6.9
|
|
24
25
|
Requires-Dist: brotli>=1.2.0
|
|
25
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: cryptography>=46.0.6
|
|
27
|
+
Requires-Dist: fastmcp[code-mode]==3.2.0
|
|
26
28
|
Requires-Dist: httpx==0.28.1
|
|
27
29
|
Requires-Dist: numpy>=1.24.0
|
|
28
30
|
Requires-Dist: pydantic==2.12.5
|
|
29
|
-
Requires-Dist:
|
|
31
|
+
Requires-Dist: pygments>=2.20.0
|
|
32
|
+
Requires-Dist: requests==2.33.0
|
|
30
33
|
Requires-Dist: scikit-learn>=1.3.0
|
|
31
34
|
Provides-Extra: dev
|
|
32
35
|
Requires-Dist: bandit>=1.7.0; extra == 'dev'
|
|
@@ -45,17 +48,75 @@ Description-Content-Type: text/markdown
|
|
|
45
48
|
[](https://pypi.org/project/rootly-mcp-server/)
|
|
46
49
|
[](https://cursor.com/install-mcp?name=rootly&config=eyJ1cmwiOiJodHRwczovL21jcC5yb290bHkuY29tL3NzZSIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciA8WU9VUl9ST09UTFlfQVBJX1RPS0VOPiJ9fQ==)
|
|
47
50
|
|
|
48
|
-
An MCP server for the [Rootly API](https://docs.rootly.com/api-reference/overview)
|
|
51
|
+
An MCP server for the [Rootly API](https://docs.rootly.com/api-reference/overview) for Cursor, Windsurf, Claude, and other MCP clients.
|
|
49
52
|
|
|
50
53
|

|
|
51
54
|
|
|
52
55
|
## Quick Start
|
|
53
56
|
|
|
54
|
-
|
|
57
|
+
Use the hosted MCP server. No local installation required.
|
|
55
58
|
|
|
56
|
-
###
|
|
59
|
+
### Hosted Transport Options
|
|
57
60
|
|
|
58
|
-
**
|
|
61
|
+
- **Streamable HTTP (recommended):** `https://mcp.rootly.com/mcp`
|
|
62
|
+
- **SSE (fallback):** `https://mcp.rootly.com/sse`
|
|
63
|
+
- **Code Mode:** `https://mcp.rootly.com/mcp-codemode`
|
|
64
|
+
|
|
65
|
+
### General Remote Setup
|
|
66
|
+
|
|
67
|
+
Default remote config (HTTP streamable):
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"mcpServers": {
|
|
72
|
+
"rootly": {
|
|
73
|
+
"url": "https://mcp.rootly.com/mcp",
|
|
74
|
+
"headers": {
|
|
75
|
+
"Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
SSE fallback:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"rootly": {
|
|
88
|
+
"url": "https://mcp.rootly.com/sse",
|
|
89
|
+
"headers": {
|
|
90
|
+
"Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Code Mode:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"mcpServers": {
|
|
102
|
+
"rootly": {
|
|
103
|
+
"url": "https://mcp.rootly.com/mcp-codemode",
|
|
104
|
+
"headers": {
|
|
105
|
+
"Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Agent Setup
|
|
113
|
+
|
|
114
|
+
<details>
|
|
115
|
+
<summary><strong>Claude Code</strong></summary>
|
|
116
|
+
|
|
117
|
+
<br>
|
|
118
|
+
|
|
119
|
+
**Streamable HTTP**
|
|
59
120
|
|
|
60
121
|
```bash
|
|
61
122
|
claude mcp add --transport http rootly https://mcp.rootly.com/mcp \
|
|
@@ -78,7 +139,7 @@ claude mcp add --transport sse rootly-sse https://mcp.rootly.com/sse \
|
|
|
78
139
|
|
|
79
140
|
**Manual Configuration**
|
|
80
141
|
|
|
81
|
-
|
|
142
|
+
Create `.mcp.json` in your project root:
|
|
82
143
|
|
|
83
144
|
```json
|
|
84
145
|
{
|
|
@@ -94,9 +155,14 @@ Alternatively, create `.mcp.json` in your project root:
|
|
|
94
155
|
}
|
|
95
156
|
```
|
|
96
157
|
|
|
97
|
-
|
|
158
|
+
Restart Claude Code after updating the config.
|
|
159
|
+
|
|
160
|
+
</details>
|
|
98
161
|
|
|
99
|
-
|
|
162
|
+
<details>
|
|
163
|
+
<summary><strong>Gemini CLI</strong></summary>
|
|
164
|
+
|
|
165
|
+
<br>
|
|
100
166
|
|
|
101
167
|
Install the extension:
|
|
102
168
|
|
|
@@ -120,7 +186,12 @@ Or configure manually in `~/.gemini/settings.json`:
|
|
|
120
186
|
}
|
|
121
187
|
```
|
|
122
188
|
|
|
123
|
-
|
|
189
|
+
</details>
|
|
190
|
+
|
|
191
|
+
<details>
|
|
192
|
+
<summary><strong>Cursor</strong></summary>
|
|
193
|
+
|
|
194
|
+
<br>
|
|
124
195
|
|
|
125
196
|
Add to `.cursor/mcp.json` or `~/.cursor/mcp.json`:
|
|
126
197
|
|
|
@@ -137,7 +208,12 @@ Add to `.cursor/mcp.json` or `~/.cursor/mcp.json`:
|
|
|
137
208
|
}
|
|
138
209
|
```
|
|
139
210
|
|
|
140
|
-
|
|
211
|
+
</details>
|
|
212
|
+
|
|
213
|
+
<details>
|
|
214
|
+
<summary><strong>Windsurf</strong></summary>
|
|
215
|
+
|
|
216
|
+
<br>
|
|
141
217
|
|
|
142
218
|
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
143
219
|
|
|
@@ -154,7 +230,12 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
|
154
230
|
}
|
|
155
231
|
```
|
|
156
232
|
|
|
157
|
-
|
|
233
|
+
</details>
|
|
234
|
+
|
|
235
|
+
<details>
|
|
236
|
+
<summary><strong>Codex</strong></summary>
|
|
237
|
+
|
|
238
|
+
<br>
|
|
158
239
|
|
|
159
240
|
Add to `~/.codex/config.toml`:
|
|
160
241
|
|
|
@@ -164,7 +245,12 @@ url = "https://mcp.rootly.com/mcp"
|
|
|
164
245
|
bearer_token_env_var = "ROOTLY_API_TOKEN"
|
|
165
246
|
```
|
|
166
247
|
|
|
167
|
-
|
|
248
|
+
</details>
|
|
249
|
+
|
|
250
|
+
<details>
|
|
251
|
+
<summary><strong>Claude Desktop</strong></summary>
|
|
252
|
+
|
|
253
|
+
<br>
|
|
168
254
|
|
|
169
255
|
Add to `claude_desktop_config.json`:
|
|
170
256
|
|
|
@@ -185,9 +271,11 @@ Add to `claude_desktop_config.json`:
|
|
|
185
271
|
}
|
|
186
272
|
```
|
|
187
273
|
|
|
274
|
+
</details>
|
|
275
|
+
|
|
188
276
|
## Rootly CLI
|
|
189
277
|
|
|
190
|
-
|
|
278
|
+
Standalone CLI for incidents, alerts, services, and on-call operations.
|
|
191
279
|
|
|
192
280
|
Install via Homebrew:
|
|
193
281
|
|
|
@@ -205,7 +293,7 @@ For more details, see the [Rootly CLI repository](https://github.com/rootlyhq/ro
|
|
|
205
293
|
|
|
206
294
|
## Alternative Installation (Local)
|
|
207
295
|
|
|
208
|
-
|
|
296
|
+
Run the MCP server locally if you do not want to use the hosted service.
|
|
209
297
|
|
|
210
298
|
### Prerequisites
|
|
211
299
|
|
|
@@ -214,17 +302,17 @@ If you prefer to run the MCP server locally, configure your editor with one of t
|
|
|
214
302
|
```bash
|
|
215
303
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
216
304
|
```
|
|
217
|
-
- [Rootly API token](https://docs.rootly.com/api-reference/overview#how-to-generate-an-api-key%3F)
|
|
305
|
+
- [Rootly API token](https://docs.rootly.com/api-reference/overview#how-to-generate-an-api-key%3F)
|
|
218
306
|
|
|
219
|
-
### API Token
|
|
307
|
+
### API Token Types
|
|
220
308
|
|
|
221
|
-
|
|
309
|
+
Choose the token type based on the access you need:
|
|
222
310
|
|
|
223
|
-
- **Global API Key
|
|
224
|
-
- **Team API Key**:
|
|
225
|
-
- **Personal API Key**:
|
|
311
|
+
- **Global API Key**: Full access across the Rootly instance. Best for organization-wide visibility.
|
|
312
|
+
- **Team API Key**: Access limited to entities owned by that team.
|
|
313
|
+
- **Personal API Key**: Access matches the user who created it.
|
|
226
314
|
|
|
227
|
-
|
|
315
|
+
A **Global API Key** is recommended for tools like `get_oncall_handoff_summary`, `get_oncall_shift_metrics`, and org-wide incident search.
|
|
228
316
|
|
|
229
317
|
### With uv
|
|
230
318
|
|
|
@@ -254,7 +342,7 @@ Choose one transport per server process:
|
|
|
254
342
|
|
|
255
343
|
- **Streamable HTTP** endpoint path: `/mcp`
|
|
256
344
|
- **SSE** endpoint path: `/sse`
|
|
257
|
-
- **Code Mode (experimental)** endpoint path: `/mcp-codemode` in hosted dual-transport mode
|
|
345
|
+
- **Code Mode (experimental)** endpoint path: `/mcp-codemode` in hosted dual-transport mode
|
|
258
346
|
|
|
259
347
|
Example Docker run (Streamable HTTP):
|
|
260
348
|
|
|
@@ -317,7 +405,7 @@ docker run -p 8000:8000 \
|
|
|
317
405
|
|
|
318
406
|
## Supported Tools
|
|
319
407
|
|
|
320
|
-
The default server configuration
|
|
408
|
+
The default server configuration exposes **101 tools**.
|
|
321
409
|
|
|
322
410
|
### Custom Agentic Tools
|
|
323
411
|
|
|
@@ -433,7 +521,7 @@ Delete operations are intentionally scoped to screenshot coverage paths:
|
|
|
433
521
|
|
|
434
522
|
## On-Call Health Integration
|
|
435
523
|
|
|
436
|
-
|
|
524
|
+
Integrates with [On-Call Health](https://oncallhealth.ai) to detect workload health risk in scheduled responders.
|
|
437
525
|
|
|
438
526
|
### Setup
|
|
439
527
|
|
|
@@ -467,11 +555,11 @@ Returns at-risk users who are scheduled, recommended safe replacements, and acti
|
|
|
467
555
|
|
|
468
556
|
## Example Skills
|
|
469
557
|
|
|
470
|
-
|
|
558
|
+
Pre-built Claude Code skills:
|
|
471
559
|
|
|
472
560
|
### 🚨 [Rootly Incident Responder](examples/skills/rootly-incident-responder.md)
|
|
473
561
|
|
|
474
|
-
|
|
562
|
+
This skill:
|
|
475
563
|
- Analyzes production incidents with full context
|
|
476
564
|
- Finds similar historical incidents using ML-based similarity matching
|
|
477
565
|
- Suggests solutions based on past successful resolutions
|
|
@@ -490,7 +578,7 @@ cp examples/skills/rootly-incident-responder.md .claude/skills/
|
|
|
490
578
|
# @rootly-incident-responder analyze incident #12345
|
|
491
579
|
```
|
|
492
580
|
|
|
493
|
-
|
|
581
|
+
It demonstrates a full incident response workflow using Rootly tools and GitHub context.
|
|
494
582
|
|
|
495
583
|
### On-Call Shift Metrics
|
|
496
584
|
|