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修复者)使用。
先决条件
- Node.js 18+
- A. 新Relic用户API密钥
- 一 无烟煤API键 (仅适用于分诊代理)
设置
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(自定义连接器)
- 使用隧道启动服务器(例如cloudflared):
npm run serve
cloudflared tunnel --url http://localhost:3001- 在Claude.ai中→ 设置→ 连接器→ 添加自定义连接器
- 将端点URL设置为隧道URL+
/mcp - 使用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 devNEW_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--健康检查
凭证优先级
服务器按以下顺序解析凭据(先赢):
- HTTP标头(
x-nr-api-key,x-nr-account-id)--用于Claude.ai定制连接器 - 环境变量(
NEW_RELIC_API_KEY,NEW_RELIC_ACCOUNT_ID)--适用于克劳德桌面/独立 - 刀具参数(
accountId在单个工具调用上)--按请求覆盖
收件箱分类错误
针对您的New Relic帐户运行(过去24小时):
npm run triage以更宽的时间窗口运行:
npm run triage:week使用模拟数据测试没有New Relic的完整管道:
npm run triage -- --mockCLI选项
--account-id New Relic account ID (or set NEW_RELIC_ACCOUNT_ID)
--since NRQL time range (default: "24 hours ago")
--limit Max error groups to fetch (default: 50)
--output-dir
Report output directory (default: "reports/")
--model Claude model for analysis
--mock Use realistic sample data instead of querying New Relic
--help Show help报告输出示例
分流代理在中生成降价报告 reports/ 与:
- 执行摘要 --错误收件箱健康状况的高级评估
- 优先级错误 --P0/P1/P2对错误进行排序,包括业务影响、推理、验证步骤和样本堆栈跟踪
- 回归警报 --新引入的具有严重性和证据的错误
- 降噪 --要合并、静音或重新分类的错误组
- 横切图案 --跨多个服务的系统性问题
- 附录 --所有错误组的完整表格
建筑
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进行分析,并生成结构化的降价报告。
许可证
麻省理工学院
