返回市场
麦克佩新里奇

麦克佩新里奇

作者:thrashy4 星标更新:2025-07-04

项目介绍

New Relic MCP 服务器

一个全面的模型上下文协议(MCP)服务器,用于 New Relic 的监控、可观测性和管理操作。

功能

核心监控与可观测性

  • NRQL 查询执行:运行自定义的新 Relic 查询语言查询
  • 应用程序性能:实时性能指标(响应时间、吞吐量、Apdex)
  • 错误监控:错误率、计数以及详细的错误分析
  • 基础设施监控:主机指标、CPU、内存、磁盘使用情况
  • 事件管理:最近的事件、违规行为及警报状态

仪表板管理

  • 仪表板操作:创建、读取、更新和删除仪表板
  • 小部件管理:添加、更新和移除仪表板小部件
  • 搜索与发现:通过名称或GUID查找仪表板
  • 可视化支持:折线图、柱状图、饼图、表格、大屏幕显示

警报与通知系统

  • 警报策略:创建和管理具有可配置事件偏好的警报策略
  • NRQL 条件:设置具有阈值和触发器的自定义警报条件
  • 通知目的地:配置电子邮件、Slack、Webhook、PagerDuty 集成
  • 通知渠道:将目的地链接到特定的通知偏好
  • 工作流:连接警报策略到通知渠道,并进行过滤

部署跟踪

  • 部署标记:跟踪部署事件及其影响
  • 发布关联:将性能变化与部署相关联

安装

先决条件

  • Python 3.11+(推荐:使用 uv 进行快速依赖管理)
  • New Relic 用户 API 密钥(非 Ingest 密钥)
  • New Relic 账户ID

快速开始

# 克隆仓库
git clone <repository-url>
cd mcp-newrelic

# 安装依赖(推荐使用 uv)
uv sync

# 或者使用 pip
pip install -e .

# 配置您的凭据(参见下面的配置部分)

配置

该服务器支持灵活配置,优先级明确(从高到低):

1. 命令行参数(最高优先级)

uv run python server.py \
  --api-key "NRAK-your-api-key" \
  --account-id "your-account-id" \
  --region "US"

2. JSON 配置文件

# 复制并编辑示例配置
cp newrelic-config.json.example config/newrelic-config.json

# 使用配置文件运行
uv run python server.py --config config/newrelic-config.json

示例 newrelic-config.json

{
  "api_key": "NRAK-your-api-key",
  "account_id": "your-account-id", 
  "region": "US",
  "timeout": 30,
  "rate_limit": 100,
  "retry_attempts": 3
}

3. 环境变量(最低优先级)

export NEW_RELIC_API_KEY="NRAK-your-api-key"
export NEW_RELIC_ACCOUNT_ID="your-account-id"
export NEW_RELIC_REGION="US"  # US 或 EU
export NEW_RELIC_TIMEOUT="30"
export NEW_RELIC_RATE_LIMIT="100"
export NEW_RELIC_RETRY_ATTEMPTS="3"

获取您的凭据

  1. API 密钥:前往 New Relic API 密钥 → 创建用户 API 密钥
  2. 账户ID:在您的 New Relic URL 中找到:https://one.newrelic.com/accounts/{ACCOUNT_ID}/...
  3. 区域:如果您的账户位于 one.eu.newrelic.com,则使用 "EU",否则使用 "US"

使用方法

启动服务器

# 方法 1:环境变量
export NEW_RELIC_API_KEY="your-key"
export NEW_RELIC_ACCOUNT_ID="your-id"
uv run python server.py

# 方法 2:配置文件
uv run python server.py --config config/newrelic-config.json

# 方法 3:命令行参数
uv run python server.py --api-key YOUR_KEY --account-id YOUR_ID

# 查看所有选项
uv run python server.py --help

MCP 客户端集成

配置您的 MCP 客户端以连接到服务器。例如对于 Claude Desktop:

{
  "mcpServers": {
    "newrelic": {
      "command": "uv",
      "args": ["run", "python", "/path/to/mcp-newrelic/server.py"],
      "env": {
        "NEW_RELIC_API_KEY": "your-api-key",
        "NEW_RELIC_ACCOUNT_ID": "your-account-id"
      }
    }
  }
}

可用工具

NRQL & 监控

  • query_nrql:执行具有完全灵活性的自定义 NRQL 查询
  • get_app_performance:应用程序性能指标(平均/p95响应时间、吞吐量、Apdex)
  • get_app_errors:错误指标、计数及错误分析
  • get_incidents:带有时间过滤的最近事件
  • get_infrastructure_hosts:基础设施主机指标(CPU、内存、磁盘)
  • get_alert_violations:最近的警报违规行为及状态
  • get_deployments:部署标记及影响分析

仪表板管理

  • get_dashboards:列出并搜索仪表板,带过滤
  • search_all_dashboards:高级仪表板搜索,本地过滤
  • get_dashboard_widgets:检索仪表板中的所有小部件
  • create_dashboard:为监控创建新的仪表板
  • add_widget_to_dashboard:添加基于 NRQL 的自定义小部件
  • update_widget:更新现有仪表板小部件
  • delete_widget:从仪表板中移除小部件

警报与通知管理

  • create_alert_policy:创建具有事件偏好的警报策略
  • create_nrql_condition:创建基于 NRQL 的警报条件
  • create_notification_destination:设置通知端点(电子邮件、Slack、Webhook、PagerDuty)
  • create_notification_channel:创建通知渠道
  • create_workflow:连接警报到通知,并进行过滤
  • list_alert_policies:列出所有警报策略
  • list_alert_conditions:按策略列出警报条件
  • list_notification_destinations:列出所有通知端点
  • list_notification_channels:列出所有通知渠道
  • list_workflows:列出所有警报工作流

MCP 资源

通过这些 MCP 资源访问结构化数据:

  • newrelic://applications:被监控应用的完整列表
  • newrelic://incidents/recent:最近的事件和警报摘要
  • newrelic://dashboards:仪表板元数据和小部件
  • newrelic://alerts/policies:警报策略和配置
  • newrelic://alerts/conditions:所有策略的警报条件
  • newrelic://alerts/workflows:工作流配置和通知

架构

模块化设计

  • 策略模式:使用可插拔策略实现的工具处理器
  • 客户端层:针对监控、警报和仪表板的专用客户端
  • 配置管理:分层配置,具备验证和安全性
  • 实用模块:用于错误处理、GraphQL 操作和格式化的共享代码

关键组件

  • NewRelicClient:统一客户端接口,结合所有专用客户端
  • AlertsClient:警报策略、条件和通知管理
  • DashboardsClient:仪表板和小部件操作
  • MonitoringClient:NRQL 查询和性能监控
  • ToolHandlers:基于策略的 MCP 工具调用调度器
  • ResourceHandlers:MCP 资源操作和数据格式化

Docker 支持

快速 Docker 运行

docker build -t newrelic-mcp-server .

docker run -e NEW_RELIC_API_KEY=your-key \
           -e NEW_RELIC_ACCOUNT_ID=your-id \
           newrelic-mcp-server

Docker Compose(推荐)

# 设置环境
cp .env.example .env
# 编辑 .env 文件,填写您的 New Relic 凭证

# 构建并运行
docker-compose up --build

# 在后台运行
docker-compose up -d --build

生产部署

Docker 镜像使用:

  • 多阶段构建优化镜像大小
  • 非 root 用户提高安全性
  • 卷挂载用于配置和日志
  • 健康检查容器监控

开发

开发环境设置

# 安装开发依赖
uv sync --dev

# 安装预提交钩子
uv run pre-commit install

# 运行质量检查
uv run ruff check .          # 代码检查
uv run ruff format .         # 代码格式化  
uv run mypy newrelic_mcp/    # 类型检查
uv run pylint newrelic_mcp/  # 额外的代码分析

代码质量

该项目维护高质量代码:

  • Ruff:快速代码检查和格式化
  • MyPy:静态类型检查
  • Pylint:额外的代码分析
  • 预提交钩子:自动质量检查
  • 全面的类型注解:完整的类型覆盖

测试

# 运行基本功能测试
uv run python test_server.py

# 使用您的凭证测试
NEW_RELIC_API_KEY=your-key NEW_RELIC_ACCOUNT_ID=your-id uv run python test_server.py

有关详细开发信息,请参阅 DEVELOPMENT.md

示例用法

完整警报设置工作流程

# 1. 创建警报策略
create_alert_policy(name="高 CPU 使用率策略")

# 2. 创建 NRQL 条件  
create_nrql_condition(
    policy_id="步骤1中的策略ID",
    name="高 CPU 警报",
    nrql_query="SELECT average(cpuPercent) FROM SystemSample",
    threshold=80
)

# 3. 创建通知目的地
create_notification_destination(
    name="团队邮件",
    type="EMAIL", 
    properties={"email": "alerts@公司.com"}
)

# 4. 创建通知渠道
create_notification_channel(
    name="CPU 警报渠道",
    destination_id="步骤3中的目的地ID",
    type="EMAIL"
)

# 5. 创建工作流
create_workflow(
    name="CPU 警报工作流",
    channel_ids=["步骤4中的渠道ID"]
)

要求

  • Python:3.11 或更高版本
  • New Relic API 密钥:用户 API 密钥(以 NRAK-NRAA- 开头)
  • New Relic 账户:具有适当权限的有效账户
  • 依赖项:自动管理,使用 uvpip

许可证

本项目根据 MIT 许可证 授权。详情请参阅 LICENSE 文件。

贡献

欢迎贡献!请:

  1. 阅读 DEVELOPMENT.md 以获取设置说明
  2. 遵循已建立的代码风格和质量标准
  3. 为新功能添加测试
  4. 根据需要更新文档

支持