Rootly-MCP-server

Rootly-MCP-server:一款连接 AI 模型与 Rootly API 的 MCP 服务器,简化 IDE 内事件管理。

Rootly-MCP-server
Rootly-MCP-server能力展示

Rootly-MCP-server 解决方案概述

Rootly-MCP-server是一款MCP服务器,旨在连接AI模型与Rootly API,实现在MCP兼容的编辑器(如Cursor和Windsurf)内直接解决生产事件。它通过动态生成基于Rootly OpenAPI规范的MCP资源,简化了事件管理流程。该服务器默认对事件端点进行分页,并限制暴露的API路径数量,以优化AI代理的上下文处理和安全性。开发者可以通过简单的配置,在IDE中集成Rootly的事件管理能力,从而更高效地响应和解决问题。核心价值在于无需离开IDE即可访问Rootly的强大功能,显著提升事件响应速度。该服务器可以通过PyPi包安装或克隆代码仓库进行部署,并通过配置JSON文件与IDE集成。

Rootly-MCP-server 核心能力

动态生成MCP工具

Rootly-MCP-server 的核心功能是基于 Rootly API 的 OpenAPI 规范动态生成 MCP 工具。这意味着服务器能够自动将 Rootly API 的各种功能转化为 AI 模型可以理解和使用的工具。开发者无需手动创建和维护这些工具,大大简化了集成过程。服务器会读取 Rootly 的 OpenAPI 规范,并根据规范中的定义,自动创建相应的 MCP 资源,例如用于创建、更新或查询事件的工具。这种动态生成的方式确保了 MCP 工具始终与 Rootly API 的最新版本保持同步,减少了因 API 变更而导致的问题。

例如,当 Rootly API 添加了一个新的事件字段时,Rootly-MCP-server 会自动更新其生成的 MCP 工具,使 AI 模型能够立即使用该字段。这对于需要快速适应 API 变化的场景非常有用。

事件端点分页

为了防止上下文窗口溢出,Rootly-MCP-server 默认对事件端点进行分页,每页返回 10 个事件。大型事件管理系统可能包含大量的事件数据,如果一次性将所有数据传递给 AI 模型,可能会超出模型的上下文窗口限制,导致模型无法正常工作。通过分页,Rootly-MCP-server 将事件数据分割成更小的块,每次只传递一小部分数据给 AI 模型,从而避免了上下文窗口溢出的问题。

例如,当 AI 模型需要分析过去一周的事件趋势时,Rootly-MCP-server 会将事件数据分成多个页面,AI 模型可以逐页获取数据,而不会因为数据量过大而崩溃。这种分页机制提高了系统的稳定性和可靠性。

API路径访问限制

Rootly-MCP-server 限制了暴露给 AI 代理的 API 路径数量,默认只暴露 /incidents/incidents/{incident_id}/alerts 端点。Rootly API 包含大量的 API 路径,如果将所有路径都暴露给 AI 代理,可能会导致 AI 代理不知所措,无法正确执行简单的操作。此外,暴露过多的 API 路径也可能带来安全风险,例如,AI 代理可能会意外地执行一些敏感操作。通过限制 API 路径的数量,Rootly-MCP-server 可以降低 AI 代理的复杂性,提高其执行任务的准确性,并增强系统的安全性。

例如,如果开发者只想让 AI 模型能够创建和查询事件,而不想让其能够修改事件,那么可以只暴露 /incidents 端点,而禁止暴露 /incidents/{incident_id} 端点。这种限制机制允许开发者根据实际需求,灵活地控制 AI 代理的访问权限。

技术实现

Rootly-MCP-server 使用 Python 3.12 或更高版本开发,并使用 uv 包管理器进行依赖管理。服务器通过读取 Rootly API 的 OpenAPI 规范,动态生成 MCP 资源。为了限制 API 路径的访问,服务器在 src/rootly_mcp_server/server.py 文件中定义了一个 allowed_paths 变量,开发者可以通过修改该变量来控制暴露给 AI 代理的 API 路径。服务器使用标准输入/输出 (stdio) 或 HTTP/SSE 作为传输机制,与 MCP 客户端进行通信。