mcpField
N
New Relic NerdGraph MCP Server

New Relic NerdGraph MCP Server

本地服务
github.com/ulucaydin开发工具363 周前更新

关于 New Relic NerdGraph MCP Server

这是一个通过 New Relic NerdGraph API 查询和管理账户数据的 MCP 服务,面向使用 New Relic 的运维与开发团队。它提供通用查询,并涵盖实体、APM、Synthetic 监控和告警操作。

主要功能

  1. 01执行 NerdGraph 与 NRQL 查询
  2. 02搜索实体并获取详情
  3. 03列出 APM 应用与 Synthetic 监控
  4. 04创建浏览器监控器
  5. 05查看并确认告警事件

适用场景

  1. 01用 NRQL 检查账户遥测数据
  2. 02查找应用、主机等实体详情
  3. 03创建 Synthetic 浏览器监控器
  4. 04筛选并确认未解决的告警事件

MCP 相关

该 MCP 服务将 New Relic 的查询、资源和操作工具提供给 MCP 客户端。连接需要配置 New Relic API 密钥和账户 ID。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MseeP.ai 安全评估徽章

New Relic NerdGraph MCP 服务

许可证:MIT

此仓库提供了一个用于与 New Relic NerdGraph API 交互的 Model Context Protocol (MCP) 服务。它允许 MCP 客户端(如 Claude Desktop)使用自然语言或特定命令,查询和使用 New Relic 账户数据及功能。

使用 fastmcp 框架构建。

功能

此 MCP 服务将各种 New Relic 功能作为工具和资源提供,包括:

  • 账户详情: 获取已配置账户的基本信息。
  • 通用 NerdGraph 查询: 执行任意 NerdGraph 查询。
  • NRQL 查询: 针对账户数据运行特定的 NRQL 查询。
  • 实体管理: 搜索实体(应用程序、主机、监控器等),并按 GUID 获取详细信息。
  • APM: 列出应用性能监控(APM)应用程序。
  • Synthetics: 列出 Synthetic 监控器并创建简单的浏览器监控器。
  • 警报: 列出警报策略、查看未解决的事件并确认事件。

前提条件

  • Python: 建议使用 Python 3.10+(fastmcp 的要求)。
  • pip: Python 软件包安装程序。
  • New Relic 账户: 需要有权访问 New Relic 账户。
  • New Relic 用户 API 密钥: 身份验证需要用户 API 密钥。你可以在此处生成密钥。请妥善保管此密钥!
  • New Relic 账户 ID: 大多数操作都需要你的 New Relic 账户 ID。你可以在 New Relic UI 中找到它(通常位于 URL 或账户设置中)。

设置与安装

  1. 克隆仓库:

    git clone <repository_url> # Replace <repository_url> with the actual URL
    cd mcp-server-newrelic
    
  2. 安装依赖项:

    pip install -r requirements.txt
    

    这将安装 fastmcp、requests 及其依赖项。

配置

服务器需要你的 New Relic API 密钥和账户 ID 才能运行。启动服务器之前,请使用环境变量配置这些信息:

# Replace YOUR_API_KEY and YOUR_ACCOUNT_ID with your actual credentials
export NEW_RELIC_API_KEY="YOUR_API_KEY"
export NEW_RELIC_ACCOUNT_ID="YOUR_ACCOUNT_ID"

安全提示: 请勿在源代码中硬编码 API 密钥。建议使用环境变量。你也可以使用 direnv 等工具,或将这些 export 命令放入 shell 配置文件(.zshrc、.bashrc 等)以便持久保存,但请注意其中的安全风险。

运行服务

配置完成后,使用 fastmcp 命令行工具启动服务:

fastmcp run server.py:mcp
  • server.py:主入口脚本。
  • mcp:在 server.py 中创建的 FastMCP 实例的名称。

服务将启动、打印注册消息,并监听传入的 MCP 连接(通常由 fastmcp 默认在端口 8000 上管理)。你应该会看到类似以下内容的输出:

Using New Relic Account ID: YOUR_ACCOUNT_ID
Registering common features...
Registering entity features...
Registering APM features...
Registering Synthetics features...
Registering Alerts features...
Feature registration complete.
INFO:     Started server process [XXXXX]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

请保持此终端窗口处于运行状态。

与 MCP 客户端一起使用

  1. 启动 MCP 服务(如上所述)。

  2. 重启 MCP 客户端(例如,Claude Desktop)。

  3. 客户端应自动检测正在运行的服务并连接。你可能会看到一个指示标志(例如 Claude Desktop 中的 🔨 图标),表明有外部工具可用。

  4. 现在,你可以使用自然语言与 New Relic 账户交互,也可以直接调用下方列出的工具。

    • 自然语言示例:“显示我的 APM 应用程序”或“列出账户 1234567 中未解决的严重事件”
    • 直接调用(如果支持): list_apm_applications() 或 list_open_incidents(priority='CRITICAL', target_account_id=1234567)

可用工具和资源

该服务通过 Model Context Protocol 提供以下函数:


通用功能(features/common.py)
  • 工具:query_nerdgraph

    • **描述:**执行任意 NerdGraph 查询。可用于处理特定工具未涵盖的操作。
    • 参数:
      • nerdgraph_query(str):GraphQL 查询字符串。
      • variables(Optional[Dict]):查询变量的 JSON 字典。
    • **返回:**查询结果的 JSON 字符串。
  • 工具:run_nrql_query

    • **描述:**执行 NRQL 查询。
    • 参数:
      • nrql(str):NRQL 查询字符串(例如,"SELECT count(*) FROM Transaction TIMESERIES")。
      • target_account_id(Optional[int]):要查询的账户 ID(若省略,则使用环境变量中的默认值)。
    • **返回:**NRQL 结果的 JSON 字符串。
  • 资源:get_account_details

    • **描述:**提供已配置的 New Relic 账户的基本信息(ID、名称)。
    • URI:newrelic://account_details
    • **返回:**包含账户详细信息的 JSON 字符串({"data": {"id": ..., "name": ...}}),或错误信息。

实体(features/entities.py)
  • 工具:search_entities

    • **描述:**根据条件搜索 New Relic 实体。
    • 参数:
      • name(Optional[str]):按名称筛选(模糊匹配)。
      • entity_type(Optional[str]):按类型筛选(例如,'APPLICATION'、'HOST')。
      • domain(Optional[str]):按领域筛选(例如,'APM'、'INFRA')。
      • tags(Optional[List[Dict]]):按标签筛选(例如,[{"key": "env", "value": "prod"}])。
      • target_account_id(Optional[int]):要在其中搜索的指定账户 ID。
      • limit(int):最大结果数(默认值为 50)。
    • **返回:**搜索结果的 JSON 字符串。
  • 资源:get_entity_details

    • **描述:**获取特定实体的详细信息。包括通用字段以及 APM、Browser、Infra、Synthetics、Dashboards 等类型专属的详细信息。
    • URI:newrelic://entity/{guid}(将 {guid} 替换为实体 GUID)
    • **返回:**实体详细信息的 JSON 字符串。
  • 提示词:generate_entity_search_query

    • **描述:**为 entitySearch NerdGraph 字段生成 query 字符串的条件部分,有助于构建搜索查询。
    • 参数:
      • entity_name(str):要搜索的名称(生成提示词时使用精确匹配)。
      • entity_domain(Optional[str]):要纳入查询条件的领域。
      • entity_type(Optional[str]):要纳入查询条件的类型。
      • target_account_id(Optional[int]):要纳入查询条件的账户 ID。
    • **返回:**表示搜索条件的字符串(例如,"accountId = 123 AND name = 'My App' AND domain = 'APM'")。

APM (features/apm.py)
  • 工具:list_apm_applications
    • **描述:**列出 APM 应用程序。
    • 参数:
      • target_account_id (Optional[int]):要查询的账户 ID(未提供时使用默认值)。
    • **返回:**包含 APM 应用程序列表的 JSON 字符串。

Synthetics (features/synthetics.py)
  • 工具:list_synthetics_monitors

    • **描述:**列出 Synthetic 监控器。
    • 参数:
      • target_account_id (Optional[int]):要查询的账户 ID(未提供时使用默认值)。
    • **返回:**包含 Synthetic 监控器列表的 JSON 字符串。
  • 工具:create_simple_browser_monitor

    • **描述:**创建一个基本的 Synthetics 简易浏览器监控器。
    • 参数:
      • monitor_name (str):新监控器的名称。
      • url (str):要监控的 URL。
      • locations (List[str]):公共位置标签列表(例如,["AWS_US_EAST_1"])。
      • period (str):检查频率(例如,"EVERY_15_MINUTES")。默认值:"EVERY_15_MINUTES"。
      • status (str):初始状态("ENABLED" 或 "DISABLED")。默认值:"ENABLED"。
      • target_account_id (Optional[int]):用于创建的账户 ID(未提供时使用默认值)。
      • tags (Optional[List[Dict]]):可选标签(例如,[{"key": "team", "value": "ops"}])。
    • **返回:**包含结果的 JSON 字符串,其中包括新监控器的 GUID。
  • **资源:**可以使用 get_entity_details 资源,通过监控器的 GUID(newrelic://entity/{monitor_guid})获取 Synthetics 监控器详情。


Alerts (features/alerts.py)
  • 工具:list_alert_policies

    • **描述:**列出告警策略,可按名称筛选。
    • 参数:
      • target_account_id (Optional[int]):要查询的账户 ID(未提供时使用默认值)。
      • policy_name_filter (Optional[str]):筛选名称包含此字符串的策略。
    • **返回:**包含告警策略列表的 JSON 字符串。
  • 工具:list_open_incidents

    • **描述:**列出当前未解决的告警事件。
    • 参数:
      • target_account_id (Optional[int]):要查询的账户 ID(未提供时使用默认值)。
      • priority (Optional[str]):按优先级筛选('CRITICAL'、'WARNING')。
    • **返回:**包含未解决事件列表的 JSON 字符串。
  • 工具:acknowledge_alert_incident

    • **描述:**确认一个未解决的告警事件。
    • 参数:
      • incident_id (int):要确认的事件 ID。
      • target_account_id (Optional[int]):事件发生所在的账户 ID(未提供时使用默认值)。
      • message (Optional[str]):确认时附带的可选消息。
    • **返回:**包含确认结果的 JSON 字符串。

参与贡献

欢迎贡献!欢迎提交问题或拉取请求。

  1. 复刻此仓库。
  2. 创建新分支(git checkout -b feature/your-feature)。
  3. 进行修改。
  4. 提交修改(git commit -am 'Add some feature')。
  5. 推送到该分支(git push origin feature/your-feature)。
  6. 创建拉取请求。

许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE 文件(如果存在 LICENSE 文件)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。