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_clientasync 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 |
レート制限を超過 — 待機して再試行してください |