🚀 New Relic MCP Server
New Relic MCP Server 是一个遵循模型上下文协议(MCP)的服务器,可与 New Relic 的可观测性平台实现无缝集成。你可以通过这个简单统一的接口查询指标、管理警报、监控应用程序,并与整个可观测性堆栈进行交互。
免责声明:这是一个非官方的社区项目,与 New Relic, Inc. 没有关联、未得到其认可或支持。所有商标均为其各自所有者的财产。
🚀 快速开始
按照以下步骤,你可以快速安装并使用 New Relic MCP Server:
- 安装并配置 New Relic MCP Server。
- 获取 New Relic 凭证。
- 通过 MCP 客户端与 New Relic 进行交互。
✨ 主要特性
- 📊 NRQL 查询 - 执行强大的查询以分析数据。
- 🚀 APM 集成 - 监控应用程序的性能和健康状况。
- 🔔 警报管理 - 查看并确认警报和事件。
- 🔍 实体搜索 - 在整个基础设施中发现并检查实体。
- 📈 合成监控 - 管理合成监控器和检查。
- 🔧 NerdGraph API - 直接访问 New Relic 的 GraphQL API。
- 🌐 REST v2 工具(2.0+) - 提供用于部署、APM 应用程序、指标和警报的高价值 REST 端点。
📦 安装指南
使用 Smithery 快速安装
若要通过 Smithery 进行安装或部署,请参阅官方文档:部署、项目配置 和 smithery.yaml
参考。
若要通过 Smithery 为 Claude Desktop 自动安装 New Relic MCP,请执行以下命令:
npx @smithery/cli install newrelic-mcp --client claude
Smithery CLI(推荐)
我们推荐使用 Smithery CLI 进行本地开发、检查和部署。其优势如下:
- 统一的开发/构建/部署工作流程,与客户端无关。
- 带有热重载和 playground 的开发服务器(可选隧道)。
- 为
stdio
或 shttp
传输构建捆绑包。
- 交互式检查服务器;使用提供的配置运行。
- 为每个客户端简单安装。
示例:
npx @smithery/cli dev src/server.ts --port 8181 --no-open
npx @smithery/cli build src/server.ts --out .smithery/index.cjs --transport shttp
npx @smithery/cli inspect @cloudbring/newrelic-mcp
npx @smithery/cli run @cloudbring/newrelic-mcp --config '{"NEW_RELIC_API_KEY":"...","NEW_RELIC_ACCOUNT_ID":"..."}'
npx @smithery/cli install newrelic-mcp --client claude
npx @smithery/cli playground --port 3001
手动安装
Claude Desktop
将以下内容添加到你的 Claude Desktop 配置文件中:
- **macOS**:`~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**:`%APPDATA%\Claude\claude_desktop_config.json`
{
"mcpServers": {
"newrelic": {
"command": "npx",
"args": [
"-y",
"newrelic-mcp"
],
"env": {
"NEW_RELIC_API_KEY": "your-api-key-here",
"NEW_RELIC_ACCOUNT_ID": "your-account-id"
}
}
}
}
Cline (VS Code)
将以下内容添加到你在 VS Code 中的 Cline 设置中:
```json
{
"cline.mcpServers": [
{
"name": "newrelic",
"command": "npx",
"args": ["-y", "newrelic-mcp"],
"env": {
"NEW_RELIC_API_KEY": "your-api-key-here",
"NEW_RELIC_ACCOUNT_ID": "your-account-id"
}
}
]
}
```
Zed Editor
将以下内容添加到你的 Zed 配置文件 `~/.config/zed/settings.json` 中:
```json
{
"language_models": {
"mcp": {
"servers": {
"newrelic": {
"command": "npx",
"args": ["-y", "newrelic-mcp"],
"env": {
"NEW_RELIC_API_KEY": "your-api-key-here",
"NEW_RELIC_ACCOUNT_ID": "your-account-id"
}
}
}
}
}
}
```
Windsurf Editor
将以下内容添加到你的 Windsurf Cascade 配置中:
```json
{
"mcpServers": {
"newrelic": {
"command": "npx",
"args": ["-y", "newrelic-mcp"],
"env": {
"NEW_RELIC_API_KEY": "your-api-key-here",
"NEW_RELIC_ACCOUNT_ID": "your-account-id"
}
}
}
}
```
本地开发
1. 克隆仓库:
```bash
git clone https://github.com/cloudbring/newrelic-mcp.git
cd newrelic-mcp
```
2. 安装依赖并构建:
```bash
npm install
npm run build
```
3. 将以下内容添加到你的 MCP 客户端配置中:
```json
{
"mcpServers": {
"newrelic": {
"command": "node",
"args": ["/path/to/newrelic-mcp/dist/server.js"],
"env": {
"NEW_RELIC_API_KEY": "your-api-key-here",
"NEW_RELIC_ACCOUNT_ID": "your-account-id"
}
}
}
}
```
🔧 配置说明
必需的环境变量
NEW_RELIC_API_KEY
- 你的 New Relic 用户 API 密钥(必需)。
NEW_RELIC_ACCOUNT_ID
- 你的 New Relic 账户 ID(可选,可在每个工具调用时提供)。
获取 New Relic 凭证
- API 密钥:
- 登录 New Relic。
- 在左侧边栏中导航到 API 密钥。
- 创建一个具有适当权限的新用户 API 密钥。
- 账户 ID:
- 登录 New Relic 时,在 URL 中找到你的账户 ID。
- 或者导航到 管理 → 访问管理 → 账户。
有关详细的设置说明,请参阅 docs/new-relic-setup.md。
💻 使用示例
基础用法
配置完成后,你可以通过 MCP 客户端与 New Relic 进行交互:
查询数据
"Show me the average response time for my web application over the last hour"
"What are the top 10 slowest database queries today?"
"Display error rate trends for the production environment"
监控应用程序
"List all my APM applications and their current status"
"Show me the health of my Node.js services"
"Which applications have active alerts?"
管理警报
"Show me all open incidents"
"What critical alerts fired in the last 24 hours?"
"Acknowledge incident #12345"
搜索基础设施
"Find all Redis databases in production"
"Show me entities with high CPU usage"
"List all synthetic monitors and their success rates"
📚 详细文档
工具参考
以下是此服务器公开的所有 MCP 工具的简明目录。详细的故事/规范请参阅 docs 文件夹。
NerdGraph/GraphQL 工具
工具 |
摘要 |
run_nrql_query |
执行 NRQL 查询(需要 target_account_id ) |
run_nerdgraph_query |
执行原始 NerdGraph GraphQL 查询 |
list_apm_applications |
通过 NerdGraph 列出 APM 应用程序 |
search_entities |
搜索实体(名称、类型、标签) |
get_entity_details |
获取 GUID 的详细信息 |
list_alert_policies |
通过 NerdGraph 列出警报策略 |
list_open_incidents |
通过 NerdGraph 列出未解决的事件 |
acknowledge_incident |
确认事件(仅适用于 NerdGraph) |
list_synthetics_monitors |
列出合成监控器 |
create_browser_monitor |
创建浏览器监控器 |
get_account_details |
获取账户元数据 |
REST v2 工具(v2.0 新增)
工具 |
摘要 |
注意事项 |
create_deployment |
为 APM 应用程序创建部署标记 |
输入:application_id 、revision ;可选 changelog 、description 、user ;支持 region |
list_deployments_rest |
列出应用程序的部署 |
支持 page 、auto_paginate 、region |
delete_deployment |
删除部署标记 |
需要 confirm: true ;用户 API 密钥必须具有管理员角色权限 |
list_apm_applications_rest |
通过 REST 列出 APM 应用程序 |
过滤器:filter[name] 、filter[host] 、filter[ids] 、filter[language] ;自动分页 |
list_metric_names_for_host |
列出主机的指标名称/值 |
输入:application_id 、host_id ,可选 name ;自动分页 |
get_metric_data_for_host |
获取主机的时间片指标数据 |
输入:application_id 、host_id 、names[] ;可选 values[] 、from 、to 、period 、summarize ;自动分页 |
list_application_hosts |
列出 APM 应用程序的主机 |
过滤器:filter[hostname] 、filter[ids] ;自动分页 |
list_alert_policies_rest |
通过 REST 列出警报策略 |
可选 filter_name ;支持分页 |
list_open_incidents_rest |
通过 REST 列出事件 |
服务器没有 only_open /priority 过滤器;这些在客户端应用;自动分页 |
参考资料:
- 详细规范和模式:
docs/REST_ENDPOINT_TOOL.md
和 docs/rest-tools-stories/*
故障排除
连接问题
如果你在连接时遇到问题:
1. 验证你的 API 密钥是否有效:
```bash
curl -X POST https://api.newrelic.com/graphql \
-H 'Content-Type: application/json' \
-H 'API-Key: YOUR_API_KEY' \
-d '{"query":"{ actor { user { email } } }"}'
```
2. 检查你的账户 ID 是否正确。
3. 确保你的 API 密钥具有必要的权限。
4. 检查 MCP 客户端日志以获取详细的错误消息。
权限错误
如果你收到权限错误:
1. 验证你的 API 密钥是否具有所需的权限:
- 对于 NRQL 查询:需要 `NRQL query` 权限。
- 对于 APM 数据:需要 `APM` 读取权限。
- 对于警报:需要 `Alerts` 读写权限。
2. 如果需要,创建一个具有更广泛权限的新 API 密钥。
开发说明
项目结构
src/
├── server.ts # 主 MCP 服务器实现
├── client/
│ └── newrelic-client.ts # New Relic API 客户端
└── tools/
├── nrql.ts # NRQL 查询工具
├── apm.ts # APM 应用程序工具
├── entity.ts # 实体管理工具
├── alert.ts # 警报和事件工具
├── synthetics.ts # 合成监控工具
└── nerdgraph.ts # NerdGraph 查询工具
设置开发环境
- 克隆仓库:
git clone https://github.com/cloudbring/newrelic-mcp.git
cd newrelic-mcp
- 安装依赖:
npm install
- 创建一个
.env
文件:
NEW_RELIC_API_KEY=your-api-key-here
NEW_RELIC_ACCOUNT_ID=your-account-id
- 构建项目:
npm run build
开发命令
npm run dev
npm run build
npm test
npm run test:coverage
npm run lint
npm run format
npm run test:server
测试
该项目使用测试驱动开发(TDD),并结合以下工具:
- Vitest 进行单元测试。
- Gherkin 进行 BDD 测试。
- Evalite 进行 LLM 响应验证。
npm test
npm run test:coverage
npm run test:bdd
USE_REAL_ENV=true npm test
调试
使用 MCP Inspector 测试和调试服务器:
npm run inspect
npm run inspect:dev
npm run inspect:env
有关详细说明,请参阅 docs/mcp-inspector-setup.md。
架构
服务器采用模块化架构,包括:
- 客户端层:处理与 New Relic API 的通信。
- 工具层:实现 MCP 工具规范。
- 服务器层:管理 MCP 协议和工具路由。
每个工具:
- 具有单一、明确的目的。
- 使用 Zod 模式验证输入。
- 返回结构化、类型化的响应。
- 包括全面的错误处理。
贡献指南
我们欢迎贡献!详细信息请参阅我们的 贡献指南。
开发工作流程
- 分叉仓库。
- 创建一个功能分支(
git checkout -b feature/amazing-feature
)。
- 首先编写测试(TDD 方法)。
- 实现你的功能。
- 确保所有测试通过(
npm test
)。
- 保持代码覆盖率 >90%。
- 运行 linting(
npm run lint
)。
- 提交你的更改(提交将自动格式化)。
- 推送到你的分支。
- 打开一个拉取请求。
代码风格
本项目使用:
- Biome 进行 linting 和格式化。
- TypeScript 并启用严格模式。
- 2 个空格 进行缩进。
- 单引号 用于字符串。
- 分号 始终使用。
文档资料
- New Relic 设置指南 - 详细的凭证设置。
- MCP Inspector 设置 - 测试和调试。
- 日志记录与遥测 - 测试监控。
- 实现细节 - 架构深入分析。
- REST 工具概述 - REST v2 工具的高级设计。
- REST 工具故事 - 每个工具的规范、模式和测试计划。
对比情况
我们研究了其他公开的 New Relic MCP 服务器,在撰写本文时,未发现任何积极维护、功能完整的替代方案。如果你知道有这样的项目,请打开一个问题将其添加到此处。
项目 |
状态 |
传输方式 |
部署 |
APM 应用程序 |
指标 |
警报 |
合成监控 |
备注 |
本项目 (newrelic-mcp) |
活跃 |
NerdGraph + REST v2 |
创建/列出/删除 |
列出(NerdGraph + REST) |
主机名称 + 时间片(REST) |
策略 + 事件(NG + REST) |
列出/创建(浏览器) |
全面的测试和文档 |
计划的增强功能(基于 REST v2 目录和用户需求):
- 警报:在可用的情况下,通过 REST 管理违规和条件。
- 指标:提供更广泛的应用程序级指标端点(名称/数据),而不仅仅是每个主机的指标。
- 额外的 REST 覆盖:标签、关键事务、移动应用程序(根据反馈进行优先级排序)。
支持与反馈
📄 许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
免责声明
本项目与 New Relic, Inc. 没有关联、未得到其认可或支持。它是一个独立的开源项目,使用了 New Relic 的公共 API。
致谢
由 @cloudbring 使用 Cursor 和 Claude Code 用心打造 ❤️