New Relic NerdGraph MCP Server
New Relic 非官方 MCP 服务器(Alpha 版)
ulucaydin
README
New Relic NerdGraph MCP 服务器
<!-- Add license if applicable -->
此仓库提供了一个 模型上下文协议 (MCP) 服务器,用于与 New Relic NerdGraph API 交互。它允许 MCP 客户端(如 Claude Desktop)使用自然语言或特定命令来查询和交互您的 New Relic 帐户数据和功能。
使用 fastmcp 框架构建。
功能
此 MCP 服务器将各种 New Relic 功能公开为工具和资源,包括:
- 帐户详情: 获取有关配置帐户的基本信息。
- 通用 NerdGraph 查询: 执行任意 NerdGraph 查询。
- NRQL 查询: 针对您的帐户数据运行特定的 NRQL 查询。
- 实体管理: 搜索实体(应用程序、主机、监视器等),并通过 GUID 检索详细信息。
- APM: 列出应用程序性能监控 (APM) 应用程序。
- Synthetics: 列出 Synthetic 监视器并创建简单的浏览器监视器。
- 警报: 列出警报策略,查看未解决的事件,并确认事件。
前提条件
- Python: 推荐使用 Python 3.10+(
fastmcp
要求)。 - pip: Python 包安装程序。
- New Relic 帐户: 访问 New Relic 帐户。
- New Relic 用户 API 密钥: 需要用户 API 密钥进行身份验证。您可以在此处生成一个。请务必保护此密钥!
- New Relic 帐户 ID: 大多数操作都需要您的 New Relic 帐户 ID。您可以在 New Relic UI 中找到它(通常在 URL 或帐户设置中)。
设置和安装
-
克隆仓库:
git clone <repository_url> # 将 <repository_url> 替换为实际 URL cd mcp-server-newrelic
-
安装依赖项:
pip install -r requirements.txt
这将安装
fastmcp
、requests
及其依赖项。
配置
服务器需要您的 New Relic API 密钥和帐户 ID 才能运行。在运行服务器之前,使用环境变量配置这些信息:
# 将 YOUR_API_KEY 和 YOUR_ACCOUNT_ID 替换为您的实际凭据
export NEW_RELIC_API_KEY="YOUR_API_KEY"
export NEW_RELIC_ACCOUNT_ID="YOUR_ACCOUNT_ID"
安全提示: 不要将您的 API 密钥硬编码到源代码中。建议使用环境变量。您还可以使用 direnv
等工具或将这些 export
命令放在您的 shell 配置文件(.zshrc
、.bashrc
等)中以实现持久性,但请注意安全隐患。
运行服务器
配置完成后,使用 fastmcp
命令行工具启动服务器:
fastmcp run server.py:mcp
server.py
:主入口点脚本。mcp
:在server.py
中创建的FastMCP
实例的名称。
服务器将启动,打印注册消息,并侦听传入的 MCP 连接(默认情况下通常在端口 8000 上,由 fastmcp
管理)。您应该看到类似于以下的输出:
Using New Relic Account ID: YOUR_ACCOUNT_ID
Registering common features...
Registering entity features...
Registering APM features...
Registering Synthetics features...
Registering Alerts features...
Feature registration complete.
INFO: Started server process [XXXXX]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
保持此终端窗口运行。
与 MCP 客户端一起使用
-
启动 MCP 服务器(如上所述)。
-
重启您的 MCP 客户端(例如,Claude Desktop)。
-
客户端应自动检测到正在运行的服务器并连接到它。您可能会看到一个指示器(例如 Claude Desktop 中的 🔨 图标)显示外部工具可用。
-
您现在可以使用自然语言或直接调用下面列出的工具来与您的 New Relic 帐户进行交互。
- 自然语言示例: “Show me my APM applications” 或 “List open critical incidents in account 1234567”
- 直接调用(如果支持):
list_apm_applications()
或list_open_incidents(priority='CRITICAL', target_account_id=1234567)
可用工具和资源
服务器通过模型上下文协议提供以下可访问的功能:
通用 (features/common.py
)
-
工具:
query_nerdgraph
- 描述: 执行任意 NerdGraph 查询。用于特定工具未涵盖的操作。
- 参数:
nerdgraph_query
(str):GraphQL 查询字符串。variables
(Optional[Dict]):查询的变量的 JSON 字典。
- 返回: 查询结果的 JSON 字符串。
-
工具:
run_nrql_query
- 描述: 执行 NRQL 查询。
- 参数:
nrql
(str):NRQL 查询字符串(例如,"SELECT count(*) FROM Transaction TIMESERIES"
)。target_account_id
(Optional[int]):要查询的帐户 ID(如果省略,则使用来自 env 的默认值)。
- 返回: NRQL 结果的 JSON 字符串。
-
资源:
get_account_details
- 描述: 提供配置的 New Relic 帐户的基本详细信息(ID、名称)。
- URI:
newrelic://account_details
- 返回: 包含帐户详细信息的 JSON 字符串 (
{"data": {"id": ..., "name": ...}}
) 或错误。
实体 (features/entities.py
)
-
工具:
search_entities
- 描述: 根据条件搜索 New Relic 实体。
- 参数:
name
(Optional[str]):按名称过滤(模糊匹配)。entity_type
(Optional[str]):按类型过滤(例如,'APPLICATION'
、'HOST'
)。domain
(Optional[str]):按域过滤(例如,'APM'
、'INFRA'
)。tags
(Optional[List[Dict]]):按标签过滤(例如,[{"key": "env", "value": "prod"}]
)。target_account_id
(Optional[int]):要在其中搜索的显式帐户 ID。limit
(int):最大结果数(默认为 50)。
- 返回: 搜索结果的 JSON 字符串。
-
资源:
get_entity_details
- 描述: 检索特定实体的详细信息。包括 APM、Browser、Infra、Synthetics、Dashboards 等的通用字段和特定于类型的详细信息。
- URI:
newrelic://entity/{guid}
(将{guid}
替换为实体 GUID) - 返回: 实体详细信息的 JSON 字符串。
-
Prompt:
generate_entity_search_query
- 描述: 为
entitySearch
NerdGraph 字段生成query
字符串条件部分,用于构建搜索查询。 - 参数:
entity_name
(str):要搜索的名称(在提示生成中使用精确匹配)。entity_domain
(Optional[str]):要包含在查询条件中的域。entity_type
(Optional[str]):要包含在查询条件中的类型。target_account_id
(Optional[int]):要包含在查询条件中的帐户 ID。
- 返回: 表示搜索条件的字符串(例如,
"accountId = 123 AND name = 'My App' AND domain = 'APM'"
)。
- 描述: 为
APM (features/apm.py
)
- 工具:
list_apm_applications
- 描述: 列出 APM 应用程序。
- 参数:
target_account_id
(Optional[int]):要查询的帐户 ID(如果省略,则使用默认值)。
- 返回: 包含 APM 应用程序列表的 JSON 字符串。
Synthetics (features/synthetics.py
)
-
工具:
list_synthetics_monitors
- 描述: 列出 Synthetic 监视器。
- 参数:
target_account_id
(Optional[int]):要查询的帐户 ID(如果省略,则使用默认值)。
- 返回: 包含 Synthetic 监视器列表的 JSON 字符串。
-
工具:
create_simple_browser_monitor
- 描述: 创建一个基本的 Synthetics 简单浏览器监视器。
- 参数:
monitor_name
(str):新监视器的名称。url
(str):要监视的 URL。locations
(List[str]):公共位置标签列表(例如,["AWS_US_EAST_1"]
)。period
(str):检查频率(例如,"EVERY_15_MINUTES"
)。默认值:"EVERY_15_MINUTES"
。status
(str):初始状态("ENABLED"
或"DISABLED"
)。默认值:"ENABLED"
。target_account_id
(Optional[int]):用于创建的帐户 ID(如果省略,则使用默认值)。tags
(Optional[List[Dict]]):可选标签(例如,[{"key": "team", "value": "ops"}]
)。
- 返回: 包含结果的 JSON 字符串,包括新监视器的 GUID。
-
资源: 可以使用
get_entity_details
资源和监视器的 GUID (newrelic://entity/{monitor_guid}
) 检索 Synthetics 监视器详细信息。
警报 (features/alerts.py
)
-
工具:
list_alert_policies
- 描述: 列出警报策略,可以选择按名称过滤。
- 参数:
target_account_id
(Optional[int]):要查询的帐户 ID(如果省略,则使用默认值)。policy_name_filter
(Optional[str]):过滤名称包含此字符串的策略。
- 返回: 包含警报策略列表的 JSON 字符串。
-
工具:
list_open_incidents
- 描述: 列出当前未解决的警报事件。
- 参数:
target_account_id
(Optional[int]):要查询的帐户 ID(如果省略,则使用默认值)。priority
(Optional[str]):按优先级过滤('CRITICAL'
、'WARNING'
)。
- 返回: 包含未解决事件列表的 JSON 字符串。
-
工具:
acknowledge_alert_incident
- 描述: 确认未解决的警报事件。
- 参数:
incident_id
(int):要确认的事件的 ID。target_account_id
(Optional[int]):事件发生的帐户 ID(如果省略,则使用默认值)。message
(Optional[str]):确认的可选消息。
- 返回: 包含确认结果的 JSON 字符串。
贡献
欢迎贡献!请随时提交问题或拉取请求。
- Fork 仓库。
- 创建一个新分支 (
git checkout -b feature/your-feature
)。 - 进行更改。
- 提交更改 (
git commit -am 'Add some feature'
)。 - 将分支推送到远程仓库 (
git push origin feature/your-feature
)。 - 打开一个拉取请求。
许可证
此项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件(如果存在 LICENSE 文件)。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。