An MCP server for the Rootly API that integrates seamlessly with MCP-compatible editors like Cursor, Windsurf, and Claude. Resolve production incidents in under a minute without leaving your IDE.
- Python 3.12 or higher
uv
package managercurl -LsSf https://astral.sh/uv/install.sh | sh
- Rootly API token
Configure your MCP-compatible editor (tested with Cursor) with one of the configurations below. The package will be automatically downloaded and installed when you first open your editor.
{
"mcpServers": {
"rootly": {
"command": "uv",
"args": [
"tool",
"run",
"--from",
"rootly-mcp-server",
"rootly-mcp-server",
],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
}
}
}
}
{
"mcpServers": {
"rootly": {
"command": "uvx",
"args": [
"--from",
"rootly-mcp-server",
"rootly-mcp-server",
],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
}
}
}
}
To customize allowed_paths
and access additional Rootly API paths, clone the repository and use this configuration:
{
"mcpServers": {
"rootly": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/rootly-mcp-server",
"rootly-mcp-server"
],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
}
}
}
}
Alternatively, connect directly to our hosted MCP server:
{
"mcpServers": {
"rootly": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.rootly.com/sse",
"--header",
"Authorization:${ROOTLY_AUTH_HEADER}"
],
"env": {
"ROOTLY_AUTH_HEADER": "Bearer <YOUR_ROOTLY_API_TOKEN>"
}
}
}
}
- Dynamic Tool Generation: Automatically creates MCP resources from Rootly's OpenAPI (Swagger) specification
- Smart Pagination: Defaults to 10 items per request for incident endpoints to prevent context window overflow
- API Filtering: Limits exposed API endpoints for security and performance
- AI-Powered Incident Analysis: Smart tools that learn from historical incident data
find_related_incidents
: Uses TF-IDF similarity analysis to find historically similar incidentssuggest_solutions
: Mines past incident resolutions to recommend actionable solutions
- MCP Resources: Exposes incident and team data as structured resources for easy AI reference
- Intelligent Pattern Recognition: Automatically identifies services, error types, and resolution patterns
By default, the following Rootly API endpoints are exposed to the AI agent (see allowed_paths
in src/rootly_mcp_server/server.py
):
/v1/incidents
/v1/incidents/{incident_id}/alerts
/v1/alerts
/v1/alerts/{alert_id}
/v1/severities
/v1/severities/{severity_id}
/v1/teams
/v1/teams/{team_id}
/v1/services
/v1/services/{service_id}
/v1/functionalities
/v1/functionalities/{functionality_id}
/v1/incident_types
/v1/incident_types/{incident_type_id}
/v1/incident_action_items
/v1/incident_action_items/{incident_action_item_id}
/v1/incidents/{incident_id}/action_items
/v1/workflows
/v1/workflows/{workflow_id}
/v1/workflow_runs
/v1/workflow_runs/{workflow_run_id}
/v1/environments
/v1/environments/{environment_id}
/v1/users
/v1/users/{user_id}
/v1/users/me
/v1/status_pages
/v1/status_pages/{status_page_id}
We limit exposed API paths for two key reasons:
- Context Management: Rootly's comprehensive API can overwhelm AI agents, affecting their ability to perform simple tasks effectively
- Security: Controls which information and actions are accessible through the MCP server
To expose additional paths, modify the allowed_paths
variable in src/rootly_mcp_server/server.py
.
The MCP server includes intelligent tools that analyze historical incident data to provide actionable insights:
Finds historically similar incidents using machine learning text analysis:
find_related_incidents(incident_id="12345", similarity_threshold=0.3, max_results=5)
- Input: Incident ID, similarity threshold (0.0-1.0), max results
- Output: Similar incidents with confidence scores, matched services, and resolution times
- Use Case: Get context from past incidents to understand patterns and solutions
Recommends solutions by analyzing how similar incidents were resolved:
suggest_solutions(incident_id="12345", max_solutions=3)
# OR for new incidents:
suggest_solutions(incident_title="Payment API errors", incident_description="Users getting 500 errors during checkout")
- Input: Either incident ID OR title/description text
- Output: Actionable solution recommendations with confidence scores and time estimates
- Use Case: Get AI-powered suggestions based on successful past resolutions
- Text Similarity: Uses TF-IDF vectorization and cosine similarity (scikit-learn)
- Service Detection: Automatically identifies affected services from incident text
- Pattern Recognition: Finds common error types, resolution patterns, and time estimates
- Fallback Mode: Works without ML libraries using keyword-based similarity
- Solution Mining: Extracts actionable steps from resolution summaries
For optimal results, ensure your Rootly incidents have descriptive:
- Titles: Clear, specific incident descriptions
- Summaries: Detailed resolution steps when closing incidents
- Service Tags: Proper service identification
Example good resolution summary: "Restarted auth-service, cleared Redis cache, and increased connection pool from 10 to 50"
This project was developed by Rootly AI Labs, 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.
- Python 3.12 or higher
uv
for dependency management
Create and activate a virtual environment:
uv venv .venv
source .venv/bin/activate # Always activate before running scripts
Install all project dependencies:
uv pip install .
To add new dependencies during development:
uv pip install <package>
The server should now be ready to use with your MCP-compatible editor.
For developers: Additional testing tools are available in the tests/
directory.