项目简介

nr-mcp 是一个基于 Model Context Protocol (MCP) 构建的应用后端,它通过标准化的方式将 New Relic 的可观测性数据和功能暴露给 LLM 客户端(AI助手)。它可以帮助 AI 助手查询 New Relic 的日志、服务、仪表盘信息,执行 NRQL 查询等,从而辅助进行故障排查和系统分析。

主要功能点

  • 访问 New Relic 数据: 允许 AI 助手通过标准化的 MCP 资源接口读取 New Relic 中的日志(按 Trace ID 或 Request ID)、服务列表、仪表盘信息(包括其中嵌入的 NRQL 查询)以及数据表 Schema。
  • 执行 NRQL 查询: 提供 'run-nrql-query' 工具,允许 AI 助手直接向 New Relic 执行 NRQL (New Relic Query Language) 查询,并获取结构化的结果,支持将时间序列结果转换为 Mermaid 图表方便可视化。
  • 引导式交互: 提供预定义的 Prompt 模板,例如用于调试特定 trace 的 'debug-trace',分析服务健康状况的 'analyze-service',以及探索错误的 'explore-errors',这些模板可以引导 AI 助手执行一系列步骤来解决特定问题。
  • 日志转发: 支持将服务器自身的日志通过 MCP 协议发送给客户端,方便调试和监控。

安装步骤

最推荐的方式是使用 Docker 运行预构建的镜像:

  1. 安装 Docker: 确保你的系统已经安装并运行了 Docker。

  2. 获取 New Relic 信息: 准备好你的 New Relic API Key、Account ID 和 Region (US 或 EU)。

  3. 运行 Docker 容器: 打开终端,运行以下命令,将你的 New Relic 信息作为环境变量传递进去:

    docker run -it --rm \
      -e NEW_RELIC_API_KEY=你的API密钥 \
      -e NEW_RELIC_ACCOUNT_ID=你的账号ID \
      -e NEW_RELIC_REGION=你的区域(US或EU) \
      danielng123/nr-mcp

    服务器将以 Stdio 模式启动,等待 MCP 客户端连接。

服务器配置

要将 MCP 客户端连接到 nr-mcp 服务器,你需要在客户端的配置中添加以下条目。配置格式为 JSON,通常位于客户端的配置文件中。

{
  "mcpServers": {
    "newrelic": {
      "command": "docker", // 启动服务器的命令,这里是运行一个 Docker 容器
      "args": [ // 传递给 command 的参数
        "run",
        "-i", // 保持 stdin 打开
        "--rm", // 容器停止后自动删除
        "-e", "NEW_RELIC_API_KEY", // 将主进程的环境变量 NEW_RELIC_API_KEY 传递给容器
        "-e", "NEW_RELIC_ACCOUNT_ID", // 将主进程的环境变量 NEW_RELIC_ACCOUNT_ID 传递给容器
        "-e", "NEW_RELIC_REGION", // 将主进程的环境变量 NEW_RELIC_REGION 传递给容器
        "danielng123/nr-mcp" // 使用的 Docker 镜像名称
      ],
      "env": { // MCP 客户端启动服务器进程时需要设置的环境变量
        "NEW_RELIC_API_KEY": "<你的API密钥>", // 替换为你的实际 API 密钥
        "NEW_RELIC_ACCOUNT_ID": "<你的账号ID>", // 替换为你的实际账号 ID
        "NEW_RELIC_REGION": "US" // 替换为你的实际区域 ("US" 或 "EU")
      }
    }
  }
}

注意: 将 '<你的API密钥>'、'<你的账号ID>' 和 '"US"'/'"EU"' 替换为你的实际 New Relic 账户信息。这些信息需要在运行 MCP 客户端的进程环境中设置。

基本使用方法

连接成功后,你的 MCP 客户端(AI助手)将能够与 nr-mcp 服务器交互:

  1. 列出能力: 客户端可以请求服务器列出其提供的资源、资源模板、工具和 Prompt 模板。
  2. 访问资源: 客户端可以使用 'resources/read' 请求读取特定 URI 的 New Relic 数据,例如 'newrelic-logs://trace/abc123' 获取 trace ID 为 'abc123' 的日志。
  3. 调用工具: 客户端可以使用 'tools/call' 请求调用 'run-nrql-query' 工具来执行 NRQL 查询,并传递查询字符串等参数。
  4. 使用 Prompt: 客户端可以使用 'prompts/get' 请求获取并渲染 'debug-trace' 等 Prompt 模板,启动预设的交互流程。

客户端可以根据需要组合使用这些功能,例如先通过资源获取仪表盘中的 NRQL 查询,再使用工具执行这些查询来获取具体数据。

信息

分类

开发者工具