mcpField
N
New Relic NerdGraph MCP Server

New Relic NerdGraph MCP Server

ローカル
github.com/ulucaydin開発ツール363 週間前に更新

New Relic NerdGraph MCP Server について

NerdGraph API経由でNew Relicアカウントのデータを照会・管理するMCPサーバーです。汎用クエリに加え、エンティティ、APM、Syntheticモニター、アラートを扱えます。

主な機能

  1. 01NerdGraphとNRQLのクエリ実行
  2. 02エンティティの検索と詳細取得
  3. 03APMアプリとSyntheticモニターの一覧
  4. 04ブラウザーモニターの作成
  5. 05アラートインシデントの確認と承認

活用シーン

  1. 01NRQLによるアカウントテレメトリの調査
  2. 02アプリやホストなどの詳細確認
  3. 03Syntheticブラウザーモニターの作成
  4. 04未解決アラートの絞り込みと承認

MCP 対応

New Relicのクエリ、リソース、操作ツールをMCPクライアントに公開します。設定にはNew Relic APIキーとアカウントIDが必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MseeP.ai Security Assessment Badge

New Relic NerdGraph MCP サーバー

License: MIT

このリポジトリは、New Relic NerdGraph API とやり取りするための Model Context Protocol(MCP) サーバーを提供します。MCP クライアント(Claude Desktop など)が自然言語または特定のコマンドを使って、New Relic アカウントのデータや機能を照会し、操作できるようにします。

fastmcp フレームワークを使用して構築されています。

機能

この MCP サーバーは、以下を含むさまざまな New Relic の機能をツールおよびリソースとして公開します。

  • アカウントの詳細: 設定済みアカウントの基本情報を取得します。
  • 汎用 NerdGraph クエリ: 任意の NerdGraph クエリを実行します。
  • NRQL クエリ: アカウントデータに対して特定の NRQL クエリを実行します。
  • エンティティ管理: エンティティ(アプリケーション、ホスト、モニターなど)を検索し、GUID を指定して詳細情報を取得します。
  • APM: Application Performance Monitoring(APM)アプリケーションを一覧表示します。
  • Synthetics: Synthetic モニターを一覧表示し、シンプルなブラウザーモニターを作成します。
  • アラート: アラートポリシーを一覧表示し、未解決のインシデントを確認して、インシデントを承認します。

前提条件

  • Python: Python 3.10 以降を推奨します(fastmcp の要件)。
  • pip: Python パッケージインストーラー。
  • New Relic アカウント: New Relic アカウントへのアクセス権。
  • New Relic User API キー: 認証には User API キーが必要です。こちらで生成できます。このキーは安全に保管してください!
  • New Relic アカウント ID: ほとんどの操作で New Relic アカウント ID が必要です。New Relic UI(多くの場合、URL またはアカウント設定内)で確認できます。

セットアップとインストール

  1. リポジトリをクローンします:

    git clone <repository_url> # Replace <repository_url> with the actual URL
    cd mcp-server-newrelic
    
  2. 依存関係をインストールします:

    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 コマンドをシェルのプロファイル(.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 クライアントでの使用方法

  1. MCP サーバーを起動する(上記の説明を参照)。

  2. MCP クライアントを再起動する(例:Claude Desktop)。

  3. クライアントは実行中のサーバーを自動的に検出し、接続するはずです。外部ツールが利用可能であることを示すインジケーター(Claude Desktop の 🔨 アイコンなど)が表示される場合があります。

  4. これで、自然言語を使うか、以下に記載されているツールを直接呼び出して、New Relic アカウントを操作できます。

    • 自然言語の例:「APM アプリケーションを表示して」または「アカウント 1234567 の未解決の重大なインシデントを一覧表示して」
    • 直接呼び出す場合(対応している場合): list_apm_applications() または list_open_incidents(priority='CRITICAL', target_account_id=1234567)

利用可能なツールとリソース

サーバーは、Model Context Protocol を通じてアクセスできる以下の関数を提供します。


共通(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 文字列。
  • プロンプト: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"}])。
    • 戻り値: 新しいモニターの GUID を含む結果の JSON 文字列。
  • リソース: モニターの GUID(newrelic://entity/{monitor_guid})を指定して、get_entity_details リソースで 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 文字列。

貢献

貢献を歓迎します!お気軽にイシューやプルリクエストを送信してください。

  1. リポジトリをフォークします。
  2. 新しいブランチを作成します(git checkout -b feature/your-feature)。
  3. 変更を加えます。
  4. 変更をコミットします(git commit -am 'Add some feature')。
  5. ブランチにプッシュします(git push origin feature/your-feature)。
  6. プルリクエストを作成します。

ライセンス

このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルを参照してください(LICENSE ファイルが存在する場合)。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。