](https://mseep.ai/app/ulucaydin-mcp-server-newrelic)
New Relic NerdGraph MCP服务器

此存储库提供 模型上下文协议(MCP) 用于与交互的服务器 新Relic NerdGraph API它允许MCP客户端(如Claude Desktop)使用自然语言或特定命令查询您的New Relic帐户数据和功能并与之交互。
使用 fastmcp 框架。
特性
此MCP服务器将各种New Relic功能作为工具和资源公开,包括:
- 帐户详细信息: 获取已配置帐户的基本信息。
- 通用NerdGraph查询: 执行任意NerdGraph查询。
- NRQL查询: 对您的帐户数据运行特定的NRQL查询。
- 实体管理: 搜索实体(应用程序、主机、监视器等)并按GUID检索详细信息。
- APM: 列出应用程序性能监控(APM)应用程序。
- 合成药物: 列出合成监视器并创建简单的浏览器监视器。
- 警报: 列出警报策略、查看未结事件和确认事件。
先决条件
- python Python 3.10+推荐(根据需要
fastmcp). - pip: Python包安装程序。
- 新文物帐户: 访问New Relic帐户。
- 新Relic用户API密钥: 身份验证需要用户API密钥。您可以生成一个 这里. 保管好这把钥匙!
- 新文物帐户ID: 大多数操作都需要您的New Relic帐户ID。您可以在New Relic UI中找到它(通常在URL或帐户设置中)。
设置和安装
- 克隆存储库:
git clone # Replace with the actual URL
cd mcp-server-newrelic- 安装依赖关系:
pip install -r requirements.txt这将安装 fastmcp, requests,以及它们的依赖关系。
配置
服务器需要您的New Relic API密钥和帐户ID才能正常工作。使用环境变量配置这些 之前 运行服务器:
# Replace YOUR_API_KEY and YOUR_ACCOUNT_ID with your actual credentials
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:mcpserver.py:主要入口点脚本。mcp:名称FastMCP在内部创建的实例server.py.
服务器将启动、打印注册消息并监听传入的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中的图标)显示外部工具可用。
- 现在,您可以使用自然语言或直接调用下面列出的工具与您的New Relic帐户进行交互。
- 自然语言示例: “显示我的APM应用程序”或“列出帐户1234567中未解决的关键事件” - 直接调用(如果支持): list_apm_applications() 或 list_open_incidents(priority='CRITICAL', target_account_id=1234567)
可用工具和资源
服务器提供可通过模型上下文协议访问的以下功能:
______________________________________________________________________
常见(features/common.py)
- 工具:
query_nerdgraph
- 说明: 执行任意NerdGraph查询。用于特定工具未涵盖的操作。 - 论据: - nerdgraph_query (str):GraphQL查询字符串。 - variables (可选\[Dict\]):查询的JSON变量字典。 - 退货: 查询结果的JSON字符串。
- 工具:
run_nrql_query
- 说明: 执行NRQL查询。 - 论据: - nrql (str):NRQL查询字符串(例如。, "SELECT count(*) FROM Transaction TIMESERIES"). - target_account_id (可选\[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 (可选\[str\]):按名称过滤(模糊匹配)。 - entity_type (可选\[str\]):按类型过滤(例如。, 'APPLICATION', 'HOST'). - domain (可选\[str\]):按域过滤(例如。, 'APM', 'INFRA'). - tags (可选\[List\[Dict\]\]):按标签过滤(例如。, [{"key": "env", "value": "prod"}]). - target_account_id (可选\[int\]):要在其中搜索的显式帐户ID。 - limit (int):最大结果(默认值50)。 - 退货: 搜索结果的JSON字符串。
- 资源:
get_entity_details
- 说明: 检索特定实体的详细信息。包括APM、浏览器、Infra、Synthetics、仪表板等的常见字段和特定类型的详细信息。 - URI: newrelic://entity/{guid} (替换 {guid} 具有实体GUID) - 退货: 实体详细信息的JSON字符串。
- 提示:
generate_entity_search_query
- 说明: 生成 query 字符串条件部分 entitySearch NerdGraph字段,可用于构建搜索查询。 - 论据: - entity_name (str):要搜索的名称(在提示生成中使用的完全匹配)。 - entity_domain (可选\[str\]):要包含在查询条件中的域。 - entity_type (可选\[str\]):键入要包含在查询条件中的内容。 - target_account_id (可选\[int\]):要包含在查询条件中的帐户ID。 - 退货: 表示搜索条件的字符串(例如。, "accountId = 123 AND name = 'My App' AND domain = 'APM'").
______________________________________________________________________
APM(features/apm.py)
- 工具:
list_apm_applications
- 说明: 列出APM应用程序。 - 论据: - target_account_id (可选\[int\]):要查询的帐户ID(如果省略,则使用默认值)。 - 退货: 包含APM应用程序列表的JSON字符串。
______________________________________________________________________
合成药物(features/synthetics.py)
- 工具:
list_synthetics_monitors
- 说明: 列出合成监视器。 - 论据: - target_account_id (可选\[int\]):要查询的帐户ID(如果省略,则使用默认值)。 - 退货: 包含合成监视器列表的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 (可选\[int\]):用于创建的帐户ID(如果省略,则使用默认值)。 - tags (可选\[List\[Dict\]\]):可选标签(例如。, [{"key": "team", "value": "ops"}]). - 退货: 包含结果的JSON字符串,包括新监视器的GUID。
- 资源: 可以使用以下命令检索合成监视器详细信息
get_entity_details具有监视器GUID的资源(newrelic://entity/{monitor_guid}).
______________________________________________________________________
警报(features/alerts.py)
- 工具:
list_alert_policies
- 说明: 列出警报策略,可选择按名称进行筛选。 - 论据: - target_account_id (可选\[int\]):要查询的帐户ID(如果省略,则使用默认值)。 - policy_name_filter (可选\[str\]):筛选name包含此字符串的策略。 - 退货: 包含警报策略列表的JSON字符串。
- 工具:
list_open_incidents
- 说明: 列出当前打开的警报事件。 - 论据: - target_account_id (可选\[int\]):要查询的帐户ID(如果省略,则使用默认值)。 - priority (可选\[str\]):按优先级筛选('CRITICAL', 'WARNING'). - 退货: 包含打开事件列表的JSON字符串。
- 工具:
acknowledge_alert_incident
- 说明: 确认开放警报事件。 - 论据: - incident_id (int):要确认的事件的ID。 - target_account_id (可选\[int\]):发生事件的帐户ID(如果省略,则使用默认值)。 - message (可选\[str\]):用于确认的可选消息。 - 退货: 带有确认结果的JSON字符串。
______________________________________________________________________
贡献
欢迎投稿!请随时提交问题或拉取请求。
- 分叉存储库。
- 创建新分支(
git checkout -b feature/your-feature). - 进行更改。
- 提交您的更改(
git commit -am 'Add some feature'). - 推到分支(
git push origin feature/your-feature). - 打开拉取请求。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息(如果存在LICENSE文件)。
