一个全面的模型上下文协议(MCP)服务器,用于 New Relic 的监控、可观测性和管理操作。
uv 进行快速依赖管理)# 克隆仓库
git clone <repository-url>
cd mcp-newrelic
# 安装依赖(推荐使用 uv)
uv sync
# 或者使用 pip
pip install -e .
# 配置您的凭据(参见下面的配置部分)
该服务器支持灵活配置,优先级明确(从高到低):
uv run python server.py \
--api-key "NRAK-your-api-key" \
--account-id "your-account-id" \
--region "US"
# 复制并编辑示例配置
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
}
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"
https://one.newrelic.com/accounts/{ACCOUNT_ID}/...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 客户端以连接到服务器。例如对于 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"
}
}
}
}
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 资源访问结构化数据:
newrelic://applications:被监控应用的完整列表newrelic://incidents/recent:最近的事件和警报摘要newrelic://dashboards:仪表板元数据和小部件newrelic://alerts/policies:警报策略和配置newrelic://alerts/conditions:所有策略的警报条件newrelic://alerts/workflows:工作流配置和通知NewRelicClient:统一客户端接口,结合所有专用客户端AlertsClient:警报策略、条件和通知管理DashboardsClient:仪表板和小部件操作MonitoringClient:NRQL 查询和性能监控ToolHandlers:基于策略的 MCP 工具调用调度器ResourceHandlers:MCP 资源操作和数据格式化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
# 设置环境
cp .env.example .env
# 编辑 .env 文件,填写您的 New Relic 凭证
# 构建并运行
docker-compose up --build
# 在后台运行
docker-compose up -d --build
Docker 镜像使用:
# 安装开发依赖
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/ # 额外的代码分析
该项目维护高质量代码:
# 运行基本功能测试
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"]
)
NRAK- 或 NRAA- 开头)uv 或 pip本项目根据 MIT 许可证 授权。详情请参阅 LICENSE 文件。
欢迎贡献!请: