观测数据协议服务器

一个为Claude提供结构化访问New Relic观测数据的MCP服务器,附带交互式图表可视化和AI驱动的错误收件箱分类代理,专为AI驱动的事件调查设计。

  • by adjohn
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 adjohn/newrelic-mcp-app

使用说明

New Relic MCP应用程序

免责声明: 这是一个个人项目 不 New Relic的官方产品。它不受New Relic,股份有限公司的支持、认可或维护。使用风险自负。

一个MCP(模型上下文协议)服务器,为Claude提供对New Relic可观察性数据的结构化访问,并提供交互式图表可视化,以及一个AI驱动的错误收件箱分类代理。专为人工智能驱动的事件调查而构建——工具围绕调查工作流程而非数据类型进行组织。

特性

MCP工具(17个工具)

核心可观察性

工具 类型 描述
nrql查询 查看 使用自动检测的图表(线条、条形图、面积图、表格、漏斗图、原始JSON)执行自定义NRQL
实体健康 查看 APM、浏览器、基础设施和合成药物的全车队运行状况概述
警报事件 查看 活动警报事件和AI分组问题时间线
仪表盘 查看 列出用户定义的NR仪表板或内联呈现特定仪表板(在服务器上执行每个小部件的NRQL)
描述事件 文本 任何事件类型的架构发现——属性、类型、示例值

每分钟操作次数

工具 类型 描述
apm仪表板 查看 精心设计的性能仪表板(响应时间百分比、吞吐量、错误、Apdex、最慢txns)
部署影响 查看 部署分析——单次部署深入分析或列出所有服务的最新部署,并具有错误率相关性
服务依赖关系 查看 包含呼叫计数、延迟和每个呼叫者错误率的上游/下游服务拓扑

错误调查(工作流工具)

工具 类型 描述
收件箱错误 文本 带频率的分组错误、带变化点检测的7天趋势和新错误标记
错误追踪 文本 一个调用根本原因:错误→ 分布式跟踪→ 相关日志→ 请求属性→ 重播链接
浏览器错误跟踪 文本 JS错误/AAJAX分析→ 后端跟踪→ 日志(也可作为独立的AJAX故障分析)
追踪细节 查看 具有跨度计时、浏览器/APM源标记和自动发现功能的完整分布式跟踪瀑布图

数字体验监控(DEM)

工具 类型 描述
浏览器漏斗 查看 转换漏斗,包括每步性能、分段、自动相关错误、自动检测步骤
会话时间表 查看 带有回放链接的会话旅程——PageView、BrowserInteraction、AjaxRequest、UserAction、PageAction、JavaScriptError

日志

工具 类型 描述
日志搜索 文本 使用模糊实体匹配搜索日志, around 时间戳参数(±5min)和代理日志过滤

复合工作流工具

工具 类型 描述
调查总结 文本 在一次通话中对整个车队进行分类——查找不健康的服务、主要错误、最近的部署、跟踪根本原因、提取日志
可观测性审计 文本 10个维度的成熟度记分卡——DT覆盖率、日志相关性、警报噪声、浏览器DT、部署标记、摄取成本

带有“View”类型的工具返回聊天中内联呈现的交互式React图表小部件。“文本”工具返回针对克劳德推理优化的结构化文本。

关键能力

  • 模糊实体解析 --所有工具都接受近似的应用程序名称(shippingservice → Shipping Service)具有自动不区分大小写、规范化和子字符串匹配功能
  • 跨服务错误传播 — browser-error-trace 从JS错误到AJAX失败,再到自动进行后端分布式跟踪
  • TraceId采样回退 --当TransactionError traceId没有相应的Span数据(代理采样)时,工具会自动回退到Span来源的traceId
  • 综合流量过滤 --默认情况下,浏览器工具排除合成监视器流量(monitorId IS NULL)
  • 会话重播检测 — error-trace, session-timeline,以及 browser-error-trace 检查重播可用性和表面链接
  • SPA检测 — browser-funnel 通过浏览器交互路线更改和表面引导检测单页应用程序

收件箱分类代理出错

一个独立的CLI工具,使用Claude自动分类New Relic错误收件箱错误。它

  • 优先考虑 按业务影响划分的错误组(P0/P1/P2)
  • 识别噪音 --重复的根本原因、瞬时错误、静音候选
  • 标志回归 --最近引入的需要立即注意的错误
  • 建议验证步骤 --要调查的具体NRQL查询、日志和仪表板
  • 查找交叉模式 --跨多个服务的系统性问题

输出是一个结构化的降价报告,可供工程师或下游人工智能代理(bug修复者)使用。

先决条件

设置

git clone git@github.com:adjohn/newrelic-mcp-app.git
cd newrelic-mcp-app
npm install
npm run build

添加到Claude桌面

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "newrelic": {
      "command": "npx",
      "args": ["tsx", "/path/to/newrelic-mcp-app/server.ts"],
      "env": {
        "NEW_RELIC_API_KEY": "NRAK-your-key-here",
        "NEW_RELIC_ACCOUNT_ID": "12345",
        "NEW_RELIC_REGION": "US"
      }
    }
  }
}

每个用户在配置中提供他们自己的NR API密钥。钥匙永远不会离开本地机器。

添加到Claude.ai(自定义连接器)

  1. 使用隧道启动服务器(例如cloudflared):
    npm run serve
    cloudflared tunnel --url http://localhost:3001
    
  2. 在Claude.ai中→ 设置→ 连接器→ 添加自定义连接器
  3. 将端点URL设置为隧道URL+ /mcp
  4. 使用NR凭据添加身份验证标头:
    • x-nr-api-key:您的NR用户API密钥
    • x-nr-account-id:您的帐户ID
    • x-nr-region: US 或 EU (可选,默认为US)

服务器在每个会话中从这些标头中提取凭据,因此每个用户都可以拥有自己的密钥。

独立运行服务器

对于环境变量:

NEW_RELIC_API_KEY=NRAK-... NEW_RELIC_ACCOUNT_ID=12345 npm run serve

或者用a .env 文件:

cp .env.example .env
# Edit .env with your keys
npm run dev
NEW_RELIC_API_KEY=NRAK-...        # New Relic User API key
NEW_RELIC_ACCOUNT_ID=12345        # Your account ID
NEW_RELIC_REGION=US               # US or EU
ANTHROPIC_API_KEY=sk-ant-...      # Anthropic API key (for triage agent only)

服务器启动于 http://localhost:3001 (可通过以下方式配置 PORT env-var)的端点:

  • POST /mcp --MCP请求处理程序
  • GET /mcp --流式HTTP传输(SSE)
  • DELETE /mcp --会话清理
  • GET /health --健康检查

凭证优先级

服务器按以下顺序解析凭据(先赢):

  1. HTTP标头(x-nr-api-key, x-nr-account-id)--用于Claude.ai定制连接器
  2. 环境变量(NEW_RELIC_API_KEY, NEW_RELIC_ACCOUNT_ID)--适用于克劳德桌面/独立
  3. 刀具参数(accountId 在单个工具调用上)--按请求覆盖

收件箱分类错误

针对您的New Relic帐户运行(过去24小时):

npm run triage

以更宽的时间窗口运行:

npm run triage:week

使用模拟数据测试没有New Relic的完整管道:

npm run triage -- --mock

CLI选项

--account-id <id>      New Relic account ID (or set NEW_RELIC_ACCOUNT_ID)
--since <timerange>    NRQL time range (default: "24 hours ago")
--limit <n>            Max error groups to fetch (default: 50)
--output-dir <path>    Report output directory (default: "reports/")
--model <model>        Claude model for analysis
--mock                 Use realistic sample data instead of querying New Relic
--help                 Show help

报告输出示例

分流代理在中生成降价报告 reports/ 与:

  1. 执行摘要 --错误收件箱健康状况的高级评估
  2. 优先级错误 --P0/P1/P2对错误进行排序,包括业务影响、推理、验证步骤和样本堆栈跟踪
  3. 回归警报 --新引入的具有严重性和证据的错误
  4. 降噪 --要合并、静音或重新分类的错误组
  5. 横切图案 --跨多个服务的系统性问题
  6. 附录 --所有错误组的完整表格

建筑

server.ts                      # MCP server + 15 tool definitions + fuzzy entity resolution
src/
├── nerdgraph.ts               # New Relic NerdGraph (GraphQL) API wrapper
├── triage/
│   ├── index.ts               # CLI entrypoint
│   ├── fetcher.ts             # Parallel NerdGraph/NRQL data fetching
│   ├── analyzer.ts            # Claude-powered error analysis
│   ├── reporter.ts            # Markdown report generation
│   ├── mock-data.ts           # 13 realistic sample error groups
│   └── types.ts               # TypeScript type definitions
└── views/
    ├── shared/                # Shared React components and theme
    │   ├── theme.ts           # Dark NR theme, global CSS
    │   └── components.tsx     # StatCard, ChartContainer, LoadingState, ErrorState
    ├── nrql-explorer/         # Interactive NRQL charts (line, bar, area, table, funnel, raw)
    ├── entity-health/         # Entity health dashboard
    ├── alert-timeline/        # Alert incident timeline
    ├── apm-dashboard/         # APM performance dashboard
    ├── deployment-impact/     # Deployment impact analysis
    ├── trace-waterfall/       # Distributed trace waterfall with span origin tags
    ├── service-dependencies/  # Service topology diagram + dependency tables
    ├── session-timeline/      # Per-session user journey timeline (6 event types)
    └── browser-funnel/        # Conversion funnel with perf metrics + segmentation

设计原则

  • 工作流工具优于数据工具 — error-trace 和 browser-error-trace 对调查模式进行编码(错误→ 痕迹→ logs → 重播),将4-5个手动工具调用合并为一个
  • 双重内容 --工具返回Claude推理的文本摘要和JSON有效载荷,用于交互式React图表视图,这些图表视图通过以下方式捆绑为单个文件HTML vite-plugin-singlefile
  • 到处都是模糊分辨率 --实体名称通过缓存的4阶段匹配器解析(精确→ 不区分大小写→ 归一化→ 在任何NRQL查询运行之前
  • 采样意识 --跟踪工具检测TransactionError跟踪ID何时没有相应的Span(由于代理采样),并自动回退到Span来源的跟踪ID
  • 每个客户端的会话 --每个MCP连接都有自己的 McpServer 通过注册和管理所有工具的实例 StreamableHTTPServerTransport 带有会话ID

分流代理通过四个并行的NerdGraph查询(计数、计时、用户影响、样本详细信息)获取错误数据,将丰富的数据发送给Claude进行分析,并生成结构化的降价报告。

许可证

麻省理工学院