| Name | rootly-mcp-server JSON |
| Version |
2.0.14
JSON |
| download |
| home_page | None |
| Summary | A Model Context Protocol server for Rootly APIs using OpenAPI spec |
| upload_time | 2025-09-08 22:12:33 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.12 |
| license | None |
| keywords |
automation
incidents
llm
mcp
rootly
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# Rootly MCP Server
[](https://pypi.org/project/rootly-mcp-server/)
[](https://pypi.org/project/rootly-mcp-server/)
[](https://pypi.org/project/rootly-mcp-server/)
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.
[](https://cursor.com/install-mcp?name=rootly&config=eyJjb21tYW5kIjoibnB4IC15IG1jcC1yZW1vdGUgaHR0cHM6Ly9tY3Aucm9vdGx5LmNvbS9zc2UgLS1oZWFkZXIgQXV0aG9yaXphdGlvbjoke1JPT1RMWV9BVVRIX0hFQURFUn0iLCJlbnYiOnsiUk9PVExZX0FVVEhfSEVBREVSIjoiQmVhcmVyIDxZT1VSX1JPT1RMWV9BUElfVE9LRU4%2BIn19)

## Prerequisites
- Python 3.12 or higher
- `uv` package manager
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
- [Rootly API token](https://docs.rootly.com/api-reference/overview#how-to-generate-an-api-key%3F)
## Installation
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.
### With uv
```json
{
"mcpServers": {
"rootly": {
"command": "uv",
"args": [
"tool",
"run",
"--from",
"rootly-mcp-server",
"rootly-mcp-server",
],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
}
}
}
}
```
### With uvx
```json
{
"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:
```json
{
"mcpServers": {
"rootly": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/rootly-mcp-server",
"rootly-mcp-server"
],
"env": {
"ROOTLY_API_TOKEN": "<YOUR_ROOTLY_API_TOKEN>"
}
}
}
}
```
### Connect to Hosted MCP Server
Alternatively, connect directly to our hosted MCP server:
```json
{
"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>"
}
}
}
}
```
## Features
- **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 incidents
- **`suggest_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
### Whitelisted Endpoints
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}
```
### Why Path Limiting?
We limit exposed API paths for two key reasons:
1. **Context Management**: Rootly's comprehensive API can overwhelm AI agents, affecting their ability to perform simple tasks effectively
2. **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`.
### AI-Powered Smart Tools
The MCP server includes intelligent tools that analyze historical incident data to provide actionable insights:
#### `find_related_incidents`
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
#### `suggest_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
#### How It Works
- **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
#### Data Requirements
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"`
## About Rootly AI Labs
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.

## Developer Setup & Troubleshooting
### Prerequisites
- Python 3.12 or higher
- [`uv`](https://github.com/astral-sh/uv) for dependency management
### 1. Set Up Virtual Environment
Create and activate a virtual environment:
```bash
uv venv .venv
source .venv/bin/activate # Always activate before running scripts
```
### 2. Install Dependencies
Install all project dependencies:
```bash
uv pip install .
```
To add new dependencies during development:
```bash
uv pip install <package>
```
### 3. Verify Installation
The server should now be ready to use with your MCP-compatible editor.
**For developers:** Additional testing tools are available in the `tests/` directory.
Raw data
{
"_id": null,
"home_page": null,
"name": "rootly-mcp-server",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "automation, incidents, llm, mcp, rootly",
"author": null,
"author_email": "Rootly AI Labs <support@rootly.com>",
"download_url": "https://files.pythonhosted.org/packages/42/90/e95278ccc46d7ffb8a0b3a2bcd4ac6a7650f3675c64e1c4fe3255d6879ff/rootly_mcp_server-2.0.14.tar.gz",
"platform": null,
"description": "# Rootly MCP Server\n\n[](https://pypi.org/project/rootly-mcp-server/)\n[](https://pypi.org/project/rootly-mcp-server/)\n[](https://pypi.org/project/rootly-mcp-server/)\n\nAn 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.\n\n[](https://cursor.com/install-mcp?name=rootly&config=eyJjb21tYW5kIjoibnB4IC15IG1jcC1yZW1vdGUgaHR0cHM6Ly9tY3Aucm9vdGx5LmNvbS9zc2UgLS1oZWFkZXIgQXV0aG9yaXphdGlvbjoke1JPT1RMWV9BVVRIX0hFQURFUn0iLCJlbnYiOnsiUk9PVExZX0FVVEhfSEVBREVSIjoiQmVhcmVyIDxZT1VSX1JPT1RMWV9BUElfVE9LRU4%2BIn19)\n\n\n\n## Prerequisites\n\n- Python 3.12 or higher\n- `uv` package manager\n ```bash\n curl -LsSf https://astral.sh/uv/install.sh | sh\n ```\n- [Rootly API token](https://docs.rootly.com/api-reference/overview#how-to-generate-an-api-key%3F)\n\n## Installation\n\nConfigure 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.\n\n### With uv\n\n```json\n{\n \"mcpServers\": {\n \"rootly\": {\n \"command\": \"uv\",\n \"args\": [\n \"tool\",\n \"run\",\n \"--from\",\n \"rootly-mcp-server\",\n \"rootly-mcp-server\",\n ], \n \"env\": {\n \"ROOTLY_API_TOKEN\": \"<YOUR_ROOTLY_API_TOKEN>\"\n }\n }\n }\n}\n```\n\n### With uvx\n\n```json\n{\n \"mcpServers\": {\n \"rootly\": {\n \"command\": \"uvx\",\n \"args\": [\n \"--from\",\n \"rootly-mcp-server\",\n \"rootly-mcp-server\",\n ], \n \"env\": {\n \"ROOTLY_API_TOKEN\": \"<YOUR_ROOTLY_API_TOKEN>\"\n }\n }\n }\n}\n```\n\nTo customize `allowed_paths` and access additional Rootly API paths, clone the repository and use this configuration:\n\n```json\n{\n \"mcpServers\": {\n \"rootly\": {\n \"command\": \"uv\",\n \"args\": [\n \"run\",\n \"--directory\",\n \"/path/to/rootly-mcp-server\",\n \"rootly-mcp-server\"\n ],\n \"env\": {\n \"ROOTLY_API_TOKEN\": \"<YOUR_ROOTLY_API_TOKEN>\"\n }\n }\n }\n}\n```\n\n### Connect to Hosted MCP Server\n\nAlternatively, connect directly to our hosted MCP server:\n\n```json\n{\n \"mcpServers\": {\n \"rootly\": {\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"mcp-remote\",\n \"https://mcp.rootly.com/sse\",\n \"--header\",\n \"Authorization:${ROOTLY_AUTH_HEADER}\"\n ],\n \"env\": {\n \"ROOTLY_AUTH_HEADER\": \"Bearer <YOUR_ROOTLY_API_TOKEN>\"\n }\n }\n }\n}\n```\n\n## Features\n\n- **Dynamic Tool Generation**: Automatically creates MCP resources from Rootly's OpenAPI (Swagger) specification\n- **Smart Pagination**: Defaults to 10 items per request for incident endpoints to prevent context window overflow\n- **API Filtering**: Limits exposed API endpoints for security and performance\n- **AI-Powered Incident Analysis**: Smart tools that learn from historical incident data\n - **`find_related_incidents`**: Uses TF-IDF similarity analysis to find historically similar incidents\n - **`suggest_solutions`**: Mines past incident resolutions to recommend actionable solutions\n- **MCP Resources**: Exposes incident and team data as structured resources for easy AI reference\n- **Intelligent Pattern Recognition**: Automatically identifies services, error types, and resolution patterns\n\n### Whitelisted Endpoints\n\nBy default, the following Rootly API endpoints are exposed to the AI agent (see `allowed_paths` in `src/rootly_mcp_server/server.py`):\n\n```\n/v1/incidents\n/v1/incidents/{incident_id}/alerts\n/v1/alerts\n/v1/alerts/{alert_id}\n/v1/severities\n/v1/severities/{severity_id}\n/v1/teams\n/v1/teams/{team_id}\n/v1/services\n/v1/services/{service_id}\n/v1/functionalities\n/v1/functionalities/{functionality_id}\n/v1/incident_types\n/v1/incident_types/{incident_type_id}\n/v1/incident_action_items\n/v1/incident_action_items/{incident_action_item_id}\n/v1/incidents/{incident_id}/action_items\n/v1/workflows\n/v1/workflows/{workflow_id}\n/v1/workflow_runs\n/v1/workflow_runs/{workflow_run_id}\n/v1/environments\n/v1/environments/{environment_id}\n/v1/users\n/v1/users/{user_id}\n/v1/users/me\n/v1/status_pages\n/v1/status_pages/{status_page_id}\n```\n\n### Why Path Limiting?\n\nWe limit exposed API paths for two key reasons:\n\n1. **Context Management**: Rootly's comprehensive API can overwhelm AI agents, affecting their ability to perform simple tasks effectively\n2. **Security**: Controls which information and actions are accessible through the MCP server\n\nTo expose additional paths, modify the `allowed_paths` variable in `src/rootly_mcp_server/server.py`.\n\n### AI-Powered Smart Tools\n\nThe MCP server includes intelligent tools that analyze historical incident data to provide actionable insights:\n\n#### `find_related_incidents`\nFinds historically similar incidents using machine learning text analysis:\n```\nfind_related_incidents(incident_id=\"12345\", similarity_threshold=0.3, max_results=5)\n```\n- **Input**: Incident ID, similarity threshold (0.0-1.0), max results\n- **Output**: Similar incidents with confidence scores, matched services, and resolution times\n- **Use Case**: Get context from past incidents to understand patterns and solutions\n\n#### `suggest_solutions` \nRecommends solutions by analyzing how similar incidents were resolved:\n```\nsuggest_solutions(incident_id=\"12345\", max_solutions=3)\n# OR for new incidents:\nsuggest_solutions(incident_title=\"Payment API errors\", incident_description=\"Users getting 500 errors during checkout\")\n```\n- **Input**: Either incident ID OR title/description text\n- **Output**: Actionable solution recommendations with confidence scores and time estimates \n- **Use Case**: Get AI-powered suggestions based on successful past resolutions\n\n#### How It Works\n- **Text Similarity**: Uses TF-IDF vectorization and cosine similarity (scikit-learn)\n- **Service Detection**: Automatically identifies affected services from incident text\n- **Pattern Recognition**: Finds common error types, resolution patterns, and time estimates\n- **Fallback Mode**: Works without ML libraries using keyword-based similarity\n- **Solution Mining**: Extracts actionable steps from resolution summaries\n\n#### Data Requirements\nFor optimal results, ensure your Rootly incidents have descriptive:\n- **Titles**: Clear, specific incident descriptions\n- **Summaries**: Detailed resolution steps when closing incidents\n- **Service Tags**: Proper service identification\n\nExample good resolution summary: `\"Restarted auth-service, cleared Redis cache, and increased connection pool from 10 to 50\"`\n\n## About Rootly AI Labs\n\nThis 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.\n\n\n## Developer Setup & Troubleshooting\n\n### Prerequisites\n- Python 3.12 or higher\n- [`uv`](https://github.com/astral-sh/uv) for dependency management\n\n### 1. Set Up Virtual Environment\n\nCreate and activate a virtual environment:\n\n```bash\nuv venv .venv\nsource .venv/bin/activate # Always activate before running scripts\n```\n\n### 2. Install Dependencies\n\nInstall all project dependencies:\n\n```bash\nuv pip install .\n```\n\nTo add new dependencies during development:\n```bash\nuv pip install <package>\n```\n\n### 3. Verify Installation\n\nThe server should now be ready to use with your MCP-compatible editor.\n\n**For developers:** Additional testing tools are available in the `tests/` directory.\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A Model Context Protocol server for Rootly APIs using OpenAPI spec",
"version": "2.0.14",
"project_urls": {
"Homepage": "https://github.com/Rootly-AI-Labs/Rootly-MCP-server",
"Issues": "https://github.com/Rootly-AI-Labs/Rootly-MCP-server/issues"
},
"split_keywords": [
"automation",
" incidents",
" llm",
" mcp",
" rootly"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e85e8baa4a90f717c30ba22bed014dbc86d35d6cb000f5b8a0dc3921fcde3840",
"md5": "08ea10e3cb72ca430107d5b7f8e76320",
"sha256": "a42f5f5aac901275543f285fe6f996fdfab07cec0124a7b32cd723bfbd85b248"
},
"downloads": -1,
"filename": "rootly_mcp_server-2.0.14-py3-none-any.whl",
"has_sig": false,
"md5_digest": "08ea10e3cb72ca430107d5b7f8e76320",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 31714,
"upload_time": "2025-09-08T22:12:32",
"upload_time_iso_8601": "2025-09-08T22:12:32.716970Z",
"url": "https://files.pythonhosted.org/packages/e8/5e/8baa4a90f717c30ba22bed014dbc86d35d6cb000f5b8a0dc3921fcde3840/rootly_mcp_server-2.0.14-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4290e95278ccc46d7ffb8a0b3a2bcd4ac6a7650f3675c64e1c4fe3255d6879ff",
"md5": "673234b0c751c49c0530a0fecc7f3cfd",
"sha256": "9aa2bcc3caaa049b1c058e0168c4509ec6ba7fd53a45862492b974ad0e184315"
},
"downloads": -1,
"filename": "rootly_mcp_server-2.0.14.tar.gz",
"has_sig": false,
"md5_digest": "673234b0c751c49c0530a0fecc7f3cfd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 6268720,
"upload_time": "2025-09-08T22:12:33",
"upload_time_iso_8601": "2025-09-08T22:12:33.886987Z",
"url": "https://files.pythonhosted.org/packages/42/90/e95278ccc46d7ffb8a0b3a2bcd4ac6a7650f3675c64e1c4fe3255d6879ff/rootly_mcp_server-2.0.14.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-08 22:12:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Rootly-AI-Labs",
"github_project": "Rootly-MCP-server",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "rootly-mcp-server"
}