Rootly
STDIOHTTP-SSEOfficialMCP server for Rootly API to resolve production incidents within your IDE.
MCP server for Rootly API to resolve production incidents within your IDE.
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.

uv package manager
curl -LsSf https://astral.sh/uv/install.sh | sh
The MCP server requires a Rootly API token. Choose the appropriate token type based on your needs:
For full functionality of tools like get_oncall_handoff_summary, get_oncall_shift_metrics, and organization-wide incident search, a Global API Key is recommended.
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>" } } } }
find_related_incidents: Uses TF-IDF similarity analysis to find historically similar incidentssuggest_solutions: Mines past incident resolutions to recommend actionable solutionsAlerts
listIncidentAlertslistAlertsattachAlertcreateAlertEnvironments
listEnvironmentscreateEnvironmentFunctionalities
listFunctionalitiescreateFunctionalityWorkflows
listWorkflowscreateWorkflowIncidents
listIncidentActionItemscreateIncidentActionItemlistIncident_TypescreateIncidentTypesearch_incidentsfind_related_incidentssuggest_solutionsOn-Call
get_oncall_shift_metricsget_oncall_handoff_summaryget_shift_incidentsServices & Severities
listServicescreateServicelistSeveritiescreateSeverityTeams & Users
listTeamscreateTeamlistUsersgetCurrentUserMeta
list_endpointsWe limit exposed API paths for two key reasons:
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:
find_related_incidentsFinds historically similar incidents using text similarity analysis:
find_related_incidents(incident_id="12345", similarity_threshold=0.15, max_results=5)
suggest_solutionsRecommends 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")
For optimal results, ensure your Rootly incidents have descriptive:
Example good resolution summary: "Restarted auth-service, cleared Redis cache, and increased connection pool from 10 to 50"
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.
get_oncall_shift_metrics(
    start_date="2025-10-01",
    end_date="2025-10-31",
    group_by="user"
)
Complete handoff: current/next on-call + incidents during shifts.
# All on-call (any timezone) get_oncall_handoff_summary( team_ids="team-1,team-2", timezone="America/Los_Angeles" ) # Regional filter - only show APAC on-call during APAC business hours get_oncall_handoff_summary( timezone="Asia/Tokyo", filter_by_region=True )
Regional filtering shows only people on-call during business hours (9am-5pm) in the specified timezone.
Returns: schedules with current_oncall, next_oncall, and shift_incidents
Incidents during a time period, with filtering by severity/status/tags.
get_shift_incidents( start_time="2025-10-20T09:00:00Z", end_time="2025-10-20T17:00:00Z", severity="critical", # optional status="resolved", # optional tags="database,api" # optional )
Returns: incidents list + summary (counts, avg resolution time, grouping)
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.

uv for dependency managementCreate 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>
Install pre-commit hooks to automatically run linting and tests before commits:
./scripts/setup-hooks.sh
This ensures code quality by running:
The server should now be ready to use with your MCP-compatible editor.
For developers: Additional testing tools are available in the tests/ directory.