PDF

NetCrunch MCP サーバー

NetCrunch は REST API を MCP (Model Context Protocol) サーバーとして公開し、AI アシスタントや LLM ベースのツールから NetCrunch 管理 API をプログラムで検出・呼び出しできるようにします。

MCP サーバーは REST API と同じ API キー、レート制限、バックエンドハンドラーを共有します — 各ツールは REST エンドポイントに 1 対 1 で対応します。

エンドポイント

MCP サーバーは 2 つのトランスポートをサポートします。どちらも /api/mcp パスで利用できます。

トランスポート メソッド URL 説明
Streamable HTTP POST /api/mcp 最新の単一エンドポイントトランスポート(推奨)
SSE GET /api/mcp/sse Server-Sent Events ストリームを開く
SSE messages POST /api/mcp/messages?sessionId=… SSE セッションに JSON-RPC メッセージを送信する

Streamable HTTP はステートレスです — 各リクエストで新しい MCP セッションが作成されます。これは最も簡単な統合方法で、すべての MCP クライアントで利用できます。

SSE は、永続的な接続を必要とするクライアント向けのステートフルなフォールバックです。クライアントは最初に /api/mcp/sse を開いてセッション ID を取得し、その後 /api/mcp/messages?sessionId=<id> にリクエストを送信します。

認証

すべてのリクエストには、有効な NetCrunch API キーを含める必要があります。MCP サーバーは、次のいずれかの場所でキーを受け付けます(上から順に確認されます)。

方法
Authorization ヘッダー Authorization: Bearer YOUR_API_KEY
x-api-key ヘッダー x-api-key: YOUR_API_KEY
クエリパラメーター ?api_key=YOUR_API_KEY

API キーは、NetCrunch Administration Console の User Profiles → API Keys で作成します。キーによって、呼び出し元がアクセスできるノードと操作が決まります — 同じセキュリティコンテキストが MCP と REST の両方に適用されます。

有効な API キーを含まないリクエストには、次のエラーレスポンスが返されます。

{ "error": "No API Key" }

レート制限

MCP リクエストは、REST API と同じ API キー単位のトークンバケットを共有します。デフォルトの制限(server.cfg.yml で設定可能)は次のとおりです。

設定 デフォルト
ウィンドウあたりの最大リクエスト数 100
ウィンドウの長さ 60 秒

制限を超えると、ツール呼び出しはエラー結果を返します。未使用のトークンは継続的に補充されます。

クライアント設定

Claude Desktop

claude_desktop_config.json に追加します。

{ "mcpServers": { "netcrunch": { "url": "https://YOUR_SERVER/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }

Cursor / VS Code (Copilot)

MCP 設定(.cursor/mcp.json または VS Code MCP config)に追加します。

{ "servers": { "netcrunch": { "url": "https://YOUR_SERVER/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }

Python (mcp client library)

from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client( "https://YOUR_SERVER/api/mcp", headers={"Authorization": "Bearer YOUR_API_KEY"} ) as (read, write, _): async with ClientSession(read, write) as session: await session.initialize()

    # List available tools
    tools = await session.list_tools()

    # Call a tool
    result = await session.call_tool("nodes.getProperties", {
        "node": "10.0.0.1",
        "properties": "Name,Address,OverallState"
    })
    print(result)

利用可能なツール

MCP サーバーは、8 グループに整理された 50 個のツールを公開します。各ツールは REST API エンドポイントに対応し、同じパラメーターを受け付けます。必須パラメーターには * が付いています。

ノード(19 ツール)

監視対象ノードを管理します — ノードの追加、削除、プロパティの読み取り/書き込み、監視の制御、タグ、ネットワークサービス、センサー、カスタムフィールド、子ノードの管理を行います。

ツール 説明 パラメーター
nodes.add 新しい監視対象ノードを追加 networkAddress, name, type
nodes.delete 監視対象ノードを削除 node
nodes.getProperties ノードのプロパティを取得 node, properties
nodes.getProperty 単一のノードプロパティを取得 node, property*
nodes.setProperties 複数のノードプロパティを設定 node
nodes.setProperty 単一のノードプロパティを設定 node, property*
nodes.setMonitoring 監視を有効または無効にする node, value* (on/off), disabledFrom, disabledUntil, reset
nodes.addNetworkService ネットワークサービスモニターを追加 node, name*, protocolId, timeout, repeat, additionalRepeat, monitoringTime, overrideSuppressing, param
nodes.setNetworkServiceParams サービスモニターのパラメーターを更新 node, service*, protocolId, timeout, repeat, additionalRepeat, monitoringTime, overrideSuppressing
nodes.deleteNetworkService サービスモニターを削除 node, service*
nodes.setSensorParams センサー監視を設定 node, sensor*, enabled, monitoringTime, credentials
nodes.setMonitoringEngineParams 監視エンジンを設定 node, engine*, enabled, monitoringTime, credentials
nodes.setCustomFieldValue カスタムフィールドの値を設定 node, field*, value
nodes.deleteCustomField カスタムフィールドを削除 node, field*
nodes.addChild 子ノードを追加 node, child*
nodes.deleteChild 子ノードを削除 node, child*
nodes.addTag タグを追加 node, tag*
nodes.deleteTag タグを削除 node, tag*
nodes.removeTags すべてのタグを削除 node

node パラメーターには、ノード ID(数値)、名前、IP アドレス、または DNS 名を指定できます。

ビュー(9 ツール)

ネットワークビューとビューフォルダーを管理します。

ツール 説明 パラメーター
views.add 新しいビューを作成 name*, parent
views.addFolder 新しいフォルダーを作成 name*, parent
views.delete ビューを削除 map
views.getProperties ビューのプロパティを取得 map, properties
views.getProperty 単一のプロパティを取得 map, property*
views.setProperties 複数のプロパティを設定 map
views.setProperty 単一のプロパティを設定 map, property*
views.addNode ビューにノードを追加 map, node*
views.removeNode ビューからノードを削除 map, node*

map パラメーターには、ビュー ID、名前、またはパスを指定できます。

ポリシー(6 ツール)

監視ポリシーを管理します。

ツール 説明 パラメーター
policies.getProperties ポリシーのプロパティを取得 map, properties
policies.getProperty 単一のプロパティを取得 map, property*
policies.setProperties 複数のプロパティを設定 map
policies.setProperty 単一のプロパティを設定 map, property*
policies.addNode ポリシーにノードを追加 map, node*
policies.removeNode ポリシーからノードを削除 map, node*

ノート(5 ツール)

ノードに関連付けられたノートを管理します。

ツール 説明 パラメーター
notes.add ノードにノートを追加 node, subject, text, label (red/green/blue/yellow), due, refid, category, archived
notes.get 参照 ID でノートを取得 node, refid*
notes.getProperty 単一のノートプロパティを取得 node, refid*, property*
notes.update ノートを更新 node, refid*, subject, text, label, due, category, archived
notes.updateProperty 単一のノートプロパティを更新 node, refid*, property*

インターフェイス設定(5 ツール)

ネットワークインターフェイスの表示設定を管理します。

ツール 説明 パラメーター
interfaceSettings.set インターフェイス設定を設定 node, ifIndex*, name, speed, note
interfaceSettings.get インターフェイス設定を取得 node, ifIndex
interfaceSettings.getAll すべてのインターフェイスを取得 node
interfaceSettings.delete インターフェイス設定を削除 node, ifIndex
interfaceSettings.deleteAll すべてのインターフェイス設定を削除 node

認証情報(2 ツール)

認証情報の種類とプロファイルを一覧表示します(管理者のみ)。

ツール 説明 パラメーター
credentials.getTypes 認証情報の種類を一覧表示
credentials.get 種類で認証情報を取得 type*

IP SLA(2 ツール)

ツール 説明 パラメーター
ipsla.get すべての IP SLA 操作を一覧表示
ipsla.getNode ノードの IP SLA を取得 node

NQA(2 ツール)

ツール 説明 パラメーター
nqa.get すべての NQA 操作を一覧表示
nqa.getNode ノードの NQA を取得 node

会話の例

接続すると、AI アシスタントは NetCrunch ツールを自然に使用できます。

ユーザー: 10.0.0.1 にあるノードのプロパティを表示してください

アシスタント{ "node": "10.0.0.1" } を指定して nodes.getProperties を呼び出し、結果を返します。

ユーザー: Web サーバーの監視を次の 2 時間無効にしてください

アシスタント{ "node": "web-server", "value": "off", "disabledUntil": "2026-04-26T20:00:00Z" } を指定して nodes.setMonitoring を呼び出します。

ユーザー: ファームウェアが更新されたことを示すノートをノード 42 に追加してください

アシスタント{ "node": "42", "subject": "Firmware updated", "text": "Firmware was updated to latest version.", "label": "green" } を指定して notes.add を呼び出します。

エラー処理

ツール呼び出しのエラーは、isError: true と JSON テキストコンテンツブロックを含む MCP エラー結果として返されます。

{ "content": [{ "type": "text", "text": "{\"error\":\"Authentication Failed\"}" }], "isError": true }

一般的なエラー条件:

エラー 原因
No API Key リクエストに認証情報がない
Authentication Failed API キーが無効または期限切れ
Node not Found 指定されたノードが存在しない
Access Denied API キーにこの操作の権限がない
Too Many Requests レート制限を超過 — 待機して再試行してください

agentaiapiautomationintegrationsmcprest