Token导航 LogoToken导航TokenDH.com
nmis MCP logo
AI代理未说明官方级别未说明来源级核验

nmis MCP

MCP Server

NMIS9 MCP服务器是一个基于Perl CGI脚本实现的模型上下文协议服务器,用于向AI助手提供NMIS监控数据。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
网络管理ClaudeAI代理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

kcsinclair

提供方

kcsinclair

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

NMIS9 MCP服务器

A. 模型上下文协议 NMIS9的(MCP)服务器,实现为Perl CGI脚本。它通过标准MCP工具接口将NMIS监控数据暴露给AI助手(Claude、ChatGPT等)。

概述

MCP服务器通过HTTP POST使用JSON-RPC 2.0,提供六种工具,让AI助手从实时NMIS9安装中查询节点状态、精确可达性、指标、事件和清单。指标以OTel启发的字段名返回,以与 mqtto观察 插件。

文件

文件安装到说明
nmis-mcp.plcgi-bin/nmis-mcp.plMCP服务器CGI脚本
nmis-mcp.nmisconf/nmis-mcp.nmis配置(API令牌)
t_nmis-mcp.pl_(仅测试)_帮助程序和数据结构的测试套件

安装

# Copy files into place
cp nmis-mcp.pl   /usr/local/nmis9/cgi-bin/nmis-mcp.pl
cp nmis-mcp.nmis /usr/local/nmis9/conf/nmis-mcp.nmis

# Set permissions
chmod 755 /usr/local/nmis9/cgi-bin/nmis-mcp.pl

# Edit the config and set a secure API token
vi /usr/local/nmis9/conf/nmis-mcp.nmis

CGI脚本由Apache提供 /cgi-nmis9/nmis-mcp.pl 使用现有的NMIS CGI配置。

认证

服务器支持三种身份验证方法:

方法标题/参数注释
自定义标题X-API-Token: 推荐。Apache通行证 X-* CGI的头部。
持有者代币Authorization: Bearer 标准,但要求 CGIPassAuth On 在Apache。
查询参数?token=仅用于快速测试。

所有方法都会检查令牌 api_tokenconf/nmis-mcp.nmis如果没有匹配的令牌,服务器将回退到NMIS cookie身份验证(用于基于浏览器的测试)。

在Claude Desktop中使用NMIS MCP

在MAC上,编辑文件~/库/应用程序支持/Claude/Claude_desktop_config json 例如/用户/keith/库/应用程序支持/Claude/Claude_desktop_config json

添加一个mcp-servers部分,或者只是为NMIS添加一个附加部分,在这里也显示mcp_DOCKER部分。

{
  "mcpServers": {
    "MCP_DOCKER": {
      "command": "docker",
      "args": [
        "mcp",
        "gateway",
        "run"
      ]
    },
    "nmis": {
      "command": "npx",
      "args": [
        "mcp-remote@latest",
        "https://home.packsin.com/cgi-nmis9/nmis-mcp.pl",
        "--header",
        "X-API-Token: ${AUTH_TOKEN}"
      ],
      "env": {
        "AUTH_TOKEN": "CHANGE-ME-your-token-from-nmis-mcp-nmis-file"
      }
    }
  },
  "preferences": {
    "comment": "POSSIBLY OTHER SETTINGS"
  }
}

然后向Claude询问一个或多个NMIS节点的事件状态 NMIS MCP Demo

MCP工具

nmis_list_nodes

列出所有处于基本状态的受监视节点。

参数:

退货: 数组 {name, group, host, nodeType, nodedown, health, reachability}

curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_list_nodes","arguments":{}}}'

nmis_get_node_status

获取特定节点的详细状态和健康指标。

参数: node (必填)

退货: {node, sysName, sysDescr, nodeType, nodeModel, group, host, nodedown, snmpdown, sysUpTime, health}

health 对象包含来自健康子概念(可达性、可用性、响应时间等)的OTel重命名度量。

curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_get_node_status","arguments":{"node":"myrouter"}}}'

nmis_get_最新消息

获取节点和库存概念的最新收集指标。

参数: node (必填), concept (必填)

概念: catchall, interface, device, Host_Storage, diskIOTable, env-temp, service, ping

退货: 具有OTel重命名度量的实例数组。对于 catchallping,结果按子概念(健康、tcp、laload、mib2ip、systemStats、Host_health)划分。对于其他概念,每个库存实例都是一个单独的条目。

curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_get_latest_metrics","arguments":{"node":"myrouter","concept":"interface"}}}'

nmis_list_事件

列出活动(非历史)NMIS事件和警报。

参数: node (可选,按节点名称筛选)

退货: 数组 {node, event, level, element, details, startdate, ack, escalate}

curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_list_events","arguments":{}}}'

nmis_list_库存

列出节点和概念的库存实例,显示索引、描述和可用数据字段。有助于在获取指标之前发现存在哪些实例。

参数: node (必填), concept (必填)

退货: 数组 {index, description, data_fields}

curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_list_inventory","arguments":{"node":"myrouter","concept":"Host_Storage"}}}'

nmis_get_node_pecise_status

获取节点的精确可达性状态,包括每协议(SNMP、WMI、ping)状态、故障转移状态、正常运行时间和可达性指标。使用 NMISNG::Node::precise_status() 方法。

参数: node (可选), group (可选)。所有节点都省略这两个。

退货: 数组 {node, group, host, overall, overall_status, snmp_enabled, snmp_status, wmi_enabled, wmi_status, ping_enabled, ping_status, failover_status, failover_ping_status, primary_ping_status, uptime_seconds, reachability, availability}

overall_status 字段是人类可读的标签: reachable, degraded,或 unreachable.

# All nodes
curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_get_node_precise_status","arguments":{}}}'

# Single node
curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_get_node_precise_status","arguments":{"node":"myrouter"}}}'

# By group
curl -s -X POST http://localhost/cgi-nmis9/nmis-mcp.pl \
  -H "X-API-Token: YOUR_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"nmis_get_node_precise_status","arguments":{"group":"Core"}}}'

这是我们酒店的地盘。

度量从NMIS本机名称重命名为受OpenTetry启发的语义约定。具有已知映射的字段将获得标准名称;未知字段前缀为 nmis..以结尾的字段 _raw 被过滤掉。

接口指标

NMIS字段OTel名称
ifInOctetssystem.network.io.receive
ifOutOctetssystem.network.io.transmit
ifInUcastPktssystem.network.packets.receive
ifOutUcastPktssystem.network.packets.transmit
ifInErrorssystem.network.errors.receive
ifOutErrorssystem.network.errors.transmit
ifInDiscardssystem.network.dropped.receive
ifOutDiscardssystem.network.dropped.transmit

健康指标

NMIS字段OTel名称
reachabilitynmis.node.reachability
availabilitynmis.node.availability
healthnmis.node.health
responsetimenmis.node.response_time_ms
lossnmis.node.packet_loss

系统统计信息

NMIS字段OTel名称
ssCpuRawUsersystem.cpu.time.user
ssCpuRawSystemsystem.cpu.time.system
ssCpuRawIdlesystem.cpu.time.idle
ssIORawSentsystem.disk.io.sent
ssIORawReceivedsystem.disk.io.received
ssRawInterruptssystem.cpu.interrupts
ssRawContextssystem.cpu.context_switches

平均负载

NMIS字段OTel名称
laLoad1system.cpu.load_average.1m
laLoad5system.cpu.load_average.5m

传输控制协议

NMIS字段OTel名称
tcpCurrEstabsystem.network.tcp.connections.established
tcpActiveOpenssystem.network.tcp.connections.opened.active
tcpPassiveOpenssystem.network.tcp.connections.opened.passive
tcpInSegssystem.network.tcp.segments.received
tcpOutSegssystem.network.tcp.segments.sent
tcpRetransSegssystem.network.tcp.segments.retransmitted

NMIS字段OTel名称
avg_ping_timenetwork.peer.rtt.avg_ms
max_ping_timenetwork.peer.rtt.max_ms
min_ping_timenetwork.peer.rtt.min_ms
ping_lossnetwork.peer.packet_loss

JSON-RPC 2.0协议

服务器通过无状态HTTP POST实现了MCP的一个子集:

方法目的
initialize协议握手,返回服务器信息和功能
notifications/initialized客户端确认(无响应)
tools/list使用JSON模式返回可用工具的列表
tools/call按名称和参数执行工具

错误代码

代码含义
-32700解析错误(JSON无效)
-32600无效请求(不是JSON-RPC 2.0)
-32601未找到方法
-32602参数无效(未知工具名称)
-32000需要身份验证
-32603内部错误(NMIS配置加载失败)

刀具级别错误返回为 isError: truetools/call 结果,而不是JSON-RPC错误。

运行测试

perl contrib/nmis-mcp/t_nmis-mcp.pl

测试套件(82个测试)包括:

  • _get_description 所有概念的现场映射
  • _apply_field_rename OTel命名和 _raw 过滤
  • _filter_derived 前缀过滤(08\_,16\_)
  • _filter_derived_flat 跨亚脑区变平
  • %CONCEPT_RENAME 映射
  • JSON-RPC 2.0请求验证
  • 刀具定义结构和所需参数
  • %FIELD_RENAME 地图覆盖率

需求

  • NMIS9与工作CGI(Apache服务 /cgi-nmis9/)
  • Perl模块: CGI, JSON::XS (两个标准NMIS9依赖项)
  • 无需额外的CPAN模块

许可证

此项目根据GNU通用公共许可证v3.0获得许可。请参阅 许可证 文件以获取详细信息。

______________________________________________________________________

建于 克劳德代码

目录标签

目录标签

网络管理ClaudeAI代理Perl本地部署监控数据服务AI助手集成JSON-RPC接口Perl脚本

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP