rootly-mcp-server


Namerootly-mcp-server JSON
Version 2.0.5 PyPI version JSON
download
home_pageNone
SummaryA Model Context Protocol server for Rootly APIs using OpenAPI spec
upload_time2025-07-14 07:44:25
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseNone
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

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.

[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=rootly&config=eyJjb21tYW5kIjoibnB4IC15IG1jcC1yZW1vdGUgaHR0cHM6Ly9tY3Aucm9vdGx5LmNvbS9zc2UgLS1oZWFkZXIgQXV0aG9yaXphdGlvbjoke1JPT1RMWV9BVVRIX0hFQURFUn0iLCJlbnYiOnsiUk9PVExZX0FVVEhfSEVBREVSIjoiQmVhcmVyIDxZT1VSX1JPT1RMWV9BUElfVE9LRU4%2BIn19)

![Demo GIF](rootly-mcp-server-demo.gif)

## 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

Install via our [PyPi package](https://pypi.org/project/rootly-mcp-server/) or by cloning this repository.

Configure your MCP-compatible editor (tested with Cursor and Windsurf) with the following:

### 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 uv-tool-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>"
      }
    }
  }
}
```

## 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

### 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**: Control 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`.

## 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.
![Rootly AI logo](https://github.com/Rootly-AI-Labs/EventOrOutage/raw/main/rootly-ai.png)

## 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

Run the test client to ensure everything is configured correctly:

```bash
python test_mcp_client.py
```

### 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>"
      }
    }
  }
}
```

            

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/50/69/940477fb3ba639f81e9bb3a5cb149d8677d88120846973bb2d90e23c681b/rootly_mcp_server-2.0.5.tar.gz",
    "platform": null,
    "description": "# 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[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=rootly&config=eyJjb21tYW5kIjoibnB4IC15IG1jcC1yZW1vdGUgaHR0cHM6Ly9tY3Aucm9vdGx5LmNvbS9zc2UgLS1oZWFkZXIgQXV0aG9yaXphdGlvbjoke1JPT1RMWV9BVVRIX0hFQURFUn0iLCJlbnYiOnsiUk9PVExZX0FVVEhfSEVBREVSIjoiQmVhcmVyIDxZT1VSX1JPT1RMWV9BUElfVE9LRU4%2BIn19)\n\n![Demo GIF](rootly-mcp-server-demo.gif)\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\nInstall via our [PyPi package](https://pypi.org/project/rootly-mcp-server/) or by cloning this repository.\n\nConfigure your MCP-compatible editor (tested with Cursor and Windsurf) with the following:\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 uv-tool-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## 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\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**: Control 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## 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![Rootly AI logo](https://github.com/Rootly-AI-Labs/EventOrOutage/raw/main/rootly-ai.png)\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\nRun the test client to ensure everything is configured correctly:\n\n```bash\npython test_mcp_client.py\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",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Model Context Protocol server for Rootly APIs using OpenAPI spec",
    "version": "2.0.5",
    "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": "d00c36093376cb7871a12ba82d9ed36129d3a8ba2e0fe724e25e88f36afe93ef",
                "md5": "98d180032e77a879ec0745225bd8c3a3",
                "sha256": "05b8720eb03b8209608169b44cd824e08f3d51c1ca1f7d42cbdd2c71022ce9b6"
            },
            "downloads": -1,
            "filename": "rootly_mcp_server-2.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "98d180032e77a879ec0745225bd8c3a3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 22877,
            "upload_time": "2025-07-14T07:44:23",
            "upload_time_iso_8601": "2025-07-14T07:44:23.326082Z",
            "url": "https://files.pythonhosted.org/packages/d0/0c/36093376cb7871a12ba82d9ed36129d3a8ba2e0fe724e25e88f36afe93ef/rootly_mcp_server-2.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5069940477fb3ba639f81e9bb3a5cb149d8677d88120846973bb2d90e23c681b",
                "md5": "be037f8cb5cfefb0aeaebc4ce0a64b42",
                "sha256": "c7f75635ee089297b2c772f785759973ca03f1cda1d08cd94ada108c0ec13013"
            },
            "downloads": -1,
            "filename": "rootly_mcp_server-2.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "be037f8cb5cfefb0aeaebc4ce0a64b42",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 6030743,
            "upload_time": "2025-07-14T07:44:25",
            "upload_time_iso_8601": "2025-07-14T07:44:25.150291Z",
            "url": "https://files.pythonhosted.org/packages/50/69/940477fb3ba639f81e9bb3a5cb149d8677d88120846973bb2d90e23c681b/rootly_mcp_server-2.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-14 07:44:25",
    "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"
}
        
Elapsed time: 0.75626s